模擬IIC匯流排多裝置掛載(12864OLED螢幕+GY30光照感測器)

東小東發表於2020-08-30

最終效果展示

OLED螢幕和GY30光照感測器(BH1750FVI)都連線在一個IIC(I2C)匯流排上,所以只需要接4根線即可。獲取到的光照強度可以在OLED上實時顯示並通過串列埠列印。IIC是IO模擬IIC,方便後續程式碼的移植到各個微控制器平臺。

 

硬體彙總

微控制器:STM32F103C8T6

OLED:0.96寸、128*64、驅動晶片是SSD1306(市場上常用)

光照強度感測器:GY-30,BH1750FVI主控即可

 

接線方法

IIC匯流排:SCL--PA1  、 SDA--PA0

串列埠:TX--PA9  、 RX--PA10

GY30與OLED供電均為3.3V

 

 

          

IIC匯流排的原理及特點

匯流排結構

 

l  匯流排只需要兩個資料線,分別為:

SCL:時鐘線,維護傳輸時鐘

SDA:資料線,傳輸的資料位

l  匯流排是板級匯流排,連線線一般不超過兩米

l  匯流排的資料線和時鐘線均需要上拉電阻(1~10K,一般為2.2k)

l  匯流排所有裝置均需共地

l  器件地址需要保證唯一性,不做任何裝置遮蔽的情況下,匯流排可掛載裝置為127個,因為器件地址預設為寫地址,讀地址需要將其最後一位變為1。

l  IIC器件地址羅列:

12864 OLED螢幕:0x78

GY30光照感測器:0x46 或者 0xB8

 

IIC匯流排的訊號有以下類別:開始訊號、資料訊號、應答訊號、停止訊號

 

空閒狀態:

當時鍾線和資料線都為高電平是,IIC匯流排上的所有從裝置都處於空閒狀態。

開始訊號:

當時鍾線和資料線都為高電平是,資料線從高電平到低電平跳變,則為開始訊號

 

資料訊號:

時鐘線高電平時,資料線持續為低電平,當時鍾線降為低電平後,IIC裝置將受到1位資料0;時鐘線為高電平時,資料線持續為高電平,當時鍾線降為低電平後,IIC裝置將收到1位資料1。在時鐘線高電平的過程中,資料線必須保持穩定,不能變化,否則的話將被誤認為是控制訊號。

應答訊號:

應答訊號一般是在8個資料位傳送完成後就需要產生一個

 

停止訊號:

當時鍾線為高電平、資料線為低電平是,資料線從低到高的跳變,則為停止訊號

 

 12864 OLED螢幕簡介

 

l  每個畫素點自發光、較LCD螢幕去掉了高亮背光燈,達到了更加省電的效果。

l  體積可更小,厚度可更薄

l  驅動晶片為SSD1306

l  解析度:128*64

l  電壓:3.3V/5V

l  通訊方式:IIC

驅動原理分析:

OLED,又稱為有機電鐳射顯示、有機發光半導體,其是128*64=8192個畫素點組成,每個畫素點可以自發光,螢幕可以不能動態改變顏色和灰度值(透明度),所以可以認為只是控制了8192個畫素點的亮和滅來顯示各種圖形或字元。

 

這裡兩個是字型檔宣告陣列:

const unsigned char F6x8[][6];
const unsigned char F8X16[];

可以看出字元ASCII碼字元有大和小兩個規格,分為:

6*8:1個字元佔用行6個畫素,列8個畫素

8*16:1個字元佔用行8個畫素,列16個畫素

另外漢字字型檔太大的原因,所以漢字基本都是需要用到的自己再新增進去,通常為16*16畫素。

GY-30光強感測器

 

 

l  其使用的主晶片為ROHM-BH1750FVI

l  供電3-5V

l  光強測量範圍:1-65535勒克斯(Lux或lx)

l  C感測器內建16bitAD轉換器

l  直接數字輸出,輸出帶有單位值,無需複雜計算

l  通訊方式IIC

 

接線說明

 

 

IIC地址引腳是確定確定模組地址的,模組有兩個地址可選,如果ADDR引腳接VCC則模組IIC地址為0xB8,如果ADDR引腳接GND則模組IIC地址為0x46

BH1750FVI手冊重要提取

通訊指令集合

測量模式說明

 

我們建議您使用H解析度模式。,H解析度模式下足夠長的測量時間(積分時間)能夠抑制一些噪聲(包括 50Hz/60Hz)。同時, H解析度模式的解析度在 1x下,適用於黑暗場合下(少於 10 1x), H解析度模式2同樣適用於黑暗場合下的檢測。

非同步復位和重置的命令"00000111"

1、    非同步重置電源供應時序基礎上將所有暫存器復位序列。請參考本頁的 "VCC和DVI電源供給時序圖供電序列。在DVI="L"時是電源掉電模式。

2、    重置命令重置命令僅對光強度資料暫存器起作用 (指令值為"0")。電源供應時序對其無影響。它的作用是原來清除之前的測量結果。這個命令不能在斷電模式 ,所以在輸入該指令前要設定為通電模式。

 

程式編寫,實戰

 

  • IIC程式設計使用IO模擬IIC,方便後期程式碼移植到其它微控制器平臺

  • OLED螢幕與GY30光照感測器(BH1750FVI)都在一條IIC匯流排上,資料線佔用IO資源只需要兩條

  • OLED實時顯示光強和串列埠實時輸出光強

  • 光強攜帶標準單位Lux

 

原文連結:https://www.cnblogs.com/dongxiaodong/p/13585644.html

 如需資料可加本人微信

 

微訊號:dongxiaodongwx

相關文章