在I2C的波形中,經(jīng)常會(huì)發(fā)現(xiàn)有這樣的脈沖毛刺,會(huì)被認(rèn)為是干擾或者器件不正常。

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

ACK為第9個(gè)SCL上升沿時(shí)SDA低電平:

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

由于整個(gè)過程是連續(xù)的,且都會(huì)在SCL第9個(gè)Clock的低電平期間完成,產(chǎn)生的波形就會(huì)像一個(gè)毛刺被誤認(rèn)為干擾。實(shí)際上這個(gè)波形的出現(xiàn)不用在意,可以不采取任何措施。