[STM8] IIC模块真是摆设吗

[复制链接]
金融小数 发表于 2013-12-26 17:03 | 显示全部楼层
STM32的 I2C 这个冤案还没昭雪,STM8的 I2C 又要被冤枉吗?:dizzy:
seeker2010 发表于 2013-12-28 11:25 来自手机 | 显示全部楼层
有些人自己没搞懂,就到这里发牢骚,下结论,寇帽子,真不知这样的人入这一行能有多大出息,还是静下心来好好看资料,
tianli1980 发表于 2013-12-28 20:37 | 显示全部楼层
我在使用stm32的的固件操作iic总是死在ev5,哪位朋友给指点下使用固件库有哪些注意事项?
 楼主| 明月小厨 发表于 2014-1-2 14:32 | 显示全部楼层
本帖最后由 明月小厨 于 2014-1-2 14:33 编辑

IIC的确是很好的,但ST的IIC处理的效果真的很意外;如果是ST控制24C0X这样的,应该不会有什么问题,后面那个硬件反应的很快,而且布局时位置不会远,分布电容不会高,如果不是这样,ACK信号有可能出错,没检测到,一旦ACK信号过错了检测的时间段(很快),就意味着系统崩溃。当然多加些自己的程序,也许能恢复;也许不能;
出错后的情况就比较麻烦。最坏的情况是,必须重新上电,个别最最坏的情况下OPTION字节也会出错;

我现在没兴趣仔细排错。改用模拟IO;这个通讯的标准自己可以说了算。

如果ST能把ACK检测结果和其它标志分离开,系统就应该会好很多;
jjjkkk00 发表于 2014-1-2 16:04 | 显示全部楼层
吐槽一下,STM32F101x、STM32F100x的IIC确实很难用。
如果你是以上版本两块STM32单片机进行IIC主从:
正常时是没问题的。一旦出现BUSY错误导致的崩溃后,会让你死的很尴尬,虽然也有办法去解决这个问题,但过程很麻烦。
---------------------------
所以我的建议是:
一、不要拿自己的兄弟来玩主从。
二、换STM32F05x等等CM0的吧,它们的IIC已经是新的了。

评论

主要是从机要及时发出ACK信号,不然就麻烦了;如果从方是24CXX,应该很少出错的。  发表于 2014-2-7 23:59
 楼主| 明月小厨 发表于 2014-1-2 16:18 | 显示全部楼层
本帖最后由 明月小厨 于 2014-1-2 16:22 编辑

BUSY错误的特点就是SCL,也许是SDA线被莫名其妙拉低(永远);好象是从机拉的;重新改写OPTION后才恢复过来;
奇怪的是这个毛病是发生在STM8S;
LPCXXXXX系列的I2C好用,几乎不出错;(没遇到过)
 楼主| 明月小厨 发表于 2014-1-3 16:05 | 显示全部楼层
用IO端口自己模了,非常可靠。
 楼主| 明月小厨 发表于 2014-2-7 21:24 | 显示全部楼层
结论:
单个测试I2C,也许是可以的,但一批批使用I2C,不保险。当然自己模的肯定保险,直接无视ACK信号。
没有现成的,不过I2C的时序我很清楚,临时写个也可以用;

特别感谢boyie;因为他说的明白,可以I2C,但容易出事;自己模不会出事;
 楼主| 明月小厨 发表于 2014-2-7 21:25 | 显示全部楼层
我喜欢用I2C通讯,当然通讯的速度是不快的;主要是因为OC端口最安全;
香水橙 发表于 2014-2-7 22:28 | 显示全部楼层
这个IIC确实没问题,但用起来很麻烦,需要使用者非常了解IIC的协议才行,专家才能用好;因此可以说它的用户体验性不好!
 楼主| 明月小厨 发表于 2014-2-7 23:51 | 显示全部楼层
本帖最后由 明月小厨 于 2014-2-7 23:52 编辑

1.我是自己试过了,没下功夫我承认,没下功夫的原因是怕可靠性不行;毕竟我是长距离通讯,不是很近;
2.我用过其它芯片的IIC,都比较麻烦,但没出过差错;
3.我看到STM32F0;对IIC部分进行了全新的的设计;如果F1或其它的I2C很好,为何要重新设计?
4.我承认,如果距离近的情况,从机和主机有一方不是STM,有可能可以,但二个STM在一起的时候,我真怕出事;这个麻烦我承担不起
5.ACK信号在I2C模块中,被绑的太紧了,一旦出错,全部卡死。
6.I2C的协议本身并不复杂。:)
 楼主| 明月小厨 发表于 2014-2-7 23:55 | 显示全部楼层
ailing1314 发表于 2013-12-26 10:15
zet6的I2c调试成功,读写没问题,速度可达400k

我试过其它的I2C,速度最快在1MHZ以上,没事;
 楼主| 明月小厨 发表于 2014-2-7 23:56 | 显示全部楼层
jjjkkk00 发表于 2014-1-2 16:04
吐槽一下,STM32F101x、STM32F100x的IIC确实很难用。
如果你是以上版本两块STM32单片机进行IIC主从:
正常 ...

同感;多谢
yhn1973 发表于 2014-2-8 10:15 | 显示全部楼层
两个CPU通讯的话可以用SPI,比IIC可靠、距离远、效率高。SPI可以是推挽方式,而IIC只能是上拉方式,所以SPI比IIC传输距离远,抗干扰强,另外SPI从机的接收数据是双缓冲的,而IIC没缓冲,不用DMA下SPI主机发送2个字节的数据之间也可以做到没有延时。
zhangyang86 发表于 2014-2-11 18:59 | 显示全部楼层
多次测试发现IIC不是很稳定。。。所以我们用模拟。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
快速回复 在线客服 返回列表 返回顶部