5931|15

82

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

STR9能否用GPIO模拟I2C? [复制链接]

                                 请问,我想用STR91x接 eeprom,用p2.0和p2.1模拟I2C,请问可以吗?这两个GPIO怎么设置?在SDA读写时要不要切换输入输出?我开始初始化为GPIO_OutputAlt1,输出可以,但当需要出入时设成 GPIO_InputAlt1吗?
此帖出自stm32/stm8论坛

最新回复

                                 现在我用的是ST的i2c的标准应用例子,很奇怪,在I2C_GenerateStart(I2C0, ENABLE);后,中断能产生,但是没有START出来?I2C_GenerateSTOP(I2C0, ENABLE);后,stop能出来?各位大侠什么问题啊?   详情 回复 发表于 2008-3-6 10:53
点赞 关注
 

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

任何芯片都可以

                                  
此帖出自stm32/stm8论坛
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

是啊

                                 就是SDA处理的时候,我切换p2.1的输入输出时,不对!正确做法?
此帖出自stm32/stm8论坛
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

4
 

STR9可以用GPIO模拟I2C,GPIO口配置成开路输出即可

                                 STR9有两个硬件的I2C通道,为什么还要用GPIO模拟呢?
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 

to 香水城

STR9有两个硬件的I2C通道 ,没用起来不知道为什么!

可能初始化用法不对!有没有demo参考一下!


所以就想自己用IO口模拟!
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
    GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
    GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt1;

但是明明SDA被拉低,但读不对!

此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

6
 

晕~~~~

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

7
 

要加上拉电阻的~~~

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 

硬件的I2C通道没用好,做软件模拟就更难了

在ST的网站上有STR91xFA的固件函数库,那里面有使用I2C的例子:


STR91xFA firmware Library 文档:http://www.st.com/stonline/products/literature/um/12238.pdf

STR91xFA firmware Library 函数包(包括例子):http://www.st.com/stonline/products/support/micro/files/um0233.zip
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

9
 

有硬件何必用IO模拟???不明白~~~

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

10
 

to 香水城

                                 好的,先看看例子!谢谢!设备不够精良!
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

11
 

to 香水城

                                 请问, 在执行了 I2C_GenerateStart(I2C0, ENABLE);后是不是 void I2C0_IRQHandler(void)就能进去了?
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

12
 

问题的关键在于——GPIO定义后改动很麻烦

问题的关键在于——GPIO定义后改动很麻烦,
我也经常会遇到改动GPIO的配置的问题,后来发现在程序中试图多次改动是不明智的举动,经常会出问题。
也许是我对 STR9还没琢磨透,
不过倒是有解决办法,就是用两个端口并联做IO,一个做输出,一个做输入,这样就绝对不会有问题了。
关于上拉电阻,估计有点常识的人都会在做IIC设备的时候给加上,呵呵。
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

13
 

我在4楼已经说过,GPIO模拟I2C时GPIO口应该配置成开路输出

                                 这样不必改动随时GPIO口的配置。
此帖出自stm32/stm8论坛
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

14
 

支持软件模拟的I2C

我用过多款MCU的硬件I2C,每一款的硬件结构都各不相同,根本无法移植。
如果是用软件模拟出来的I2C,则可移植性会比较好,只要把底层的I/O读写函数换掉即可,非常方便。当然,I2C作为从机时还是硬件好。
此帖出自stm32/stm8论坛
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(初级)

15
 

还是用两个端口并联了好些

像5楼那样,将端口设置成输出,是读不到的,STR9要输入就必须给设置成输入模式,同时要上拉,这个就是我说的需要频繁切换的原因,还是用两个端口并联了好些。

 
 
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

16
 

用中断方式,start出不来?

现在我用的是ST的i2c的标准应用例子,很奇怪,在
I2C_GenerateStart(I2C0, ENABLE);后,中断能产生,但是没有START出来?

I2C_GenerateSTOP(I2C0, ENABLE);后,stop能出来?

各位大侠什么问题啊?
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表