`
本来是元旦期间就要更新的,结果懒了一下,出去玩了。就拖到现在才完成oled部分内容。
根据在这块板子上用harmony写oled程序比用stm32驱动还要方便点。主要是从例程中移植过来的。官方i2c驱动例程的路径为vendor/hisi/hi3861/hi3861/app/demo/src/app_demo_i2c.c 参考了这个文件里面的i2c驱动部分。移植了官网资料里面提供的oled驱动。具体路径如下:HiSpark_WiFi_IoT智能开发套件_原理图硬件资料数据手册HiSpark_WiFi_IoT_OLED_VER.AcSRC 。
查看原理图,可以看到,oled用的i2c接口,具体为i2c0_SDA--GPIO13、i2c0_SCL--GPIO14。需要在app_io_init.c中初始化i2c接口,才可以使用i2c部分。
[attach]990550[/attach]
i2c初始化
- /* I2C MUX: */
- #ifdef CONFIG_I2C_SUPPORT
- /* I2C IO复用也可以选择3/4; 9/10,根据产品设计选择 */
- hi_io_set_func(HI_IO_NAME_GPIO_13, HI_IO_FUNC_GPIO_13_I2C0_SDA);
- hi_io_set_func(HI_IO_NAME_GPIO_14, HI_IO_FUNC_GPIO_14_I2C0_SCL);
- #endif
复制代码然后添加oled的demo程序,包括oled的初始化,显示字符,显示数字等等函数。具体可以参考驱动。
- void oled_demo(void)
- {
- hi_i2c_init(HI_I2C_IDX_0, 100000);
- led_init();
- OLED_ColorTurn(0); //0正常显示,1 反色显示
- OLED_DisplayTurn(0); //0正常显示 1 屏幕翻转显示
- OLED_ShowString(8,16,"hello harmony",16);
- OLED_ShowNum(8,32,1234567890,10,16);
- OLED_Refresh();
- }
- SYS_RUN(oled_demo);
复制代码最后还要注意添加BUILD.gn以及修改app文件夹中的BUILD.gn,添加新增的oled部分的路径。
来张显示效果图
`oled显示效果图\n