新聞中心

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

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

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


        本文引用地址:http://www.104case.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》



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 莒南县| 徐水县| 萨嘎县| 岳普湖县| 习水县| 景德镇市| 阿克| 垦利县| 丹巴县| 澎湖县| 友谊县| 安远县| 云霄县| 永顺县| 施秉县| 石门县| 云梦县| 龙口市| 卢湾区| 平乡县| 永昌县| 双牌县| 奉贤区| 金塔县| 东兴市| 新巴尔虎右旗| 开封市| 侯马市| 河池市| 乌兰浩特市| 高阳县| 桃江县| 黔东| 乐清市| 昌宁县| 喀什市| 庄河市| 武陟县| 桐柏县| 沈丘县| 广宁县|