在I2C的波形中,經常會發現有這樣的脈沖毛刺,會被認為是干擾或者器件不正常。

看到這個波形時,可以先數一下出現在第幾個clock的位置,如果出現在第9個clock的低電平期間,就不是干擾或者器件異常導致。
在I2C的協議中,不管是地址匹配階段還是數據讀寫階段,第9個clock都是ACK和NACK位;
其中NACK為第9個SCL上升沿時SDA高電平:

ACK為第9個SCL上升沿時SDA低電平:

在地址匹配階段由從機來回復ACK,在數據收發階段由接受方來回復ACK。
那么I2C是雙向半雙工通信,SDA引腳通過主機和從機共同控制,ACK回復過程意味著發送方會在通過SDA發送了8個bit的數據后釋放SDA控制權給接受方,此時如果最后一個波形數據BIT0是0,那SDA會在SCL下降沿后從拉低狀態被釋放,由于上拉電阻的作用SDA就會恢復到高電平,但緊接著接受方開始數據建立開啟對SDA的控制權,拉低SDA引腳準備回復ACK,于是SDA信號被再次拉低。

由于整個過程是連續的,且都會在SCL第9個Clock的低電平期間完成,產生的波形就會像一個毛刺被誤認為干擾。實際上這個波形的出現不用在意,可以不采取任何措施。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6076文章
45495瀏覽量
670355 -
mcu
+關注
關注
147文章
18925瀏覽量
398148 -
嵌入式
+關注
關注
5198文章
20449瀏覽量
334045 -
I2C
+關注
關注
28文章
1556瀏覽量
131235 -
GD32
+關注
關注
7文章
432瀏覽量
27344
發布評論請先 登錄
相關推薦
熱點推薦
為什么當微控制器 (MCU) 用作 I2C 從機時,I2C_SCL在接收連續數據時會出現時鐘拉伸?
為什么當微控制器 (MCU) 用作 I2C 從機時,I2C_SCL在接收連續數據時會出現時鐘拉伸
發表于 08-21 06:32
為什么當微控制器(MCU)用作I2C從機時,I2C_SCL連續接收數據時會出現時鐘拉伸?
為什么當微控制器(MCU)用作I2C從機時,I2C_SCL連續接收數據時會出現時鐘拉伸?
發表于 08-26 08:05
MCU實現I2C通信
調試過程吧。 ?需要做的工作小結如下:1、MCU的I2C采用IO口模擬實現;2、MCU作為I2C主設備與定時芯片RX-8025SA建立通信;
發表于 11-01 16:24
?5次下載
I2C接口配置ES7243錄音芯片,MCU(STM32)收不到I2C ACK的問題
I2C接口配置ES7243錄音芯片,MCU(STM32)收不到I2C ACK的問題
發表于 12-08 16:36
?10次下載
硬件I2C與模擬I2C
硬件I2C對應芯片上的I2C外設,有相應I2C驅動電路,其所使用的I2C管腳也是專用的,因而效率要遠高于軟件模擬的I2C;一般也較為穩定,但
發表于 12-28 19:14
?82次下載
I2C通信沒反應怎么辦?
做硬件我們經常會遇到各種各樣的問題,一些通信接口也會出現,I2C自然也不例外。假如遇到I2C沒反應,那么可能會出現這種情況:“軟件工程師說,我軟件都已經配好了,但是就是讀寫不到數據,是
如何提高I2C調試效率?
一般情況下,我們想要調試這類 I2C 器件,都需要先找一塊主控 MCU 板卡,用杜邦線將 I2C 器件連接到板卡上,然后編寫 MCU 代碼,需包含
發表于 06-08 13:00
?2309次閱讀
I2C debug出現問題怎么解決
RK 平臺 I2C debug 1、I2C 通信失敗,出現 log: “timeout, ipd: 0x00, state: 1” 請檢查硬件上拉是否給電。 2、調用
為什么MCU I2C波形中會出現的脈沖毛刺?
評論