標(biāo)題: I2C調(diào)試記錄(寄存器版本)_STM8L151 [打印本頁]

作者: fan52    時間: 2019-8-16 11:45
標(biāo)題: I2C調(diào)試記錄(寄存器版本)_STM8L151
最近調(diào)STM8的I2C簡直是爽呆呆,一直不成功,收不到從機寄存器的數(shù)據(jù),最后終于完成,究其原因可以總結(jié)為以下幾個方面:
1、I2C配置問題,一定要注意配置問題,特別的是I2C的時鐘,SCL時鐘的高低電平占空比,如果采用100kHz,占空比為1:1,若為400KHz,高低占空比為1:2,配置好之后直接應(yīng)答使能,方便后面通訊過程。注意配置好之后,程序運行到這里SCL和SDA就會置1,并且能用電壓表和示波器查看電壓和波形;一定要去ST官網(wǎng)下載資料查看寄存器的配置,否則容易出錯。
2、I2C讀數(shù)據(jù)通訊過程一定是包含這樣幾個過程:起始位,判斷CR1_SB,發(fā)送從機地址(7bit+1bit寫操作),判斷ADDR,讀SR3清寄存器,發(fā)數(shù)據(jù),判斷BTF是否成功發(fā)送,重復(fù)起始,再讀SB,讀操作,ADDR,SR3,判斷RXNE,保存接收數(shù)據(jù),最后結(jié)束位和重新應(yīng)答使能;適當(dāng)?shù)募觧op延遲,I2C來不及應(yīng)答,注意不要多操作也不要少操作,嚴(yán)格按照流程來,不然就會出錯。只要寫能成功,讀肯定沒問題。
3、通過I/O口實現(xiàn)模擬I2C通訊,若實在是I2C硬件功能調(diào)不通,可先用對應(yīng)的I/O模擬出I2C的通訊過程。編程也是按照I2C通訊協(xié)議一步步走,不要漏掉和多出什么,否則容易出錯。基本過程如下:1.配置系統(tǒng)時鐘(關(guān)鍵,時鐘決定了I2C通訊的速率);2.配置延時程序(這一點必須配置好,否者無法通訊成功);3.I2C初始化程序;4.起始信號程序;5.結(jié)束信號程序;6.接收從機應(yīng)答程序(給從機一個應(yīng)答位,保證接收到應(yīng)答才能進(jìn)行下一步操作);7.主機發(fā)送ack和Nack程序;8.檢測是否接收到應(yīng)答(對應(yīng)第6步,保證I2C數(shù)據(jù)傳輸正確,也可不要)9.寫一個字節(jié)程序;10.讀一個字節(jié)程序。
將所有的這些程序編寫好之后就能按照I2C通訊過程進(jìn)行調(diào)用和編寫,網(wǎng)上程序很多可以對著看,就不貼源代碼了。






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1