完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
不解释,ST的I2C建议用模拟。。。
|
|
|
|
只能说很常规的现象 之前看文章人家说建议 I2C建议使用中断+DMA的方式 而且中断的优先级还得最高,所以你可以尝试这样的方式 如果条件不允许 那就用模拟的吧
|
|
|
|
ST的IIC还是用模拟的比较可靠。
|
|
|
|
用模拟I2C吧,用硬件I2C太操心了。
STM32F103的I2C在操作时得注意,一个不注意就入坑了。比如读状态寄存器,不能立马读,得有一点延时。还有写的时候得按外设器件手册来,该加延时的地方要加延时。 |
|
|
|
希望楼主的描述再具体点,用什么样的代码驱动什么设备
如果是HAL库的话,普通的发送函数HAL_I2C_Master_Transmit,最后一个参数Timeout改大点,我驱动OLED屏的时候发现如果用10就会卡死,改成50就正常。如果是带DMA的,需要开启I2C的中断,否则发不出去 |
|
|
|
我不知道为什么各位都在说 STM32 的 I2C 要用软件模拟。
我这里有块 STM32F103 的板子,自己写的硬件 I2C 驱动程序,有中断没有 DMA,一点没有问题啊?每秒钟发和传感器芯片通信两次,不用看门狗也连续三天三夜没卡过。这个看来是 ST 库的毛病,丢掉库自己操作寄存器写一个驱动吧。 |
|
|
|
zhouxk 发表于 2018-8-14 07:58 我怎么就没碰到过这种问题?直接操作寄存器基本不会有问题啊? |
|
|
|
同样的程序,用ST的IIC EEPROM没有问题,用Atmel的相同容量就容易挂。 最后查看,是我的两次写操作之间没有加延时,按说如果有问题的话,都不能跑才对。但ST的能跑,不知道怎么回事。 |
|
|
|
zhouxk 发表于 2018-8-14 08:46 EEPROM 写操作是比较慢,连续两次写操作之间一定是要加延时的。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2105 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1941 浏览 3 评论
4537 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2084 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2599 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 22:03 , Processed in 1.027673 second(s), Total 87, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号