你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 硬件I2C bug解决方案

[复制链接]
ajane 发布时间:2015-1-5 16:49
古人说的一句,方法总比问题多,真的一点儿也不假

硬件有问题,怕啥,大神来支招,就算是先天性bug,一样搞定
最近看到一个硬件I2C bug解决的方案,特来与大家分享
大神从芯片底层分析了为啥会有这样的bug,真大神也
http://racede.me/talk_about_stm32_i2c_peripheral.html
后面给出的解决方案如下:
发送时:

开始,发送写地址,器件应答,清ADDR,一字节数据到写DR,硬件把DR数据写入到DSR,当DSR传输完毕时,DR也为空,BTF置位,这时我们再写一字节数据到DR,如此循环,最后一次BTF置位的时候发送P或者重起始(R)。这样操作,“硬件把DR数据写入到DSR”执行的时间是我们可以预料的,不存在上面提及的冲突问题。

接收时:

1、接收一个字节:按照ST给的方法。开始,发送读地址,器件应答,清ADDR前软件下拉SCL,写完NACK、STOP和DR后软件再释放SCL。RxNE时读DR。

2、接收两个字节:也是按照ST的方法。开始,发送读地址,器件应答,设置POS和ACK,下拉SCL,清ADDR,设置NACK,释放SCL。BTF时,软件拉低SCL,发送STOP,读DR,释放SCL,再读DR。

3、接收两个以上字节:开始,发送读地址,器件应答,直接清ADDR。BTF时,读DR一次。再BTF,再读DR一次,如此循环。倒数第二次BTF时设置NACK(注意DR和DSR各有一字节的数据),读DR一次。再等到最后一次BTF时,软件拉低SCL,发送STOP,读DR,释放SCL,再读DR。
具体的,还是靠大家自己去参悟啦
收藏 3 评论14 发布时间:2015-1-5 16:49

举报

14个回答
巅峰残狼 回答时间:2015-1-5 16:56:27
这种帖子含金量蛮高的,支持多发这种帖子
ajane 回答时间:2015-1-5 17:04:42
巅峰残狼 发表于 2015-1-5 16:56
这种帖子含金量蛮高的,支持多发这种帖子

斑斑见笑了
QianFan 回答时间:2015-1-5 18:59:43
之前调试的时候,就是多个字节发送的时候太麻烦了,用他的硬件发送的时候,看见勘误手册上写着,当发送一个字节的时候应该怎么办,两个字节的时候应该怎么办,实在是太麻烦了,后来直接使用模拟算了。
不考虑多主机的时候,模拟也是不错的选择。
ajane 回答时间:2015-1-5 19:02:27
QianFan 发表于 2015-1-5 18:59
之前调试的时候,就是多个字节发送的时候太麻烦了,用他的硬件发送的时候,看见勘误手册上写着,当发送一个 ...

确实啊,模拟的,可移植性很强。硬件I2C,想规避bug的话,确实很蛋疼,不知道ST怎么想的,哈哈
QianFan 回答时间:2015-1-5 19:04:45
ajane 发表于 2015-1-5 19:02
确实啊,模拟的,可移植性很强。硬件I2C,想规避bug的话,确实很蛋疼,不知道ST怎么想的,哈哈 ...

之前看过一个帖子,不知道是不是真的,说的是ST不愿意花钱买NXP的专利,于是自己做了这么一套。不知道是不是真的。
如果不想买专利的话,像ATMEL那样换一个名字不就好了
ajane 回答时间:2015-1-5 19:06:03
QianFan 发表于 2015-1-5 19:04
之前看过一个帖子,不知道是不是真的,说的是ST不愿意花钱买NXP的专利,于是自己做了这么一套。不知道是 ...

坑。。。还好有大神支招,哈哈
QianFan 回答时间:2015-1-5 19:07:54
ajane 发表于 2015-1-5 19:06
坑。。。还好有大神支招,哈哈

另起一个名字,就叫什么ST-LINK,哈哈哈
ajane 回答时间:2015-1-5 19:18:08
QianFan 发表于 2015-1-5 19:07
另起一个名字,就叫什么ST-LINK,哈哈哈

全都是Link,也凌乱了,哈哈
stary666 回答时间:2015-7-17 10:08:22
顶一下,,,,,,,,,,
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版