0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何操作I2C去显示oled屏幕

电子发烧友开源社区 来源:HarmonyOS官方合作社区 作者:HarmonyOS官方合作社 2022-03-02 17:54 次阅读

摘要:本文简单介绍如何操作I2C去显示oled屏幕,并且实现动画播放、中文英文显示、绘图等功能

适合群体:适用于润和Hi3861开发板,L0轻量系统驱动开发

7.1 实验效果

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

以下是移植效果:

如何操作I2C去显示oled屏幕

如何操作I2C去显示oled屏幕

接口:I2C

使用引脚:HI_IO_NAME_GPIO_13 、 HI_IO_NAME_GPIO_14

7.2 代码

这里我直接用许思维老师之前移植好的代码,不过由于鸿蒙版本更新过快,许思维老师之前的代码是基于1.0版本,直接拿到3.0以上版本编译会出错,这里我修改了编译错误。放在我的仓库中。

整个代码目录如下:

主要是3个文件夹:

(1)examples

测试代码,里面有一个ssd1306_demo.c文件,是我们的入口函数。

(2)libm_port

从musl libc中抽取的`sin`和`cos`的实现。

(3)ssd1306

相关驱动代码部分。

接下来我们来重点看下代码部分:

(1)初始化入口函数

入口函数是 Ssd1306TestDemo ,它创建了Ssd1306TestTask线程,所以我们重点看 Ssd1306TestTask线程。

void Ssd1306TestTask(void* arg){  (void) arg;  //先初始化引脚  IoTGpioInit(HI_IO_NAME_GPIO_13);  IoTGpioInit(HI_IO_NAME_GPIO_14);
  //将引脚功能设置为I2C引脚  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);
  //初始化I2C0  Ioti2cInit(0, OLED_I2C_BAUDRATE);
  //WatchDogDisable();
  usleep(20*1000);  //初始化SSD1306  ssd1306_Init();  //全部清空  ssd1306_Fill(Black);  ssd1306_SetCursor(0, 0);  //显示 Hello HarmonyOS!  ssd1306_DrawString("Hello HarmonyOS!", Font_7x10, White);
  uint32_t start = HAL_GetTick();  ssd1306_UpdateScreen();  uint32_t end = HAL_GetTick();  printf("ssd1306_UpdateScreen time cost: %d ms.
", end - start);
  TestDrawChinese1();  TestDrawChinese2();
  TestGetTick();  while (1) {    //进行所有用例测试    ssd1306_TestAll();    usleep(10000);  }}

(2)I2C发送函数

我们要操作OLED屏幕,就需要使用I2C发送数据给OLED屏幕,代码使用

ssd1306_SendData函数发送I2C数据,该函数原型如下,直接调用的hi3861的i2c接口函数:

static uint32_t ssd1306_SendData(uint8_t* data, size_t size){  int id = SSD1306_I2C_IDX;
  return IoTI2cWrite(id, SSD1306_I2C_ADDR, data, size);}

(3)修改 usr_config.mk文件

注意,默认代码是没有打开i2c功能的,直接编译会提示相关的i2c函数没有定义,我们需要打开i2c的功能,具体是修改usr_config.mk文件 ,目前版本(3.1)的路径是:

devicesochisiliconhi3861v100sdk_liteosuildconfigusr_config.mk

但是代码结构可能会调整,路径可能会变。

增加 CONFIG_I2C_SUPPORT=y

如何操作I2C去显示oled屏幕

原文标题:OpenHarmony轻量系统开发【7】驱动之I2C显示OLED屏幕

文章出处:【微信公众号:HarmonyOS官方合作社区】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OLED
    +关注

    关注

    119

    文章

    6200

    浏览量

    224214
  • 驱动
    +关注

    关注

    12

    文章

    1840

    浏览量

    85293
  • 屏幕
    +关注

    关注

    6

    文章

    1199

    浏览量

    55801

原文标题:OpenHarmony轻量系统开发【7】驱动之I2C显示OLED屏幕

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于I2C总线的读写操作流程详解

    本文主要介绍I2C总线的读写操作流程。 I2C总线的操作包括读和写,具体的操作流程如下。
    的头像 发表于 11-29 09:38 3.3w次阅读
    关于<b class='flag-5'>I2C</b>总线的读写<b class='flag-5'>操作</b>流程详解

    使用MicroPython的I2C总线通讯编程和OLED显示屏的使用

    在介绍OLED显示屏之前,我们先来了解一下I2C总线。I2C(Inter-Integrated Circuit)是一种串行通信协议,用于连接微控制器和其他外围设备。
    的头像 发表于 11-08 17:28 3113次阅读
    使用MicroPython的<b class='flag-5'>I2C</b>总线通讯编程和<b class='flag-5'>OLED</b><b class='flag-5'>显示</b>屏的使用

    【HarmonyOS HiSpark Wi-Fi IoT套件】I2C驱动 Hi3861 驱动OLED屏幕显示

    ,大家自己下载。(2)设置I2C引脚复用确定i2c引脚,查看原理图,可以看到OLED屏幕使用到的是I2C
    发表于 10-16 09:26

    怎样使用I2C接口控制OLED屏幕显示

    XR806外设I2C接口有何作用?怎样使用I2C接口控制OLED屏幕
    发表于 12-28 07:30

    OpenHarmony轻量系统开发【7】驱动之I2C显示OLED屏幕

    摘要:本文简单介绍如何操作I2C显示OLED屏幕,并且实现动画播放、中文英文
    发表于 01-21 16:37

    I2C

    很不的错的接扫I2C资料,值得演习一下
    发表于 04-19 15:45 23次下载

    i2c

    单片机i2c总线操作;单片机i2c总线操作;单片机i2c总线操作
    发表于 05-17 11:09 35次下载

    I2C OLED显示屏的51单片机/STM32/Arduino驱动程序

    I2C OLED显示屏的51单片机/STM32/Arduino驱动程序说明。
    发表于 03-26 09:37 66次下载

    硬件I2C与模拟I2C

    硬件I2C对应芯片上的I2C外设,有相应I2C驱动威廉希尔官方网站 ,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C;一般也较为稳定,但
    发表于 12-28 19:14 81次下载
    硬件<b class='flag-5'>I2C</b>与模拟<b class='flag-5'>I2C</b>

    连接100英尺以外的OLED屏幕I2C传感器

    电子发烧友网站提供《连接100英尺以外的OLED屏幕I2C传感器.zip》资料免费下载
    发表于 11-03 10:31 0次下载
    连接100英尺以外的<b class='flag-5'>OLED</b><b class='flag-5'>屏幕</b>和<b class='flag-5'>I2C</b>传感器

    如何获取I2C OLED的例程,并搭建OLED仿真威廉希尔官方网站 图

    OLED屏应用广泛,常用于智能手表、手环的显示屏。特点是屏幕小,可以显示中英文、图片等。 下图是I2C
    发表于 12-01 10:56 5286次阅读

    带有idiotware shield的I2C OLED显示器中的动画

    电子发烧友网站提供《带有idiotware shield的I2C OLED显示器中的动画.zip》资料免费下载
    发表于 01-03 10:27 0次下载
    带有idiotware shield的<b class='flag-5'>I2C</b> <b class='flag-5'>OLED</b><b class='flag-5'>显示</b>器中的动画

    带有Arduino Nano和I2C OLED显示屏的Arduboy Clone

    电子发烧友网站提供《带有Arduino Nano和I2C OLED显示屏的Arduboy Clone.zip》资料免费下载
    发表于 02-10 14:19 0次下载
    带有Arduino Nano和<b class='flag-5'>I2C</b> <b class='flag-5'>OLED</b><b class='flag-5'>显示</b>屏的Arduboy Clone

    如何在I2C 128X32 OLED显示器上滚动文本

    电子发烧友网站提供《如何在I2C 128X32 OLED显示器上滚动文本.zip》资料免费下载
    发表于 06-28 15:59 0次下载
    如何在<b class='flag-5'>I2C</b> 128X32 <b class='flag-5'>OLED</b><b class='flag-5'>显示</b>器上滚动文本

    使用I2C协议点亮OLED

    你好,我是爱吃鱼香ROS的小鱼。本节我们就尝试直接使用I2C协议来点亮OLED,因为主要测试I2C协议,所以对于复杂的显示处理部分小鱼就略过了,毕竟有方便的开源库使用,我们也不用那么纠
    的头像 发表于 07-15 16:47 1960次阅读
    使用<b class='flag-5'>I2C</b>协议点亮<b class='flag-5'>OLED</b>