第一節(jié)IIC基礎(chǔ)
IIC最重要的就是時序,主要如下:
1. 起始條件(Start Condition):
-I2C通信開始時,主設(shè)備將SDA從高電平切換到低電平時,SCL處于高電平狀態(tài)。
-起始條件至少需要持續(xù)一個SCL周期。
2. 地址傳輸(Address Transmission):
-主設(shè)備發(fā)送設(shè)備地址和讀寫位(R/W)位來選擇特定的從設(shè)備。
-地址傳輸是以一個起始位開始的,表示數(shù)據(jù)的開始。
-7位地址模式:主設(shè)備發(fā)送7位設(shè)備地址,最后一位是R/W位,指示讀?。≧=1)或?qū)懭耄╓=0)操作。
-10位地址模式:主設(shè)備先發(fā)送第一個字節(jié)的高6位,然后發(fā)送一個僅包含從設(shè)備地址的位(R/W位)的起始位,最后發(fā)送第一個字節(jié)的低位。
3. 應(yīng)答位(ACK/NACK):
-在每個字節(jié)的傳輸之后,接收設(shè)備需要提供一個應(yīng)答位(ACK或NACK)。
-主設(shè)備接收到每個字節(jié)的最后一個位后,會釋放SDA線,接收設(shè)備通過將SDA線拉低來提供應(yīng)答位。
-如果接收設(shè)備成功接收到數(shù)據(jù),則提供ACK(拉低SDA線),否則提供NACK(保持SDA線為高電平)。
4. 數(shù)據(jù)傳輸(Data Transmission):
-主設(shè)備發(fā)送數(shù)據(jù)字節(jié)給從設(shè)備,每個字節(jié)由8個數(shù)據(jù)位和一個應(yīng)答位組成。
-數(shù)據(jù)傳輸是以起始位開始的,并在每個SCL周期傳輸一個位。
-每個數(shù)據(jù)位都在SCL的上升沿或下降沿傳輸。
-數(shù)據(jù)傳輸?shù)淖詈笠粋€位由接收設(shè)備提供應(yīng)答位。
5. 停止條件(Stop Condition):
-主設(shè)備將SDA從低電平切換到高電平時,SCL處于高電平狀態(tài)。
-停止條件至少需要持續(xù)一個SCL周期。
-停止條件表示I2C通信的結(jié)束。
6. 時鐘速率(Clock Speed):
-I2C總線的時鐘速率由主設(shè)備控制。
-標準模式下,時鐘頻率為100 kHz;快速模式下,時鐘頻率為400 kHz。
-高速模式和超高速模式下,時鐘頻率更高。
第二節(jié) 硬件解讀
上圖就是物聯(lián)網(wǎng)開發(fā)板上面的OLED模塊的原理圖,哪里來的?為什么是這樣的?請大家打開改OLED的數(shù)據(jù)手冊就知道了,如下圖:
這個就是數(shù)據(jù)手冊提供的原理圖,是不是和藍橋杯物聯(lián)網(wǎng)開發(fā)板上面的原理圖一模一樣?當芯片廠家提供了參考電路設(shè)計圖,我們工程師只需要把它COPY就可以啦。
需要注意的是OLED模塊的供電引腳是A_3V3,如下:
而A_3V3引腳又是同過STM32L071KBU6來控制的,如下圖:
通過上圖看出來,當PB5為低電平時,三極管SI2301導通,A_3V3得電,OLED工作;反之,三極管SI2301不導通,A_3V3失電,OLED熄滅。
說完OLED的電源引腳,來看看OLED的IIC引腳,如下:
看得出來STM32與OLED引腳的關(guān)系:
STM32引腳 | OLED引腳 |
PA8 | I2C3_CS |
PB4 | I2C3_SDA |
第三節(jié) CubeMX配置
第一步:配置PB5為輸出模式,并初始化為低電平,使得OLED可以正常工作,不要忘記和6處一樣使用用戶標簽哦。
第二步:配置OLED的I2C3,如下圖:配置完后PA8和PB4會自動變成綠色。
第四節(jié) MDK代碼
第一步:找到比賽提供的代碼驅(qū)動,將oled.h和font.h粘貼到“項目名/Core/Inc”文件夾中,如下圖:
第二步:找到比賽提供的代碼驅(qū)動,將oled.c粘貼到“項目名/Core/Src”文件夾中,如下圖:
第三步:按照如下圖將oled.c文件添加到項目中,如下圖:注意oled.c文件的目錄,在“項目名/Core/Src”中,不要選到其他位置,否則編譯過程中會報錯。
第四步:添加之后會看見oled.c,如下圖:然后改點“Colse”點“Colse”,改點“OK”點“OK”。
第五步:可以看見項目欄的多了一個oled.c文件,如下圖:
第六步:編譯代碼,發(fā)現(xiàn)有一個錯誤,如下圖:原來是OLED_Write函數(shù)有問題。這個函數(shù)就是需要我們手寫的OLED的驅(qū)動。
第七步:編寫OLED_Write函數(shù),如下圖:
第八步:添加頭文件,如下圖:
第九步:編寫OLED相關(guān)代碼。如下圖:
第五節(jié) 實驗現(xiàn)象
注意:
1,下載程序的時候,請選擇A開發(fā)板。
現(xiàn)象:OLED第一行顯示”Hello”。
來源:撞上電子微信公眾號
版權(quán):東莞市東城墨竹公子電子工作室
日期:2023.06.07
-
OLED
+關(guān)注
關(guān)注
120文章
6286瀏覽量
228075 -
IIC
+關(guān)注
關(guān)注
11文章
306瀏覽量
39508
發(fā)布評論請先 登錄
雷曼光電榮獲第七屆“深圳工業(yè)大獎”企業(yè)獎
小馬智行第七代自動駕駛車輛廣深開跑
第七屆徐工國際客戶節(jié)隆重開幕
第七章 串口通信

評論