ANROT 教學文件

STM32 串列埠讀取教學

用 Keil 與 STM32F103 開發板快速驗證 ANROT UART 資料流,適合 MCU 端 bring-up 與韌體整合。

最後更新 2025年1月1日 對應產品 3
  • stm32
  • mcu
  • uart
  • tutorial

STM32 讀取 ANROT UART 資料

協議支援

協議 / frame支援狀態這份 example 的處理方式
0x91 IMUSOL支援單機 float frame,輸出到 receive_imusol 並由 dump_data_packet() 列印。
0x62 GWSOL支援Gateway float collection,遍歷 receive_gwsol.receive_imusol[]
0x63 GWSOL Compact不支援STM32 decoder 沒有 compact gateway 分支。
0x90, 0xA0, 0xB0, 0xB1, 0xC0, 0xD0, 0xD1支援可解析單欄位輸出模式。
0xF0 Pressure略過程式只跳過 pressure item,沒有保存或列印 pressure。

這份範例使用 STM32F103 與 Keil uVision 讀取 ANROT UART 封包,適合 MCU 端第一次 bring-up。範例會在 USART2 接收資料,解析後透過開發板的 USB_232 口輸出到電腦端序列埠除錯助手。

下載範例

瀏覽器下載並解壓縮: demo-stm32-en.zip

主要結構:

CH_demo_stm32/
├── app/
│   ├── inc/packet.h
│   ├── inc/imu_data_decode.h
│   └── src/packet.c, imu_data_decode.c
├── USER/
│   ├── main.c
│   └── imu_decode.uvprojx
└── STM32F10x_FWLib/

測試環境

  • Windows 10 x64。
  • Keil uVision V5.28。
  • STM32F103ZET6 開發板。
  • ANROT UART TTL 輸出產品。

硬體接線

ANROT UART 為 TTL 電位。若產品端為 RS232 或 RS485,需先轉成 TTL 再接 STM32。

ANROT PINSTM32F103
RXDPA2 / USART2_TX
TXDPA3 / USART2_RX
3.3V3V3
GNDGND

接線後,使用 USB 線連接開發板的 USB_232 口到電腦。

編譯與下載

  1. 開啟 CH_demo_stm32/USER/imu_decode.uvprojx
  2. 確認 target 與晶片型號符合開發板。
  3. Build 專案。
  4. 將程式下載到 STM32。

範例預設 UART baud rate 為 115200。若產品端已改成其他波特率,請同步修改 USER/main.c 與 USART 初始化設定。

觀察輸出

開啟序列埠除錯助手,選擇開發板對應的 COM port,baud rate 設為 115200。成功後會看到:

Device ID: 0
Frame Rate: 100Hz
Acc(G):       0.010    0.010    1.003
gyr(deg/s):  -0.08     0.05    -0.03
eul(R P Y):  -0.51     0.58     3.86
quat(W X Y Z): 0.999   0.005   -0.004   0.034

程式整合重點

  • USART2_IRQHandler() 每收到一個 byte 就呼叫 packet_decode(ch)
  • imu_data_decode_init() 必須在主迴圈開始前呼叫一次。
  • 解碼後的單機資料在 receive_imusol
  • Gateway / 多節點資料在 receive_gwsol.receive_imusol[]

常見問題

沒有資料輸出

確認 TX/RX 是否交叉連接、GND 是否共地、產品波特率是否為 115200

資料亂碼或解析不到

通常是波特率不一致或電位不相容。先用 USB-UART 在電腦端驗證產品輸出,再接到 STM32。