日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
OpenHarmonyNeptune開發(fā)板I2C驅(qū)動(dòng)OLED屏幕顯示

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、思明網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、購(gòu)物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為思明等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

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

https://harmonyos.

前言

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

1.環(huán)境準(zhǔn)備

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

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

1.2 Neptune開發(fā)板 openharmony V1.1.0 LTS 版本獲?。?/p>

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

2.材料準(zhǔn)備

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

3.開發(fā)調(diào)試

3.1 IoT相關(guān)基礎(chǔ)知識(shí)介紹

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

 
 
 
 
  1. base/iot_hardware/peripheral/interfaces/kits 

I2C相關(guān)接口,接口頭文件為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示例程序復(fù)制到 openharmony V1.1.0 LTS 版本SDK中

3.4 修改示例程序

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

 
 
 
 
  1. #include  
  2. #include  
  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  
  2. #include  
  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.         "http://utils/native/lite/include", 
  9.         "http://kernel/liteos_m/kal/cmsis", 
  10.         "http://base/iot_hardware/peripheral/interfaces/kits", 
  11.     ] 

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

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

4、問題解決方案

4.1、分析問題:

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

4.2、找到問題原因:

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

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ù)大概延時(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能正常顯示,串口無異常情況產(chǎn)生。

5、總結(jié)

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

以下是本次修改的代碼:

oled_sample.rar

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

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

https://harmonyos.


當(dāng)前標(biāo)題:OpenHarmonyNeptune開發(fā)板I2C驅(qū)動(dòng)OLED屏幕顯示
轉(zhuǎn)載源于:http://www.dlmjj.cn/article/dhjcgoj.html