問題發(fā)生的背景
某客戶使用 STM32L452(作為 I2C 設(shè)備)開發(fā)光模塊產(chǎn)品,在測(cè)試時(shí)發(fā)現(xiàn),同一設(shè)備(硬件及軟件均未變動(dòng)),當(dāng)插入交換機(jī)時(shí),可正常通信,但是當(dāng)插入 FPGA 測(cè)試機(jī)后,I2C 通信不正常。通過出現(xiàn)問題時(shí)的 I2C 波形的對(duì)比,客戶初步認(rèn)為是第 9 個(gè)時(shí)鐘脈寬相對(duì)其他時(shí)鐘過窄導(dǎo)致的。詢問我們有沒有辦法配置這個(gè)寬度 ?
問題的分析
首先,關(guān)于第 9 個(gè)時(shí)鐘脈寬過窄的情況,建議客戶測(cè)量下其寬度,結(jié)合 I2C 規(guī)范,發(fā)現(xiàn)該窄脈寬仍然在 I2C 規(guī)定的范圍之內(nèi)。另外,對(duì)照 L452 的參考手冊(cè) I2C timming 章節(jié)的內(nèi)容,也建議客戶嘗試通過修改 Data setup time 和 Data hold time,客戶表示可以使得每個(gè)脈寬整體變長(zhǎng),但是對(duì)于通信的結(jié)果沒有明顯改善。
小結(jié)
I2C 的時(shí)鐘延展功能是可選功能,主機(jī)可以不支持該功能,但從機(jī)需要相應(yīng)的適配。未來 ST公司的 STM32 Cube 庫后續(xù)有計(jì)劃增加對(duì)時(shí)鐘延展功能的支持。