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