一、前言
最近想用 3861 做個(gè)有意思的東西,記錄一下開(kāi)發(fā)過(guò)程。今天使用 3861 的硬件 i2c 驅(qū)動(dòng) oled。
硬件平臺(tái):Bearpi-Nano
軟件SDK:潤(rùn)和sdk
二、搬一個(gè) OLED輪子
我之前寫過(guò)一篇基于 stm32cubemx 快速使用iic 接口 oled 的過(guò)程,里面有現(xiàn)成的 oled 接口,我們只要直接拿過(guò)來(lái)替換掉底層接口就行。
STM32CubeMX驅(qū)動(dòng)4腳OLED模塊 https://blog.csdn.net/qq_45396672/article/details/118272126
替換的接口位置如下位置:
三、Hi3861i2c 接口
SDK提供了兩層接口封裝,一層是芯片級(jí)的 driver 驅(qū)動(dòng),由原廠sdk提供:
另一層 open Harmony 級(jí)的驅(qū)動(dòng),是操作系統(tǒng)對(duì)原廠sdk的封裝,主要為了兼容不同芯片開(kāi)發(fā):
原廠的 driver 接口更加細(xì)致,系統(tǒng)層的driver其實(shí)就是對(duì)原廠的一層封裝,簡(jiǎn)單開(kāi)發(fā)可以直接使用系統(tǒng)提供的driver接口,復(fù)雜開(kāi)發(fā)則推薦研究一下原廠的接口,因?yàn)閟dk不是很完善,不符合需求的可以直接改原廠的sdk。
我們簡(jiǎn)單驅(qū)動(dòng)個(gè)i2c,使用系統(tǒng)封裝的接口:
unsigned int IoTI2cInit(unsigned int id, unsigned int baudrate); unsigned int IoTI2cDeinit(unsigned int id); unsigned int IoTI2cWrite(unsigned int id, unsigned short deviceAddr, const unsigned char *data, unsigned int dataLen); unsigned int IoTI2cRead(unsigned int id, unsigned short deviceAddr, unsigned char *data, unsigned int dataLen); unsigned int IoTI2cSetBaudrate(unsigned int id, unsigned int baudrate); |
用上面的讀寫接口替換掉 oled 輪子里面的 i2c 接口
四、使用驅(qū)動(dòng)代碼
在主函數(shù)中創(chuàng)建一個(gè)線程,調(diào)用 i2c、oled初始化接口,將初始化代碼注冊(cè)到系統(tǒng)運(yùn)行回調(diào)中
#include #include "stdio.h" #include "ohos_init.h" #include "cmsis_os2.h" #include "hi_io.h" #include "hi_i2c.h" #include "iot_errno.h" #include "iot_i2c.h" #include "iot_gpio.h" #define OLED_I2C_BAUDRATE 400000 static void iot_i2c_init(void) { IoTGpioInit(HI_IO_NAME_GPIO_0); IoTGpioInit(HI_IO_NAME_GPIO_1); //將引腳功能設(shè)置為 I2C 引腳 hi_io_set_func(HI_IO_NAME_GPIO_0, HI_IO_FUNC_GPIO_0_I2C1_SDA); hi_io_set_func(HI_IO_NAME_GPIO_1, HI_IO_FUNC_GPIO_1_I2C1_SCL); //初始化 I2C0 uint32_t ret = IoTI2cInit(HI_I2C_IDX_1, OLED_I2C_BAUDRATE); if (ret != IOT_SUCCESS) { printf("[OLED_TASK] Init i2c Fail. ret = %d ", ret); } printf("[OLED_TASK] Init i2c succ. "); } void oled_i2c_init(void) { iot_i2c_init(); OLED_Init(); OLED_Clear(); } void *oled_demo(const char *arg) { (void)arg; char i = 0; char dat[10] = { 0 }; oled_i2c_init(); while (1) { printf("[OLED_TASK] i = %d! ", i); OLED_ShowNum(10, 10, i++, 1, 8); osDelay(100); } } void oled_demo_init(void) { osThreadAttr_t attr; attr.name = "OLED_Task"; attr.attr_bits = 0U; attr.cb_mem = NULL; attr.cb_size = 0U; attr.stack_mem = NULL; attr.stack_size = 2048; attr.priority = 26; if (osThreadNew((osThreadFunc_t)oled_demo, NULL, &attr) == NULL) { printf("[OLED_TASK] Falied to create OLED_TASK! "); } } SYS_RUN(oled_demo_init); |
審核編輯:湯梓紅
-
OLED
+關(guān)注
關(guān)注
119文章
6221瀏覽量
224887 -
接口
+關(guān)注
關(guān)注
33文章
8706瀏覽量
151971 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6898瀏覽量
123783 -
SDK
+關(guān)注
關(guān)注
3文章
1045瀏覽量
46300 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
284瀏覽量
15028 -
Hi3861
+關(guān)注
關(guān)注
1文章
62瀏覽量
6616
原文標(biāo)題:五、調(diào)試現(xiàn)象
文章出處:【微信號(hào):嵌入式Share,微信公眾號(hào):嵌入式Share】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Hi3861開(kāi)發(fā)板介紹
第6節(jié) Hi3861 OLED屏幕驅(qū)動(dòng) 基于鴻蒙系統(tǒng)
【HarmonyOS HiSpark Wi-Fi IoT套件】I2C驅(qū)動(dòng) Hi3861 驅(qū)動(dòng)OLED屏幕顯示
【HarmonyOS HiSpark Wi-Fi IoT 套件試用OLED驅(qū)動(dòng)】oled屏的使用和oled驅(qū)動(dòng)測(cè)試
【HarmonyOS_Hi3861學(xué)習(xí)筆記】【連載】--點(diǎn)亮oled
鴻蒙硬件HI3861開(kāi)發(fā)環(huán)境搭建 精選資料分享
OpenHarmony輕量系統(tǒng)開(kāi)發(fā)【7】驅(qū)動(dòng)之I2C顯示OLED屏幕
一套支持中文C語(yǔ)言編程的鴻蒙Hi3861智能硬件開(kāi)發(fā)套件
HarmonyOS Hi3861 WiFi操作 熱點(diǎn)鏈接
![HarmonyOS <b class='flag-5'>Hi3861</b> WiFi操作 熱點(diǎn)鏈接](https://file.elecfans.com/web1/M00/CB/4B/o4YBAF-P8viAByzBAAFBD72r0J0802.png)
Hi3861其他驅(qū)動(dòng)的開(kāi)發(fā)示例
![<b class='flag-5'>Hi3861</b>其他<b class='flag-5'>驅(qū)動(dòng)</b>的開(kāi)發(fā)示例](https://file.elecfans.com/web2/M00/33/98/poYBAGIfQeKADvjTAAGxEyfB5EM050.png)
基于鴻蒙系統(tǒng)+Hi3861的WiFi小車開(kāi)發(fā)
![基于鴻蒙系統(tǒng)+<b class='flag-5'>Hi3861</b>的WiFi小車開(kāi)發(fā)](https://file.elecfans.com/web2/M00/33/A7/poYBAGIgHKeADywGAAKAsdAsO78520.png)
Hi3861編譯燒錄更快捷
Hi3861移植LVGL教程
![<b class='flag-5'>Hi3861</b>移植LVGL教程](https://file1.elecfans.com/web2/M00/82/DE/wKgaomRlfmCACm_OAAAbgpDRobE013.png)
鴻蒙OpenHarmony【LED外設(shè)控制】 (基于Hi3861開(kāi)發(fā)板)
![鴻蒙OpenHarmony【LED外設(shè)控制】 (基于<b class='flag-5'>Hi3861</b>開(kāi)發(fā)板)](https://file1.elecfans.com/web2/M00/C5/CD/wKgZomYCdwyAIFf5AAB_7E1pFms943.jpg)
評(píng)論