0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Hi3861開發(fā)板與其它開發(fā)板的通信

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:張兵 ? 2022-09-05 11:05 ? 次閱讀

張兵

就讀于貴州黔南科技學(xué)院

首期OpenHarmony開源開發(fā)者成長計劃“智能語音垃圾桶”項目開發(fā)者

一、搭建編譯環(huán)境

1、下載虛擬機(jī)VMware和Ubuntu20.0.14

下載 VMware Workstation Pro | CN

https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html

Ubuntu系統(tǒng)下載 | Ubuntu

https://cn.ubuntu.com/download

2、 安裝vm完成后打開vm,點擊創(chuàng)建新的虛擬機(jī)

a788a0cc-2ac1-11ed-ba43-dac502259ad0.png

3、選擇典型點擊下一步,選擇下載的Ubuntu,點擊下一步,創(chuàng)建完成后虛擬機(jī)自動安裝Ubuntu

a7a17a70-2ac1-11ed-ba43-dac502259ad0.png

4、安裝完成后獲取OpenHarmony源碼可參考

https://docs.openharmony.cn/pages/v3.1/zh-cn/device-dev/get-code/sourcecode-acquire.md/

5、安裝編譯工具

(1)安裝Node.js 打開Ubuntu終端輸入命令安裝:
sudo apt-get install nodejssudo apt-get install npmnode --version   //查看nodejs版本npm--version//查看npm版本
(2)安裝Python編譯環(huán)境
sudo apt-get install python3.8sudo apt-get install python3-pipsudo pip3 install setuptoolssudo pip3 install kconfiglib sudo pip3 install pycryptodomesudo pip3 install six --upgrade --ignore-installed sixsudopip3installecdsa
(3) 安裝SCons
python3 -m pip install sconsscons-v//查看版本
如圖:

a7b56134-2ac1-11ed-ba43-dac502259ad0.png

(4)安裝hb工具代碼測試
python3 -m pip install --user ohos-buildvim ~/.bashrc                      //設(shè)置環(huán)境變量export PATH=~/.local/bin:$PATH        //將以下命令拷貝到.bashrc文件的最后一行,保存并退出source~/.bashrc//更新環(huán)境變量
執(zhí)行"hb -h",有打印以下信息即表示安裝成功。

a7cbc5e6-2ac1-11ed-ba43-dac502259ad0.png

(5) 安裝gcc_riscv32

下載gcc_riscv32鏡像

https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fharmonyos%2Fcompiler%2Fgcc_riscv32%2F7.3.0%2Flinux%2Fgcc_riscv32-linux-7.3.0.tar.gz

設(shè)置環(huán)境變量

將壓縮包解壓到根目錄

tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~    //文件名需要與下載的文件相匹配設(shè)置環(huán)境變量。vim ~/.bashrc                      //設(shè)置環(huán)境變量export PATH=~/gcc_riscv32/bin:$PATH    //將以下命令拷貝到.bashrc文件的最后一行,保存并退出source ~/.bashrc            //更新環(huán)境變量riscv32-unknown-elf-gcc-v//顯示版本號,則安裝成功
6、修改usr_config.mk文件 文件在OpenHarmony源碼目錄下 device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk
CONFIG_I2C_SUPPORT=yCONFIG_PWM_SUPPORT=y
7、修改wifiservice文件夾 文件在OpenHarmony源碼目錄下 device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_hotspot.c
EnableHotspot函數(shù)中屏蔽如下字段     //if (SetHotspotIpConfig() != WIFI_SUCCESS) {     //    return ERROR_WIFI_UNKNOWN;     //}地址:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_device.cDispatchConnectEvent函數(shù)下 屏蔽StaSetWifiNetConfig相關(guān)代碼行      //StaSetWifiNetConfig(HI_WIFI_EVT_CONNECTED);//StaSetWifiNetConfig(HI_WIFI_EVT_DISCONNECTED);

二、創(chuàng)建項目文件夾

1、在OpenHarmony1.01版本創(chuàng)建一個項目demo

在源碼目錄下的vendor/team_x創(chuàng)建smart_demo

在scr里面添加我們寫的代碼:

a7f2ca56-2ac1-11ed-ba43-dac502259ad0.png

2、初始化uart串口

首先我們需要創(chuàng)建一個初始化uart串口的程序

將GPIO0初始化為tx端,將GPIO1初始化為rx端

void UartInit(void){    RaiseLog(LOG_LEVEL_INFO,"[2022012x01] entry into UartInit");    IoTGpioInit(HAL_WIFI_IOT_IO_NAME_GPIO_0);    HalIoSetFunc(HAL_WIFI_IOT_IO_NAME_GPIO_0, WIFI_IOT_IO_FUNC_GPIO_0_UART1_TXD);    IoTGpioInit(HAL_WIFI_IOT_IO_NAME_GPIO_1);    HalIoSetFunc(HAL_WIFI_IOT_IO_NAME_GPIO_1, WIFI_IOT_IO_FUNC_GPIO_1_UART1_RXD);     hi_uart_attribute uart_attr = {        .baud_rate = UART_BAUD_RATE,     /* baud_rate: 9600 */        .data_bits = UART_DATA_BITS,      /* data_bits: 8bits */        .stop_bits = UART_STOP_BITS,        .parity = 0,    }    RaiseLog(LOG_LEVEL_INFO,"[2022012x01] uart_init success");    /* Initialize uart driver */    hi_u32 ret = hi_uart_init(HI_UART_IDX_1, &uart_attr, HI_NULL);    if (ret != HI_ERR_SUCCESS)    {        printf("[Dustbin_tes3]Failed to init uart! Err code = %d
", ret);        return;    }}
3、創(chuàng)建線程任務(wù)
static void *uart_demo_task(void){    static uint16_t countSendTimes = 0;    static uint8_t countReceiveTimes = 0;    uartController.isReadBusy = false;    printf("[Initialize uart successfully
");    UartInit();    while (1)    {        osDelay(50);         UartReceiveMessage();//Collecting Serial Port Data        hi_sleep(SMART_BIN_SLEEP_2500MS);      }    return 0;}static void IotMainEntry(void){    osThreadAttr_t attr;    RaiseLog(LOG_LEVEL_INFO, "DATA:%s Time:%s 
", __FUNCTION__, __DATE__, __TIME__);
    // Create the IoT Main task    attr.attr_bits = 0U;    attr.cb_mem = NULL;    attr.cb_size = 0U;    attr.stack_mem = NULL    attr.stack_size = CONFIG_TASK_MAIN_STACKSIZE;    attr.priority = CONFIG_TASK_MAIN_PRIOR;    attr.name = "IoTMain";    (void) osThreadNew((osThreadFunc_t)uart_demo_task, NULL, (const osThreadAttr_t *)&attr);    return;}APP_FEATURE_INIT(IotMainEntry);
4、接收串口數(shù)據(jù)
static void UartReceiveMessage(void){    char *recData;    printf("----Listening----
");    RaiseLog(LOG_LEVEL_INFO,"Start Listening serial port");    if (UartIsBufEmpty())        {            return;        }        if (uartController.isReadBusy)        {            return;        }        uartController.isReadBusy = true;        g_ReceivedDatalen = hi_uart_read(UART_NUM, g_uart_buff, UART_BUFF_SIZE);        if (g_ReceivedDatalen > 0)        {            printf("handleUartReceiveMessage rcvData len:%d,msg:%s.
", g_ReceivedDatalen, g_uart_buff);                 setVoiceCommand();//Setting voice Commands            memset(g_uart_buff, 0, sizeof(g_uart_buff));            g_ReceivedDatalen = 0;        }        uartController.isReadBusy = false;}

當(dāng)hi3861開發(fā)板接收到其他開發(fā)板傳輸?shù)臄?shù)據(jù)后,可以通過串口打印出來,對此可以寫一個解析命令,對發(fā)送的字符串,執(zhí)行相應(yīng)的命令

a812522c-2ac1-11ed-ba43-dac502259ad0.png

注:在接線時,要將tx與另一個開發(fā)板的rx連接,因為在UART串口協(xié)議中,通過TX(發(fā)送引腳)和RX(接收引腳)進(jìn)行數(shù)據(jù)傳輸與接收,需要將TX發(fā)送引腳與另一開發(fā)板的RX接收引腳相連接,故需要交叉連接以保證兩塊開發(fā)板的正常通信。

a824a8d2-2ac1-11ed-ba43-dac502259ad0.png


審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1214

    瀏覽量

    100997
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4834

    瀏覽量

    96837
  • VMware
    +關(guān)注

    關(guān)注

    1

    文章

    291

    瀏覽量

    21534
  • Hi3861
    +關(guān)注

    關(guān)注

    1

    文章

    59

    瀏覽量

    6408

原文標(biāo)題:Hi3861 通過UART串口協(xié)議與其它開發(fā)板進(jìn)行通信

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    鴻蒙OpenHarmony【輕量系統(tǒng)運行】 (基于Hi3861開發(fā)板

    由于Hi3861為WLAN模組,您可以在版本編譯及燒錄后,通過如下操作,使開發(fā)板實現(xiàn)聯(lián)網(wǎng)功能。
    的頭像 發(fā)表于 04-23 09:50 ?636次閱讀
    鴻蒙OpenHarmony【輕量系統(tǒng)運行】 (基于<b class='flag-5'>Hi3861</b><b class='flag-5'>開發(fā)板</b>)

    鴻蒙OpenHarmony【集成三方SDK】 (基于Hi3861開發(fā)板

    OpenHarmony致力于打造一套更加開放完善的IoT生態(tài)系統(tǒng),為此OpenHarmony規(guī)劃了一組目錄,用于將各廠商的SDK集成到OpenHarmony中。本文檔基于Hi3861開發(fā)板,向平臺開發(fā)者介紹將SDK集成到Open
    的頭像 發(fā)表于 04-24 15:11 ?957次閱讀
    鴻蒙OpenHarmony【集成三方SDK】 (基于<b class='flag-5'>Hi3861</b><b class='flag-5'>開發(fā)板</b>)

    鴻蒙OpenHarmony【輕量系統(tǒng) 環(huán)境搭建】 (基于Hi3861開發(fā)板

    除上述[安裝庫和工具集]和[安裝編譯工具]外,針對Hi3861開發(fā)板還需要安裝特定的編譯工具。
    的頭像 發(fā)表于 04-26 17:47 ?1676次閱讀
    鴻蒙OpenHarmony【輕量系統(tǒng) 環(huán)境搭建】 (基于<b class='flag-5'>Hi3861</b><b class='flag-5'>開發(fā)板</b>)

    鴻蒙OpenHarmony【輕量系統(tǒng) 燒錄】 (基于Hi3861開發(fā)板

    針對Hi3861開發(fā)板,除了DevEco Device Tool
    的頭像 發(fā)表于 05-10 16:59 ?973次閱讀
    鴻蒙OpenHarmony【輕量系統(tǒng) 燒錄】 (基于<b class='flag-5'>Hi3861</b><b class='flag-5'>開發(fā)板</b>)

    鴻蒙OpenHarmony【輕量系統(tǒng) 運行】 (基于Hi3861開發(fā)板

    由于Hi3861為WLAN模組,您可以在版本編譯及燒錄后,通過如下操作,使開發(fā)板實現(xiàn)聯(lián)網(wǎng)功能。
    的頭像 發(fā)表于 05-10 16:38 ?612次閱讀
    鴻蒙OpenHarmony【輕量系統(tǒng) 運行】 (基于<b class='flag-5'>Hi3861</b><b class='flag-5'>開發(fā)板</b>)

    Hi3861開發(fā)板介紹

    介紹Hi3861 WLAN模組的開發(fā)環(huán)境搭建、版本編譯構(gòu)建、燒錄、源碼修改、調(diào)試驗證等方法。通過學(xué)習(xí),開發(fā)者會對Hi3861 WLAN模組開發(fā)
    發(fā)表于 09-21 15:15

    Hi3861開發(fā)板哪里可以買到

    Hi3861開發(fā)板哪里可以買到
    發(fā)表于 10-15 09:35

    鴻蒙開發(fā)板Hi3861燒錄報錯?

    各位高手:鴻蒙開發(fā)板燒錄時出現(xiàn)如下錯誤,請問怎么解決?> Executing task: c:\users\xiexg\.deveco-device-tool\core\deveco-venv
    發(fā)表于 05-18 15:18

    如何使用 HiBurn 工具燒錄鴻蒙的 .bin 文件到 Hi3861 開發(fā)板

    鴻蒙官方文檔的Hi3861開發(fā)板第一個示例程序中描述了如何使用 DevEco Device Tool 工具燒錄二進(jìn)制文件到 Hi3861 開發(fā)板。本文將介紹如何使用 HiBurn 工具
    的頭像 發(fā)表于 10-25 09:23 ?4575次閱讀

    openharmony開發(fā)版 openharmony開發(fā)板

    現(xiàn)在市面上支持OpenHarmony的開發(fā)板已經(jīng)非常多了,OpenHarmony不僅僅只能在海思系列芯片上運行,比較常見的有HiSpark、小熊派系列。這些開發(fā)板都是基于海思的Hi3861、H
    的頭像 發(fā)表于 06-24 09:03 ?3556次閱讀

    基于鴻蒙系統(tǒng)+Hi3861的WiFi小車開發(fā)

    本文簡單介紹鴻蒙系統(tǒng) + Hi3861 的WiFi小車開發(fā),適用于開發(fā)潤和Hi3861開發(fā)板的小伙伴們。
    的頭像 發(fā)表于 03-03 09:31 ?5498次閱讀
    基于鴻蒙系統(tǒng)+<b class='flag-5'>Hi3861</b>的WiFi小車<b class='flag-5'>開發(fā)</b>

    自制Hi3861開發(fā)板(附原理圖和電路圖)

    OpenHarmony的發(fā)展已經(jīng)進(jìn)入了新的階段,逐步把重點向富設(shè)備開發(fā)方向。OpenHarmony 3.x的各大特性也是針對富設(shè)備來的,但是仍然支持輕量設(shè)備,如Hi3861芯片設(shè)備。于是,我嘗試了使用自制的Hi3861
    的頭像 發(fā)表于 04-14 10:23 ?9587次閱讀
    自制<b class='flag-5'>Hi3861</b><b class='flag-5'>開發(fā)板</b>(附原理圖和電路圖)

    潤開鴻Hi3861開發(fā)板介紹

    Hi3861開發(fā)板是一片大約2cm*5cm大小的開發(fā)板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基帶和RF(Radio Frequency)電路。支持OpenHarmony,并配套
    的頭像 發(fā)表于 04-27 10:59 ?3372次閱讀
    潤開鴻<b class='flag-5'>Hi3861</b><b class='flag-5'>開發(fā)板</b>介紹

    鴻蒙OpenHarmony【輕量系統(tǒng)編譯】 (基于Hi3861開發(fā)板

    DevEco Device Tool支持Hi3861V100開發(fā)板的源碼一鍵編譯功能,提供編譯工具鏈和編譯環(huán)境依賴的檢測及一鍵安裝,簡化復(fù)雜編譯環(huán)境的同時,提升了編譯的效率。
    的頭像 發(fā)表于 04-22 15:19 ?489次閱讀
    鴻蒙OpenHarmony【輕量系統(tǒng)編譯】 (基于<b class='flag-5'>Hi3861</b><b class='flag-5'>開發(fā)板</b>)

    鴻蒙OpenHarmony南向:【Hi3861開發(fā)板介紹】

    Hi3861開發(fā)板是一片大約2cm*5cm大小的開發(fā)板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基帶和RF(Radio Frequency)電路。支持,并配套提供開放、易用的
    的頭像 發(fā)表于 05-06 17:19 ?836次閱讀
    鴻蒙OpenHarmony南向:【<b class='flag-5'>Hi3861</b><b class='flag-5'>開發(fā)板</b>介紹】