stm32内部的iic怎么感觉不稳定啊,大家遇到过没

stm32内部的iic怎么感觉不稳定啊,大家遇到过没,有时候读出的正确有时候不正确... stm32内部的iic怎么感觉不稳定啊,大家遇到过没,有时候读出的正确有时候不正确 展开
 我来答
潜水大冠军
2018-09-27 · TA获得超过779个赞
知道答主
回答量:75
采纳率:100%
帮助的人:4.6万
展开全部
我觉得还好吧,加点针对性的的代码就可以了
1.比如为了防止错过Ack信号的读取,可以加入循环发送并读Ack的步骤,也可以直接关中断,如果有资源用DMA最好了,收发数据以及标志位的相关处理和判断都自动处理。
2.还有就是调试过程中,如果断点设在等待Ack前,会清除Ack信号
ADDR: Address sent (master mode)/matched (slave mode)
This bit is cleared by software reading SR1 register followed reading SR2
Ack信号会在读SR1和SR2后被清除。调试器会读取SR1和SR2,所以设断点在等待Ack前会导致程序检测不到Ack信号
mcs3000
推荐于2017-10-03 · TA获得超过3255个赞
知道小有建树答主
回答量:1045
采纳率:50%
帮助的人:917万
展开全部
这个是STM32的一个bug。
它只在特定的一小段时间内读外设的ACK信号,一旦错过了ack信号,后面所有的时序都乱了。
ST建议所有涉及I2C的程序都采用DMA方式
搞得我十分蛋疼,最后干脆直接用SPI的外设算了,速度还快。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式