2024年4月24日 星期三

為何Raytac AT-Command模組不需要結束碼(end code)?

開發者在編寫程式時可能很熟悉在接受到字元為'\n'(hex 0x0A)或'\r'(hex 0x0D) 結束碼判斷為一筆資料的結束,在原始Nordic SDK內的 ble_app_uart 範例的做法也是當接收長度到達244bytes或接收到的字元為'\n'(hex 0x0A)或'\r'(hex 0x0D)結束碼時,則程式會將此接收資料透過BLE傳送到APP。

第一次接觸Raytac AT-Command模組的開發者可能對於沒有0x0A或是0x0D結束碼(end code)會感到非常陌生,非常疑惑要如何不以0D或是0A結束碼來收到完整的資訊?
故我們將針對AT-Command常見的使用情境分為連線以及未連線狀況進行說明:


已連線狀況 -

Raytac的AT-Command模組是做透傳(Pass-Through)功能,例如:APP端傳 0x41 0x42 0x43共3個bytes透過模組傳到MCU端這個方向,MCU端將只會收到0x41 0x42 0x43共3個bytes,APP端傳送此3個bytes時後面是不需要帶0x0D 結束碼或0x0A結束碼,當傳送方向是反過時(即MCU端傳到模組再傳到APP端這個方向)也是一樣的方式。

在這邊有一點需要特別提醒,傳送一筆資料與下一筆資料中間必須注意"間隔時間"(DI, Data Interval)的設定,否則傳送資料沒多久後就會發生掉封包而造成藍牙斷線;在不同的Baud rate下DI的值是不同的,可參考AT-Command的規格書內有建議的DI值。

以下試舉例Raytac的AT-Command模組在”手機APP->模組(MDBT42V-AT)->MCU”,Baud rate 9600,no flow control,資料長度 244bytes,傳送資料的D.I 值必需至少要250ms以上, 否則資料會掉封包。





未連線狀況 -

以 MCU(or Console)下AT Commands給藍牙模組做說明, 結尾是不需0D或是0A的結束碼,

AT?NAME
AT+NAMESQ-BT
AT?NAME









Edited by Sales Manager: Ms. Vicky Huang


Raytac Corporation 勁達國際電子股份有限公司  A company of Abietec
Bluetooth & WiFi module maker based on Nordic nRF54, nRF53, nRF52, nRF7002 solution
BT5.4 &BT5.3 & BT5.2 & BT5.1 Qualified, FCC/IC/CE/Telec/KC/RCM/SRRC/NCC Pre-Certified. Bluetooth Solution: nRF54, nRF5340, nRF52840, nRF52833, nRF52832, nRF52820, nRF52811, nRF52810, nRF52805, nRF51822 WiFi Solution: nRF7002
http://www.raytac.com
email:service@raytac.com
Tel: +886.2.3234.020