a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 瑞薩RA0單片機連載之―面向?qū)ο笾甀2C驅(qū)動OLED

瑞薩RA0單片機連載之―面向?qū)ο笾甀2C驅(qū)動OLED

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


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

1   前言

OLED是非常常用的顯示設(shè)備,可以由4線、3線的spi驅(qū)動,也可以使用2線的IIC來驅(qū)動。百問網(wǎng)提供了spi_OLED的驅(qū)動例程,這次使用IIC來驅(qū)動,并且使用基于面向?qū)ο蟮木幊虂韺崿F(xiàn)。

2   實現(xiàn)步聚

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

1744987216768564.png

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

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

image.png

1744987256301838.png

3.在原來的OLED工程之中,是使用spi來驅(qū)動的,同時原來的RA5他的內(nèi)存與頻率相比RA0要高很多,需要進(jìn)行很多的更改。首先添加回調(diào)函數(shù),回調(diào)函數(shù)中判斷接收狀態(tài),并更新:

image.png

image.png

4.接著修改發(fā)送等待超時函數(shù),在我們向i2c 總線發(fā)送數(shù)據(jù)結(jié)事后,我們需要用這個函數(shù)來判斷是否發(fā)送結(jié)束的標(biāo)志位。

image.png

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

image.png

image.png

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

image.png

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

7.編寫測試函數(shù)如下:

image.png

image.png

image.png

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

3   總結(jié)

在面向?qū)ο蟮木幊讨校瑢LED 進(jìn)行的封裝,在使用的過程中,可以實現(xiàn)少量的低層代碼的修改即中實現(xiàn)模塊化的功能實現(xiàn)。下一步,我將補全字符、圖片的功能。

(本文來源于《EEPW》



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉