久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 瑞薩RA0單片機連載之―面向對象之I2C驅動OLED

瑞薩RA0單片機連載之―面向對象之I2C驅動OLED

作者:lulugl 時間:2025-04-18 來源:EEPW 收藏


本文引用地址:http://cqxgywz.com/article/202504/469575.htm

1   前言

OLED是非常常用的顯示設備,可以由4線、3線的spi驅動,也可以使用2線的IIC來驅動。百問網提供了spi_OLED的驅動例程,這次使用IIC來驅動,并且使用基于面向對象的編程來實現。

2   實現步聚

1.配置IIC,打開RASC后,在棧中增加rau_master_I2C,并設置channel為0b20即通道2,選擇SCL為P112與SDA為P110。

1744987216768564.png

【注】我原來設置了為通道0或者通道1,但是都與UART或的外接晶振的IO有沖突,所以只能選擇這個通道但是他還是與tx、LED有沖突,如果自己的設計的話還需要考慮到IO的沖突問題。

2.生成代碼后,我拷貝drv_oled.h/c 以及driv_spi.h到工程之中。

image.png

1744987256301838.png

3.在原來的OLED工程之中,是使用spi來驅動的,同時原來的RA5他的內存與頻率相比RA0要高很多,需要進行很多的更改。首先添加回調函數,回調函數中判斷接收狀態,并更新:

image.png

image.png

4.接著修改發送等待超時函數,在我們向i2c 總線發送數據結事后,我們需要用這個函數來判斷是否發送結束的標志位。

image.png

5.修改向ssd1306 寫入一個寄存器的功能函數,在這個函數中,我們要組裝一個buff 用于向i2c 總線寫入數據的,由于向ssd1306 寫入寄存器,第一個字節為0x00,所以組裝為[0x00, cmd]。

image.png

image.png

6.組裝向ssd1306 發送一整個buff 的命令:

image.png

【注】這里原來使用malloc 進行了重新的內存申請,但是由于這個MCU 的內存有限,我做了申請,好象一直不成功,先寫成這樣,其實buf 中的0 位是被清除掉了的,所以會有點問題,在后面我將重新這個驅動,這里先實現基本功能。

7.編寫測試函數如下:

image.png

image.png

image.png

其中第一段是向整個屏寫入了0x00即全屏為黑色,第二段是寫入oxFF 即全白。這樣就實現了清屏-》全亮的效果。

3   總結

在面向對象的編程中,對OLED 進行的封裝,在使用的過程中,可以實現少量的低層代碼的修改即中實現模塊化的功能實現。下一步,我將補全字符、圖片的功能。

(本文來源于《EEPW》



評論


相關推薦

技術專區

關閉