关于stm32的iic为什么不稳定的讨论

关于stm32的iic为什么不稳定的讨论

stm32的iic不稳定这种说法源于旧版的函数库,由于iic本身是飞利浦发明的,飞利浦拆分出来的nxp具有绝对的专利优势,为了规避这种专利问题,st对iic通讯有别出一格的设计,但旧版的函数库无法很好地处理这种设计,导致多中断的时候容易出问题。但新版的hal库基本解决这种问题,可以放心使用。 没有不稳定这个说法,只是硬件I2C通信困难,因为STM32没有I2C协议的专利,一些技术细节与官方的I2C协议有所出入,因此做得很难用的样子,以防被对手控告侵权。这个硬件的IIC是没有问题的,只是ST的标准库去操作IIC有bug导致不稳定 原来使用过硬件的IIC,非常不稳定,而且读取数据也有乱码,网上反馈是硬件的bug 这个是STM32的一bai个bug。它只在特定的一小段时间内读外设的ACK信号,一旦错过了ack信号,后面所有的shu时序都乱了。ST建议所有涉及I2C的程序都采用DMA方式。加点针对性的bai的代码就可以了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 SR2Ack信号会在读SR1和SR2后被清除。调试器会读取SR1和SR2,所以设断点在等待Ack前会导致程序检测不到Ack信号 一:不要用库,每一段START->ACK尽量写短,写简洁!二:降低I2C速度!我测试在10KHZ时很稳定,20KHZ非常少,不稳定,50KHZ几乎不稳定

REF

https://zhuanlan.zhihu.com/p/338377414https://www.icxbk.com/ask/detail/14916.htmlhttps://blog.csdn.net/whw8007/article/details/9162779

相关推荐

山东童装批发
365bet体育存款

山东童装批发

📅 08-04 👁️ 5577
酒吧5个骰子玩法及讲解
365现在还能安全提款吗

酒吧5个骰子玩法及讲解

📅 07-02 👁️ 1686
在柚宝宝里进行私信的简单操作
Bet体育365怎么提款

在柚宝宝里进行私信的简单操作

📅 07-04 👁️ 3099
尝 古文中的意思
365现在还能安全提款吗

尝 古文中的意思

📅 09-01 👁️ 9020
苹果手机mac地址在哪里查看?如何快速找到?
365现在还能安全提款吗

苹果手机mac地址在哪里查看?如何快速找到?

📅 07-23 👁️ 9408
48岁马伊琍,成了他“高攀不起”的存在,文章恐怕未曾预见
攀枝花棋牌最新版本/官方app/204版/免费版/正宗攀麻将
365现在还能安全提款吗

攀枝花棋牌最新版本/官方app/204版/免费版/正宗攀麻将

📅 08-07 👁️ 7059
改善客户体验的 8 种方法
365现在还能安全提款吗

改善客户体验的 8 种方法

📅 07-03 👁️ 8861
元素分析仪可以用来干什么?有哪些类型?如何选择元素分析仪?
365现在还能安全提款吗

元素分析仪可以用来干什么?有哪些类型?如何选择元素分析仪?

📅 06-30 👁️ 5652