iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0

Day 09 與硬體溝通的 Protocol

接下來的文章中,筆者打算來分享這個專案的建立過程中所需的知識點,以及筆者在這個專案中做過的事。今天我們來認識一下跟 ChameleonUltra 溝通的 Protocol 吧!

ChameleonUltra 硬體支援一種名為 Serial 的 Protocol,可以用來傳送資料給硬體,或是從硬體接收資料。然後在硬體上會透過 UART to USB 的晶片把 Serial 轉換成 USB,讓我們可以直接透過 USB 跟電腦或是手機溝通,並且也會透過 UART to 藍牙 BLE 的晶片把 Serial 轉換成 BLE,讓我們可以直接透過 BLE 協定進行傳輸。

通常 Serial 的最小傳輸單位是 Byte,但 Serial 有可能會把一筆資料分成多次傳送,所以需要由硬體及應用程式共同約定一個傳輸規則,明確的定義資料開始以及結尾。但由於硬體的效能有限,為了減少資料量並加快傳輸速度,ChameleonUltra 是以自定義的資料格式 (binary) 進行傳輸。

ChameleonUltra 所定義的資料格式如下:

  • SOF: 1 Byte,每一筆資料會以 SOF Byte 0x11 作為開始
  • LRC1: 1 Byte,SOF 之後會緊鄰著 SOF 的 LRC Byte (Longitudinal Redundancy Check) 0xEF
  • CMD: 2 Bytes,格式為 Unsigned Big Endian,代表想要執行的指令。
  • STATUS: 2 Bytes,格式為 Unsigned Big Endian,代表執行結果,如果是應用程式傳送給硬體的請求則固定為 0x0000
  • LEN: 2 Bytes,格式為 Unsigned Big Endian,代表 Data 的長度,最大值為 512。
  • LRC2: 1 Byte,由 CMDSTATUSLEN 三個欄位計算出來的 LRC Byte。
  • DATA: LEN Bytes,根據命令來解析所需傳送或接收的資料,最大長度為 512 Bytes。
  • LRC3: 1 Byte,由 DATA 計算出來的 LRC Byte。

資料的總長度為 LEN + 10 Bytes。

Big/Little Endian

在使用與傳送 Serial 的資料時,需要很注意 Endian 的問題,如果想要深入了解兩者的差距,可以直接透過搜尋引擎查詢更多資料。

由於電腦通常都會以 Big Endian 儲存資料,但是這類嵌入式系統通常都會使用 Little Endian,所以都需要特別注意是使用哪一種。在開發 ChameleonUltra 的過程中,其實有發現大量的 Big Endian 與 Little Endian 混用的問題,但因為硬體的現況已經是這樣,所以就只能照目前的現況來傳送及接收。


上一篇
Day 08 如何使用 SDK (Part 3)
下一篇
Day 10 Mifare Classic 1k 介紹
系列文
用 Web Serial/Bluetooth 來控制 ChameleonUltra 硬體30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言