找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2508|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

I2C調(diào)試記錄(寄存器版本)_STM8L151

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:600674 發(fā)表于 2019-8-16 11:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近調(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)答才能進行下一步操作);7.主機發(fā)送ack和Nack程序;8.檢測是否接收到應(yīng)答(對應(yīng)第6步,保證I2C數(shù)據(jù)傳輸正確,也可不要)9.寫一個字節(jié)程序;10.讀一個字節(jié)程序。
將所有的這些程序編寫好之后就能按照I2C通訊過程進行調(diào)用和編寫,網(wǎng)上程序很多可以對著看,就不貼源代碼了。

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表