STM32 硬件IIC使用问题

qq_32759975 2015-11-12 05:05:23
之前做开发,碰到STM32系列硬件IIC老死在while循环里,后因为项目时间紧,换成模拟IIC了,谁碰到过这个问题,怎么解决
...全文
1118 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_32441841 2016-09-13
  • 打赏
  • 举报
回复
但是大哥,问题就是硬件iic卡死在写字节的死循环里啊!
qq_32759975 2015-12-02
  • 打赏
  • 举报
回复
引用 15 楼 guyuguang8628391 的回复:
到底如何解决的,说一下啊。
我现在手上么有开发板,您用IIC+DMA方式试试,这方法我么有时间试,楼上说他试了,么问题; 如果不行,你在用IIC+DMA+中断优先级最高试试,如果还有问题; 可以用ST公司后来出了一个专门针对IIC的库,你在网上搜,网上有,可以试试 3种方法要是都不行,你就老实用硬件IIC
图灵转世 2015-12-01
  • 打赏
  • 举报
回复
到底如何解决的,说一下啊。
Wizard0911 2015-12-01
  • 打赏
  • 举报
回复
引用 12 楼 qq_32759975 的回复:
[quote=引用 9 楼 Wizard0911 的回复:] 我的现在用的stm32f103rdt6,如果EEPROM或OLED的I2C接口一直busy,进入死循环,把I2C重新配置成IO口,再配制成I2C,就可以好了;但是我现在用的温湿度传感器就好不了,只能断电重启。。。
您可以试试DMA加IIC中断配置为最高级试试,或者用模拟IIC,产品中老出现这种故障不合适,我看网上说的DMA加中断IIC最高可以成功,具体么试,模拟IIC很稳定,您可以选种方法试试[/quote] 用的就是DMA加IIC。。。。。出问题也就是开始程序没调好时会有,现在基本不会出现IIC死的现象
qq_32759975 2015-11-30
  • 打赏
  • 举报
回复
引用 9 楼 Wizard0911 的回复:
我的现在用的stm32f103rdt6,如果EEPROM或OLED的I2C接口一直busy,进入死循环,把I2C重新配置成IO口,再配制成I2C,就可以好了;但是我现在用的温湿度传感器就好不了,只能断电重启。。。
您可以试试DMA加IIC中断配置为最高级试试,或者用模拟IIC,产品中老出现这种故障不合适,我看网上说的DMA加中断IIC最高可以成功,具体么试,模拟IIC很稳定,您可以选种方法试试
qq_32759975 2015-11-30
  • 打赏
  • 举报
回复
引用 11 楼 cumtgao 的回复:
你可以去到STM32的库里看它硬件IIC调用的函数,总线的判断全是死循环,好歹用个超时退出机制啊
说的是呀,所以老死呗
wesley 2015-11-28
  • 打赏
  • 举报
回复
你可以去到STM32的库里看它硬件IIC调用的函数,总线的判断全是死循环,好歹用个超时退出机制啊
wesley 2015-11-28
  • 打赏
  • 举报
回复
重要的事说三遍:不要用STM32的硬件IIC,不要用STM32的硬件IIC,不要用STM32的硬件IIC!
Wizard0911 2015-11-26
  • 打赏
  • 举报
回复
我的现在用的stm32f103rdt6,如果EEPROM或OLED的I2C接口一直busy,进入死循环,把I2C重新配置成IO口,再配制成I2C,就可以好了;但是我现在用的温湿度传感器就好不了,只能断电重启。。。
zhujinqiang 2015-11-24
  • 打赏
  • 举报
回复
以前见过说硬件IIC有BUG改用模拟IIC的帖子。 记得是库函数关于I2C部分有问题,很多人都是自己模拟I2C来实现的。 后来不知道ST公司有没有改进了。
超级码栗 2015-11-23
  • 打赏
  • 举报
回复
都说有Bug,不试试怎么知道。我用的DMA,三个STM32之间使用IIC通信,一主二从。没问题。 我觉得ST给的数据手册写的很好,图文并茂。
dceacho 2015-11-14
  • 打赏
  • 举报
回复
4#说的对,以前见过一个帖子说的是STM IIC BUG的
qq_32759975 2015-11-13
  • 打赏
  • 举报
回复
用示波器量过,发生锁死现象,将中断配置成最高,DMA方式改天试试,网上还有一个说是STM32发的关于硬件IIC的新库文件,具体下载了还么试
cp1149637566 2015-11-13
  • 打赏
  • 举报
回复
只听说过32的硬件IIC是硬伤,具体原因不大了解
xinyipcb 2015-11-13
  • 打赏
  • 举报
回复
用示波器,直接连出来,然后看信号啊,其他也没有什么好办法。
pathletboy 2015-11-12
  • 打赏
  • 举报
回复
用DMA或者把IIC中断优先级设置为最高。
图灵转世 2015-11-12
  • 打赏
  • 举报
回复
用示波器量。

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧