当前位置:   article > 正文

鸿蒙系统 OLED屏幕驱动_oled裸屏 驱动

oled裸屏 驱动

Hi3861 OLED驱动

可以看附件视频详细说明

Hispark WiFi开发套件又提供一个oled屏幕,但是鸿蒙源码中没有这个屏幕的驱动,我们需要自己去移植。

经过一晚上的调试,现在终于在鸿蒙系统上实现OLED屏幕的显示了,效果如下:

这里记录一下移植的过程
(1)编写驱动代码
首先在
└── applications
    └── sample
        └── wifi-iot
            └── app
新增应用:oled_demo,源码已经放在附件,大家自己下载。

(2)设置I2C引脚复用
确定i2c引脚,查看原理图,可以看到OLED屏幕使用到的是I2C0,引脚是GPIO13、GPIO14  

所以我们需要修改源码,在vendor\hisi\hi3861\hi3861\app\wifiiot_app\init\app_io_init.c 文件中,初始化I2C引脚的代码修改成如下:

  1. #ifdef CONFIG_I2C_SUPPORT
  2. /* I2C IO复用也可以选择3/4; 9/10,根据产品设计选择 */
  3. hi_io_set_func(HI_IO_NAME_GPIO_13, HI_IO_FUNC_GPIO_13_I2C0_SDA);
  4. hi_io_set_func(HI_IO_NAME_GPIO_14, HI_IO_FUNC_GPIO_14_I2C0_SCL);
  5. #endif


复制代码


(3)开启I2C功能
修改文件:vendor\hisi\hi3861\hi3861\build\config\usr_config.mk
增加 CONFIG_I2C_SUPPORT=y

以上修改变完成了,重新编译即可看到OLED能成功驱动。

(4)OLED屏幕驱动讲解
入口函数:

  1. void my_oled_demo(void)
  2. {
  3. //初始化,我们使用的是I2C0
  4. hi_i2c_init(HI_I2C_IDX_0, 100000); /* baudrate: 100000 */
  5. led_init();
  6. OLED_ColorTurn(0);//0正常显示,1 反色显示
  7. OLED_displayTurn(0);//0正常显示 1 屏幕翻转显示
  8. OLED_ShowString(8,16,"hello world",16);
  9. OLED_Refresh();
  10. }


复制代码


I2C写函数:

  1. hi_u32 my_i2c_write(hi_i2c_idx id, hi_u16 device_addr, hi_u32 send_len)
  2. {
  3. hi_u32 status;
  4. hi_i2c_data es8311_i2c_data = { 0 };
  5. es8311_i2c_data.send_buf = g_send_data;
  6. es8311_i2c_data.send_len = send_len;
  7. status = hi_i2c_write(id, device_addr, &es8311_i2c_data);
  8. if (status != HI_ERR_SUCCESS) {
  9. printf("===== Error: I2C write status = 0x%x! =====\r\n", status);
  10. return status;
  11. }
  12. return HI_ERR_SUCCESS;
  13. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/269316
推荐阅读
相关标签
  

闽ICP备14008679号