打印
[STM32F1]

ST分享大集结+硬件IIC建议

[复制链接]
1179|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kelly1989|  楼主 | 2017-11-28 14:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       前段时间,我们公司做了一项目,用到了STM32 的IIC功能,主要是和eeprom--AT24C02通讯。开始时,领导要求使用硬件IIC因为这样的话,效率是比较高的,而且对其它进程的影响较少。于是就写了一个硬件IIC的程序,样品实验时,都是好的,通讯没问题,就这样我们放心的生产了。批量的时候,发现程序不能正常运行,去生成检查发现程序一直卡死在IIC读取数据阶段。经过多种实验,换eeprom,换MCU,换底板等等,有的可以正常通讯,大部分不行。程序会卡死,因为单片机总是检测到总线是忙碌状态,所以不会发送起始信号。
       于是,我们就换成了软件IIC,而是使用软件IIC的时候必须注意,在等待回应时加上延时,时间一到跳出等待。这样避免程序死循环。附上一个例程,供大家学习。 IIC实验.zip (58.46 KB)
沙发
huangcunxiake| | 2017-11-28 14:29 | 只看该作者
硬件的总是用不好,不知道怎么回事,看看楼主的东西怎么样

使用特权

评论回复
板凳
kelly1989|  楼主 | 2017-11-28 14:37 | 只看该作者
huangcunxiake 发表于 2017-11-28 14:29
硬件的总是用不好,不知道怎么回事,看看楼主的东西怎么样

我们使用硬件也发生了问题,所以选择使用软件

使用特权

评论回复
地板
huangcunxiake| | 2017-11-28 14:47 | 只看该作者
kelly1989 发表于 2017-11-28 14:37
我们使用硬件也发生了问题,所以选择使用软件

是的,我也是经常用软件模拟时序。

使用特权

评论回复
5
tomzbj| | 2017-11-28 16:08 | 只看该作者
stm32f10x的i2c bug有年头了吧... 从来都只用软件模拟的
也有好处, 画原理图、做板时不用考虑分配i2c引脚了,随便给它两个gpio就行。

不过24c02这样的小容量eeprom,如果读写不是很频繁的话, 完全可以用flash来模拟。ST有官方的例程,很好用, 我在产品上用了,没啥问题。

使用特权

评论回复
6
tongwei| | 2017-11-28 16:11 | 只看该作者
只能说硬件IIC没用好,并不是不好用,一开始我也觉得st公司太不靠谱,整的这么个烂外设,后来等到问题解决了,觉得还是自己蠢

使用特权

评论回复
7
kelly1989|  楼主 | 2017-11-28 16:30 | 只看该作者
tongwei 发表于 2017-11-28 16:11
只能说硬件IIC没用好,并不是不好用,一开始我也觉得st公司太不靠谱,整的这么个烂外设,后来等到问题解决 ...

兄弟可否讲解一下如何使用硬件IIC的,代码可否分享一下

使用特权

评论回复
8
mmhhkk123| | 2017-11-28 16:59 | 只看该作者
tongwei 发表于 2017-11-28 16:11
只能说硬件IIC没用好,并不是不好用,一开始我也觉得st公司太不靠谱,整的这么个烂外设,后来等到问题解决 ...

请问你是用了gpio模拟还是禁止中断的方式?如果是是这两种方式,实际上还是没有解决问题

使用特权

评论回复
9
tongwei| | 2018-1-16 10:39 | 只看该作者
mmhhkk123 发表于 2017-11-28 16:59
请问你是用了gpio模拟还是禁止中断的方式?如果是是这两种方式,实际上还是没有解决问题 ...

禁止中断是啥方式,我是用的硬件I2C,用的官方的库,不过修改了不少

使用特权

评论回复
10
zhuotuzi| | 2018-1-22 19:28 | 只看该作者
tongwei 发表于 2017-11-28 16:11
只能说硬件IIC没用好,并不是不好用,一开始我也觉得st公司太不靠谱,整的这么个烂外设,后来等到问题解决 ...

请大侠传道受业解惑

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

1108

帖子

3

粉丝