1. BLE藍(lán)牙通信
? 1) 簡(jiǎn)介
???ch573芯片集成低功耗 2.4-GHz 無(wú)線通訊模塊,包括 RF 收發(fā)器、基帶和鏈路控制以及天線匹配網(wǎng)絡(luò),支持低功耗藍(lán)牙 BLE。內(nèi)部提供一百多個(gè)寄存器用于調(diào)節(jié)參數(shù)和控制過(guò)程及狀態(tài),官方優(yōu)化的通訊協(xié)議棧和應(yīng)用層 API,支持組網(wǎng),支持各種主流操作系統(tǒng)下的上位機(jī)開(kāi)發(fā),提供各 OS 下的 API 和 APP,具體信息參考官方ch573手冊(cè)和大量的官方例程。
? 2) 藍(lán)牙串口例程測(cè)試
? ? a) 打開(kāi)工程
? ? ? ? 官方提供了幾十個(gè)BLE例程供大家參考,這里以藍(lán)牙串口為例,打開(kāi)例程“BLE_UART”的工程文件:
? ? b) 打開(kāi)peripheral_main.c文件
? ? ? ? 在主函數(shù)中我們可以看到系統(tǒng)首先初始化了串口1:
? ? ? ? 按住ctrl,然后左鍵單機(jī)app_uart_init();函數(shù):

? ? ? ? 可以看到在函數(shù)中初始化了串口3:
? ? 記住上面兩個(gè)串口以及對(duì)應(yīng)的引腳,在接下來(lái)的APP調(diào)試中會(huì)用到:
? ? c) 編譯
? ?打開(kāi)工程后,點(diǎn)擊項(xiàng)目,然后點(diǎn)擊編譯:

? ? d) 燒錄運(yùn)行
? ?? ?燒錄后,使用USB-TTL連接開(kāi)發(fā)板的串口1,即 PA8(RXD1)\PA9(TXD1),打開(kāi)串口助手,波特率115200,然后按下復(fù)位,系統(tǒng)會(huì)打印初始化完成
? ? e) 安裝BLE調(diào)試助手
手機(jī)應(yīng)用商店直接搜索“BLE調(diào)試助手”,可以看到有一款沁恒官方的APP,點(diǎn)擊下載安裝:
? ? f) 在應(yīng)用中連接開(kāi)發(fā)板
? ? ? ? 打開(kāi)上面下載的APP,點(diǎn)擊連接,同時(shí)串口助手中也可以看到連接信息:
? ? g) 通信測(cè)試
? ? ? ? 選擇最后的“Unknow Service”,完成數(shù)據(jù)發(fā)送:
? ? 在發(fā)送后可以看到模塊發(fā)送了三字節(jié)同時(shí)接收到了三字節(jié),在串口助手中也可以看到接收的數(shù)據(jù)大小:
? ? 然后我們將USB-TTL連接開(kāi)發(fā)板的串口1換成串口3,即 PA4(RXD3)\PA5(TXD3),然后再次重復(fù)上述的數(shù)據(jù)發(fā)送操作,系統(tǒng)可以顯示接收的具體數(shù)據(jù)內(nèi)容:
? ? 然后我們切換到數(shù)據(jù)接收界面,關(guān)閉“hex”并打開(kāi)“接收通知數(shù)據(jù)”
? ? 串口助手中點(diǎn)擊發(fā)送(此時(shí)連接的是串口3):
? ? 在數(shù)據(jù)接收界面可以收到數(shù)據(jù):
? ? 至此BLE數(shù)據(jù)收發(fā)測(cè)試完成,接下來(lái)我們依托這個(gè)數(shù)據(jù)收發(fā)的工程完成自己的應(yīng)用開(kāi)發(fā).
2. BLE藍(lán)牙點(diǎn)燈
? 1) 新建工程
? ? 為了避免改用引起的錯(cuò)誤,首先復(fù)制粘貼原來(lái)的工程項(xiàng)目,并命名為“CH573F_08_BLE_UART”

? 2) 藍(lán)牙串口數(shù)據(jù)解析
? ? ? 在上面的BLE藍(lán)牙通信的使用中介紹到了藍(lán)牙串口通過(guò)UART1打印日志調(diào)試信息,例如連接情況以及藍(lán)牙串口接收數(shù)據(jù)的大小,并通過(guò)UART3完成藍(lán)牙串口數(shù)據(jù)的收發(fā),具體主要是體現(xiàn)在“peripheral.c”中的on_bleuartServiceEvt函數(shù)中,如下圖所示:
? ? ? 寫一個(gè)數(shù)據(jù)處理函數(shù):
void PERSON_BLE_UART_DATA_HANDLE(uint8_t *data, uint16_t length);
? ? ? 在頭部添加聲明:
? ? ? 在串口發(fā)送后的下方添加調(diào)用,并在下一函數(shù)實(shí)體中添加實(shí)現(xiàn),例如將接收到的數(shù)據(jù)打印并根據(jù)接收的第一個(gè)字符控制LED的亮滅,如下圖所示:
/******************************************************************
* 功能:藍(lán)牙串口數(shù)據(jù)處理函數(shù)
* 參數(shù):uint8_t *data,接收的數(shù)據(jù); uint16_t length,接收的數(shù)據(jù)長(zhǎng)度
* 返回值:無(wú)
******************************************************************/
void PERSON_BLE_UART_DATA_HANDLE(uint8_t *data, uint16_t length)
{
UART1_SendString(data,length);
UART1_SendString("\r\n",2);
PRINT("data[0]=%c",data[0]);
if(data[0]=='1')
{
GPIOB_ModeCfg(GPIO_Pin_15, GPIO_ModeOut_PP_5mA);//推挽輸出最大5mA
GPIOB_ResetBits(GPIO_Pin_15);
UART1_SendString("LED turn on\r\n",sizeof("LED turn on\r\n"));
}
else if(data[0]=='0'){
GPIOB_ModeCfg(GPIO_Pin_15, GPIO_ModeOut_PP_5mA);//推挽輸出最大5mA
GPIOB_SetBits(GPIO_Pin_15);
UART1_SendString("LED turn off\r\n",sizeof("LED turn off\r\n"));
}
}
? 3) 編譯燒錄運(yùn)行
? ? 燒錄后,使用USB-TTL連接串口1引腳PA8(RXD1)\PA9(TXD1),打開(kāi)串口助手,設(shè)置波特率115200,打開(kāi)串口,然后按下復(fù)位鍵,等待APP連接后重復(fù)上一講的數(shù)據(jù)發(fā)送,不同的是,發(fā)送的數(shù)據(jù)是單個(gè)字符“0”和“1”,如下所示:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-699276.html
? ? 在串口助手中可以看到對(duì)應(yīng)的處理結(jié)果:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-699276.html
? ? 如果串口1和串口3的藍(lán)牙數(shù)據(jù)收發(fā)狀態(tài)如上圖所示,即達(dá)到本實(shí)驗(yàn)的目的,如果異常,請(qǐng)檢查源代碼,如有疑問(wèn)可關(guān)注公眾號(hào) “IOT趣制作”,將您遇到的問(wèn)題描述出來(lái),平臺(tái)收到您的留言后會(huì)第一時(shí)間進(jìn)行解決。
? ? 至此CH573快速入門-基礎(chǔ)篇的教程到此結(jié)束,下一章節(jié)開(kāi)始進(jìn)入【第三章 進(jìn)階開(kāi)發(fā)篇】,將結(jié)合多個(gè)傳感器、執(zhí)行器以及Android Studio的自定義藍(lán)牙APP等多個(gè)內(nèi)容進(jìn)行詳細(xì)講解。
到了這里,關(guān)于CH573-08-BLE藍(lán)牙(通信與點(diǎn)燈)——RISC-V內(nèi)核BLE MCU快速開(kāi)發(fā)教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!