成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenHarmony Neptune開發(fā)板I2C驅動OLED屏幕顯示

開發(fā) 前端
我發(fā)現(xiàn)在之前示例代碼中驅動OLED屏幕顯示以在現(xiàn)版本中無法使用,故此修改示例代碼以支持對當前版本(openharmony V1.1.0 LTS)IoT接口使用I2C驅動OLED屏幕顯示,并把修改代碼和調試過程中出現(xiàn)的一些問題在做說明。

[[422673]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區(qū)

https://harmonyos.51cto.com

前言

由于Neptune開發(fā)板openharmony SDK版本的更新,我發(fā)現(xiàn)在之前示例代碼中驅動OLED屏幕顯示以在現(xiàn)版本中無法使用,故此修改示例代碼以支持對當前版本(openharmony V1.1.0 LTS)IoT接口使用I2C驅動OLED屏幕顯示,并把修改代碼和調試過程中出現(xiàn)的一些問題在做說明。

1.環(huán)境準備

1.1 開發(fā)環(huán)境、編譯環(huán)境搭建,參考官方文檔,參考鏈接如下:

Neptune開發(fā)板的環(huán)境搭建及使用

1.2 Neptune開發(fā)板 openharmony V1.1.0 LTS 版本獲取:

  1. git clone https://gitee.com/hihopeorg_group/neptune-harmony-os1.1-iot.git 

2.材料準備

  • Neptune HarmonyOS物聯(lián)網 IOT模組
  • 0.96寸OLED顯示屏(SSD1306)
  • 杜邦線若干

3.開發(fā)調試

3.1 IoT相關基礎知識介紹

openHarmony IoT硬件子系統(tǒng)提供了一些外設相關的接口,目錄位于:

  1. base/iot_hardware/peripheral/interfaces/kits 

I2C相關接口,接口頭文件為iot_i2c.h,其中I2C寫入函數(shù)接口為:

  1. unsigned int IoTI2cWrite(unsigned int id, unsigned short deviceAddr, const unsigned char *data, unsigned int dataLen) 

3.2 獲取HiHope官方Neptune開發(fā)板OLED示例程序

Neptune開發(fā)板OLED示例程序

3.3將OLED示例程序復制到 openharmony V1.1.0 LTS 版本SDK中

3.4 修改示例程序

(1)修改頭文件->oled_ssd1306.c

  1. #include <stddef.h> 
  2. #include <stdio.h> 
  3. #include "oled_ssd1306.h" 
  4. #include "iot_i2c.h" 
  5. #include "iot_errno.h" 
  6. #include "oled_fonts.h" 

(2)修改OLED_I2C_IDX定義->oled_ssd1306.c

  1. #define OLED_I2C_IDX  0 

(3)修改I2cWiteByte函數(shù)->oled_ssd1306.c

  1. static uint32_t I2cWiteByte(uint8_t regAddr, uint8_t byte) 
  2.      uint8_t buffer[] = {regAddr, byte}; 
  3.      return IoTI2cWrite(0,OLED_I2C_ADDR,buffer,sizeof(buffer)); 

(4)修改IIC初始化函數(shù)->oled_ssd1306.c

  1. IoTI2cInit(OLED_I2C_IDX, OLED_I2C_BAUDRATE); 

(5)將WIFI_IOT_SUCCESS修改為IOT_SUCCESS

(6)修改頭文件->oled_demo.c

  1. #include <stdio.h> 
  2. #include <unistd.h> 
  3. #include "ohos_init.h" 
  4. #include "cmsis_os2.h" 
  5. #include "oled_ssd1306.h" 

 (7)修改BUILD.gn

  1. static_library("oled_sample") { 
  2.     sources = [ 
  3.         "oled_demo.c",  
  4.         "oled_ssd1306.c"
  5.     ] 
  6.  
  7.     include_dirs = [ 
  8.         "//utils/native/lite/include"
  9.         "//kernel/liteos_m/kal/cmsis"
  10.         "//base/iot_hardware/peripheral/interfaces/kits"
  11.     ] 

3.5、編譯將固件燒錄到Neptune開發(fā)板中

(BUG) 將固件燒錄到開發(fā)板后按RST鍵后串口返回應答錯誤命令, OLED屏無顯示。

4、問題解決方案

4.1、分析問題:

由于我們使用的是IOT接口的I2C驅動,考慮到串口返回ACK錯誤的情況,可能會是I2C連續(xù)寫入時序問題.........................

4.2、找到問題原因:

使用邏輯分析儀分析I2C信號,發(fā)現(xiàn)I2C連續(xù)寫入時序問題,由于I2C連續(xù)寫入過快,沒有適當延時造成ACK應答錯誤,此圖邏輯分析儀捕獲I2C信號:

OpenHarmony Neptune開發(fā)板I2C驅動OLED屏幕顯示-鴻蒙HarmonyOS技術社區(qū)

4.3、解決問題:

修改I2cWiteByte函數(shù):

  1. static uint32_t I2cWiteByte(uint8_t regAddr, uint8_t byte) 
  2.      uint8_t buffer[] = {regAddr, byte}; 
  3.      IoTI2cWrite(0,OLED_I2C_ADDR,buffer,sizeof(buffer)); 
  4.      tls_os_time_delay(1);    //此函數(shù)大概延時2ms 

 修改WriteCmd與WriteData函數(shù):

  1. static uint32_t WriteCmd(uint8_t cmd) 
  2.     I2cWiteByte(OLED_I2C_CMD, cmd); 
  3.  
  4. static uint32_t WriteData(uint8_t data) 
  5.     I2cWiteByte(OLED_I2C_DATA, data); 

4.4、編譯將固件燒錄到Neptune開發(fā)板中

OLED能正常顯示,串口無異常情況產生。

OpenHarmony Neptune開發(fā)板I2C驅動OLED屏幕顯示-鴻蒙HarmonyOS技術社區(qū)

5、總結

以上,完成一個基于openharmony V1.1.0 LTS 版本 Neptune開發(fā)板I2C驅動OLED屏幕顯示示例代碼的修改以完成,對于其中所產生的一些問題做了解決,同時還發(fā)現(xiàn)一些問題,例如延時函數(shù)時間過長,使OLED屏幕刷新過慢,在一定條件下顯示不流暢,對此產生的問題我將延時函數(shù)以降至us級別,達到流暢顯示的目的。限于篇幅,延時函數(shù)就不介紹了,還沒整理先在gitte新建一個庫,后續(xù)會把代碼上傳gitte地址

以下是本次修改的代碼:

oled_sample.rar

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區(qū)

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區(qū)
相關推薦

2021-09-10 10:01:04

鴻蒙HarmonyOS應用

2021-09-13 10:03:35

鴻蒙HarmonyOS應用

2021-10-11 14:14:42

鴻蒙HarmonyOS應用

2023-09-13 15:33:57

I2C鴻蒙

2022-06-13 09:21:45

I2C DriverI2C 子系統(tǒng)

2022-04-01 15:54:01

DHCP網絡協(xié)議開發(fā)板

2021-05-10 09:40:29

鴻蒙HarmonyOS應用

2023-04-07 09:14:31

硬件通信串口通信實驗

2022-01-07 21:11:27

鴻蒙HarmonyOS應用

2017-08-11 18:25:25

Linuxi2c

2017-03-16 08:30:19

Android ThAndroidI2C

2022-10-14 15:55:24

環(huán)境搭建鴻蒙

2010-06-08 16:25:35

I2C總線協(xié)議

2010-07-01 16:45:05

I2C總線協(xié)議

2020-12-02 11:55:40

OLED

2022-05-27 09:00:09

I2C子系統(tǒng)協(xié)議

2022-06-12 07:30:13

I3C通訊協(xié)議

2021-12-16 15:14:54

鴻蒙HarmonyOS應用

2021-01-19 19:32:01

Cortex-A9 R嵌入式系統(tǒng)i2c 外設
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人精品国产免费网站 | h视频在线观看免费 | 91免费在线看 | 成人片免费看 | 国产免费观看久久黄av片涩av | 午夜播放器在线观看 | 成人免费一区二区三区视频网站 | 国产高清美女一级a毛片久久w | 国产午夜三级一区二区三 | 精品一区二区三区91 | 三级免费毛片 | 欧美区在线 | 国产一级在线 | 成人精品一区二区三区中文字幕 | 日韩欧美一区在线 | 激情网站在线 | 欧美a在线 | 中文字幕一区在线观看视频 | 久久精品亚洲精品 | 中文字幕电影在线观看 | 国产精品久久久久一区二区三区 | 三级高清 | 国产一区二区三区在线看 | 亚洲一区 中文字幕 | 亚洲风情在线观看 | 欧美在线精品一区 | 狠狠干综合视频 | 伊人艹| 在线观看涩涩视频 | 天天草天天爱 | 国产毛片av | 国产乱码精品一品二品 | 涩涩视频网站在线观看 | 日韩高清中文字幕 | 成年人在线观看视频 | 精品亚洲一区二区三区 | www国产成人免费观看视频,深夜成人网 | 欧美日韩精品在线免费观看 | 国产亚洲www | 奇米超碰 | 久久丝袜 |