本文主要介紹使用STM32芯片 IO模擬方式調試IIC接口LKT加密芯片時需要注意的問題點。可能有人會說我之前操作過XXXX IIC接口的芯片,IIC接口沒什么好介紹的。其實不然如果IO模擬的IIC程序寫的不好,有可能造成程序對個別芯片兼容性不好的問題,或者稍微調整通訊速度后通訊就變的不穩定等現象出現。 基礎介紹- IO口開漏輸出: 下圖為開漏模式的結構圖,輸出寄存器上的‘0’將N-MOS激活 P-MOS截止,此時I/O引腳相當于與VSS連接。輸出寄存器上的‘1’使P-MOS和N-MOS截止,此時I/O處于高阻態狀態。所以開漏模式下要輸出高電平時需要加入上拉電阻。 ![]() 調試注意事項: STM32操作LKT加密芯片的SDA、SCL兩條線一定要設置成開漏輸出,切記不要使用推挽輸出。 STM32在發送和讀取數據時,SDA數據線引腳不需要進行輸入輸出設置,直接讀取端口寄存器狀態即可。 STM32在讀取數據時,當SCL拉高后不要做簡單固定延時之后就進行后續操作,盡量做一個拉高的超時判斷(因為存在總線被從器件占用的可能性,這里可以做一個超時判斷如果SCL超時還未拉高則認為是總線異常)這樣做也是符合硬件IIC的操作邏輯更符合時序規則。 |
文中提到的經驗,是可以推廣到stm32之外的CPU上嗎? |
寫的挺好,其實很多人調試IIC接口都不太關注開漏設置。我敢說肯定很多人都不知道為什么必須加上拉。其實IIC協議里寫的很清楚,正式因為開漏設置和上拉電阻加入,才使得IIC總線允許掛載多個從器件。 |
不錯不錯 收藏了 |
文章對STM32在發送和讀取數據時的調試注意事項介紹得言簡易懂,挺好 |
他們家的I2C接口是標準的IIC接口嗎? |
Io模擬iic的通訊速率能達到多塊速度呢? |
開漏意思是漏極開路,是這個引腳只接了MOS管的漏極,沒有其他;推挽是指既能拉到GND,也能推到VCC。 |
什么是標準I2C通訊協議? |
I2C是Inter-Integrated Circuit的簡稱,讀作:I-squared-C。由飛利浦公司于1980年代提出,為了讓主板、嵌入式系統或手機用以連接低速周邊外部設備而發展。 |
LKT加密芯片,有誰用過嗎?可以推薦一下具體型號嗎? |
支持IIC的有很多種,具體看你用于什么行業還有成本問題 |
那是否意味著只掛載1個器件的話,不上拉也行吧? |
介紹太簡單了,時序上沒有特殊性? |
STM32的IO模擬IIC通訊速率一般能達到多快那,有沒有測試過? |
文章描述的IO模擬穩定問題其實是IIC協議的"Clock Stretching"特性。使用開漏和超時判斷就是為了解決“Clock Stretching"問題。 |
io模擬ⅰⅰc和硬件ⅰⅰc有什么區別? |
看來SDA、SCL兩條線對調試I2C接口起了很關鍵性作用 |
文章技術性真強,mark |