鸿蒙系统屏幕显示,鸿蒙系统 OLED屏幕驱动

Hi3861 OLED驱动

可以看附件视频详细说明

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

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

bb9a72f74fa0c499c36eb931ac38c858.png

这里记录一下移植的过程

(1)编写驱动代码

首先在

└── applications

└── sample

└── wifi-iot

└── app

新增应用:oled_demo,源码已经放在附件,大家自己下载。

(2)设置I2C引脚复用

确定i2c引脚,查看原理图,可以看到OLED屏幕使用到的是I2C0,引脚是GPIO13、GPIO14

9367c4ea36cb3365046eaf192ed34675.png

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

#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

复制代码

(3)开启I2C功能

修改文件:vendor\hisi\hi3861\hi3861\build\config\usr_config.mk

增加 CONFIG_I2C_SUPPORT=y

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

(4)OLED屏幕驱动讲解

入口函数:

void my_oled_demo(void)

{

//初始化,我们使用的是I2C0

hi_i2c_init(HI_I2C_IDX_0, 100000); /* baudrate: 100000 */

led_init();

OLED_ColorTurn(0);//0正常显示,1 反色显示

OLED_displayTurn(0);//0正常显示 1 屏幕翻转显示

OLED_ShowString(8,16,"hello world",16);

OLED_Refresh();

}

复制代码

I2C写函数:

hi_u32 my_i2c_write(hi_i2c_idx id, hi_u16 device_addr, hi_u32 send_len)

{

hi_u32 status;

hi_i2c_data es8311_i2c_data = { 0 };

es8311_i2c_data.send_buf = g_send_data;

es8311_i2c_data.send_len = send_len;

status = hi_i2c_write(id, device_addr, &es8311_i2c_data);

if (status != HI_ERR_SUCCESS) {

printf("===== Error: I2C write status = 0x%x! =====\r\n", status);

return status;

}

return HI_ERR_SUCCESS;

}

本文同步分享在 博客“连志安的博客”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值