[文章]第6节 Hi3861 OLED屏幕驱动 基于鸿蒙系统

阅读量0
0
4
``

Hi3861 OLED驱动

Hispark WiFi开发套件又提供一个OLED屏幕,但是鸿蒙源码中没有这个屏幕的驱动,我们需要自己去移植。
经过一晚上的调试,现在终于在鸿蒙系统上实现OLED屏幕的显示了,效果如下:

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

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

所以我们需要修改源码,在vendorhisihi3861hi3861appwifiiot_appinitapp_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功能
修改文件:vendorhisihi3861hi3861uildconfigusr_config.mk
增加 CONFIG_I2C_SUPPORT=y

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

4OLED屏幕驱动讲解
入口函数:
  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! =====
  10. ", status);

  11.         return status;

  12.     }



  13.     return HI_ERR_SUCCESS;

  14. }
复制代码



``
oled_demo.rar
(6.25 KB, 下载次数: 198)
ac413f8eb6098de509df688098458c9.png
ca25b9167be023837abeebef4570f65.png

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友