使用手冊 v1.1 原文件逐頁閱讀¶
適用於 IMU600-V2/韌體 0.11.2/GUI v1.6.1。
本頁收錄原文件的所有頁面,包括封面、目錄、修訂紀錄(如有)、正文與圖表。原文為繁體中文。點選圖片可以放大;展開圖片下方的文字即可複製。查看表格時,請以原頁圖片的欄位排列為準。
這裡保留原文件的文字與圖片。兩份文件記載不同或另有操作補充的地方,已整理在上方的對照說明中,也可在對應的設定指南查閱。
1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · 11 · 12 · 13 · 14 · 15 · 16 · 17 · 18 · 19 · 20 · 21 · 22 · 23 · 24 · 25 · 26 · 27 · 28 · 29 · 30 · 31 · 32 · 33 · 34 · 35 · 36 · 37 · 38 · 39 · 40
第 1 頁¶
展開本頁文字(可複製)
SparkNavi 向成電子有限公司 XIANG CHENG Electronic Co., Ltd. InertiaX core IMU600-V2 使用手冊 User Manual 三顆工業級 6 軸 IMU 加氣壓計的慣性量測模組 Triple-IMU Inertial Measurement Module with Barometer 對應韌體 Firmware: 0.11.2 設定工具 SparkNavi IMU600 GUI v1.6.1 發行日期 2026 年 10 月 版 號 1.1 XIANG CHENG Electronic Co., Ltd. (向成電子有限公司) No. 41, Wenxian 1st Rd., North Dist., Tainan City 704, Taiwan (R.O.C.) Tel +886-6-3586207 Fax +886-6-3581363 ethan@robotlab.com.tw · sparknavi.com © 2026 XIANG CHENG Electronic Co., Ltd. All rights reserved.
第 2 頁¶
展開本頁文字(可複製)
目錄
1. 產品概述 .......................................................................................................................................... 5
2. 接頭腳位 (J1) ................................................................................................................................... 8
開發板接頭定義................................................................................................................................. 12
3. IMU 座標軸 (機體 FRD) ............................................................................................................... 13
4. 快速開始 ........................................................................................................................................ 14
5. GUI 介面介紹 (SparkNavi IMU600 GUI v1.6.1) ...................................................................... 15
5.1 連線列 .................................................................................................................................. 15
5.2 儀表板 .................................................................................................................................. 15
5.3 參數設定 .............................................................................................................................. 16
5.4 終端機 .................................................................................................................................. 16
5.5 檔案選單 .............................................................................................................................. 16
6. ASCII 協定與指令 ......................................................................................................................... 17
6.1 行格式 .................................................................................................................................. 17
6.2 $SPNVIMURAW — 單顆 IMU (每格 3 行) ..................................................................... 18
6.3 $SPNVIMU — 三顆合併 (每格 1 行) ............................................................................... 19
6.4 其他資料行 .......................................................................................................................... 19
6.5 IMU status 位元 ................................................................................................................. 20
6.6 指令 ...................................................................................................................................... 21
7. Binary 協定 (D6 44) ..................................................................................................................... 25
7.1 幀格式 .................................................................................................................................. 25
7.2 訊息表 .................................................................................................................................. 26第 3 頁¶
展開本頁文字(可複製)
7.3 欄位配置 .............................................................................................................................. 27
7.4 頻寬參考 (binary) ............................................................................................................... 27
8. UART2、GPS PPS 對齊、外部觸發、SPI 飛控輸出 ................................................................ 28
8.1 UART2 第二輸出埠 ............................................................................................................ 28
8.2 GPS PPS 對齊 ..................................................................................................................... 29
GPS_PPS_IN 輸入要求 (精度與容許範圍) ............................................................................. 29
8.3 外部觸發 (EXT_TRIGGER) ................................................................................................. 31
8.4 SPI 飛控輸出與 ArduPilot (fw 0.10.0 起)........................................................................ 32
介面規格..................................................................................................................................... 32
封包格式 (128 bytes,little-endian,SPI, ArduPilot) ....................................................... 32
ArduPilot 設定步驟 .................................................................................................................. 33
注意事項..................................................................................................................................... 34
9. MCLR 外部重置參考電路 ............................................................................................................ 35
10. 韌體更新與救援 .......................................................................................................................... 37
11. 疑難排解 ...................................................................................................................................... 38第 4 頁¶
展開本頁文字(可複製)
修訂紀錄
版號 日期 內容 編輯者
發行對外版使用手冊,對應韌體 0.11.2、設定工具
1.1 2026-10-16 Ethan
SparkNavi IMU600 GUI v1.6.1。第 5 頁¶
展開本頁文字(可複製)
1. 產品概述
IMU600-V2 是三顆工業級 6 軸 IMU 加一顆氣壓計的慣性量測模組,透過 UART 或 SPI 輸出三顆
各自的資料、合併後的資料、姿態 (AHRS) 與氣壓,並可作為 ArduPilot 飛控的外接 IMU
(§8.4)。本手冊對應韌體 fw 0.11.2 與設定工具 SparkNavi IMU600 GUI v1.6.1。
項目 規格
感測器 3 × 工業級 6 軸 IMU (陀螺 ±300 °/s、加速度
±156.9 m/s²);1 × 氣壓計
內部取樣率 每顆約 1475 Hz
輸出率 5 / 10 / 25 / 50 / 100 / 200 / 400 / 500 /
1000 Hz (出廠 50 Hz);或外部觸發,每個
EXT_TRIGGER 上升緣一筆 (1 ~ 1000 Hz)。
接 ArduPilot 請用 1000 Hz (§8.4)
氣壓輸出率 10 / 25 / 50 / 100 Hz (出廠 50 Hz)
座標系 機體 FRD (+X 前、+Y 右、+Z 下),三顆已轉
到同一座標
主介面 UART1 3.3 V TTL,8N1,出廠 460800 bps ASCII;
可改 460800 / 921600 / 1500000 /
2000000、binary
第二輸出 UART2 可輸出 binary 或 ASCII 格式、三顆 IMU 原始
數據、IMU 合併融合數據、氣壓計數據等
SPI 飛控介面 SPI3 從機,可設定 ArduPilot IMU 或是一般
SPI 應用:電壓準位 3.3 V,SPI 時脈模式:
Mode 3 / Mode 0,建議 SCK 2 MHz;128
byte 封包 (CRC-16);出廠預設關閉,見 §8.4第 6 頁¶
展開本頁文字(可複製)
項目 規格
飛控軟體支援 ArduPilot (以 Copter 4.7.1 於 SparkNavi
Blue2 飛控驗證),IMU 輸出率須設 1000
Hz;驅動由 SparkNavi 提供
時間同步 GPS_PPS_IN (PPS 上升緣對齊輸出時間格)、
EXT_TRIGGER (外部觸發取樣)
供電 輸入電壓:+5.0 V ±5%
建議工作電壓+5V,可讓飛控直接供電。
韌體更新 加密簽章 .spfw 檔,用 GUI 經 UART1 更新第 7 頁¶
展開本頁文字(可複製)
輸出數據一覽
資料 ASCII 行 Binary id 內容
單顆 IMU 原始 $SPNVIMURAW 0x01 每顆每格一筆:平均
角速度、比力、溫
度、Δθ、Δv、狀態
三顆合併 $SPNVIMU 0x02 剔除異常顆後進行演
算法計算
氣壓 $SPNVBARO 0x03 氣壓 hPa、板溫、標
準大氣高度
姿態 $SPNVAHRS 0x04 roll / pitch / yaw、四
元數
GPS PPS $SPNVPPS 0x05 PPS 鎖定狀態、晶振
誤差
統計 (1 Hz) $SPNVSTAT / 0x10 / 0x11 / 0x12 錯誤計數、頻寬、系
$SPNVFUS / 統狀態
$SPNVSYS第 8 頁¶
展開本頁文字(可複製)
2. 接頭腳位 (J1)
所有對外訊號都在 J1 (Samtec MW-12-03-G-D-130-110,2 × 12 = 24 pin,奇數腳一排、偶數
腳一排)。訊號皆為 3.3 V 邏輯,只有 pin 3 / 4 接 +5.0 V 供電。
※ 圖 1、注意 PIN 1 的位置。
圖 1、IMU600 反面圖第 9 頁¶
展開本頁文字(可複製)
圖 2、IMU600-V2 接腳定義圖
Pin 訊號 方向 (對 說明 Pin 訊號 方向 說明
模組)
1 GND — 地 2 GND — 地
3 +5.0V 電源輸入 模組供電 4 +5.0V 電源輸入 模組供電
5 U1TX 輸出 UART1 6 FC_SPI_C 輸入 SPI 片選
資料 → S (§8.4)
主機 RX第 10 頁¶
展開本頁文字(可複製)
Pin 訊號 方向 (對 說明 Pin 訊號 方向 說明
模組)
7 U1RX 輸入 UART1 8 SCK3IN 輸入 SPI 時脈
指令 (§8.4)
主機 TX
9 U2TX 輸出 UART2 10 SDI3 輸入 SPI
第二輸出 MOSI
埠 (§8.4)
11 U2RX 輸入 目前不使 12 SDO3 輸出 SPI
用,可空 MISO
接 (§8.4)
13 GPS_PPS 輸入 GPS 14 — — 不接
_IN PPS,上
升緣有效
(§8)
15 EXT_TRI 輸入 外部觸 16 — — 不接
GGER 發,上升
緣 (§8)
17 MCLR 輸入 外部重 18 — — 不接
置,低電
位有效
(§9)
19–22 — — 不接
23 GND — 地 24 GND — 地第 11 頁¶
展開本頁文字(可複製)
電氣注意事項
• 供電接 pin 3 / 4 (+5.0 V),地(GND)至少接 pin 1 / 2。板上穩壓產生 3.3 V 給 MCU 與感
測器。
• UART、PPS、EXT_TRIGGER、MCLR 都是 3.3 V CMOS。輸入不要超過 3.3 V;主機是 5
V 邏輯時請加電位轉換晶片。
• UART 接法:模組 U1TX → 主機 RX、模組 U1RX 主機 TX,共地。USB 轉 UART 請選
3.3 V 版、支援 ≥ 921600 bps (如 FT232H / CP2102N)。
• 用不到的輸入 (U2RX、PPS、EXT_TRIGGER、MCLR) 可以空接(浮接);MCLR 板上已有
10 kΩ 上拉。
• SPI (pin 6 / 8 / 10 / 12) 是 SPI 從機介面 (§8.4),出廠關閉 (MISO 高阻抗);不接飛控時請
空接,CS 板上已有內部上拉。第 12 頁¶
展開本頁文字(可複製)
開發板接頭定義
圖 3、開發底板 J3 與 J4 接頭定義圖
J3 J4
圖 4、開發底板正面圖第 13 頁¶
展開本頁文字(可複製)
3. IMU 座標軸 (機體 FRD)
所有輸出 (三顆原始、合併、AHRS) 都在同一個機體座標 FRD:+X 朝前 (Forward)、+Y 朝右
(Right)、+Z 朝下 (Down),右手座標系。
量 正方向 靜置水平時的讀數
ax / ay / az 比力 (加速度計量到的力,含 ax ≈ 0、ay ≈ 0、az ≈ −9.79
重力反作用) 沿 +X / +Y / +Z m/s²
gx (roll rate) 繞 +X 右手旋轉:右側往下 ≈0
gy (pitch rate) 繞 +Y 右手旋轉:前端抬起 ≈0
gz (yaw rate) 繞 +Z 右手旋轉:由上往下看 ≈ 0 (只有零偏與地球自轉分
順時針 量)
roll / pitch / yaw (AHRS) ZYX 歐拉角,機體 FRD → 右滾、抬頭、順時針為正
NED
快速確認方向:板子元件面朝上平放,az 應為 −9.79;把前端抬起,ax 變正、pitch 變正;右側
往下傾,ay 變負、roll 變正;由上往下看順時針轉,gz 為正。GUI 的 3D 模型以紅色箭頭標示
+X (FWD)。
安裝建議
• 模組 +X 對齊載具前方、元件面朝上,此時輸出即載具 FRD。其他安裝方向請在主機端做
旋轉。
• 剛性固定;引擎 / 馬達 / 螺旋槳震動大的載具請加減震,避免加速度瞬間峰值超過量程
(狀態 bit4 飽和,見 §6)。第 14 頁¶
展開本頁文字(可複製)
圖 5、IMU600-V2 機體座標 FRD
4. 快速開始
接上電源與 UART1、打開 GUI 按「連線」,就能看到資料;出廠設定為 460800 bps、ASCII、
50 Hz、三顆原始 + 合併、AHRS 與氣壓全開。
1. 接線:J1 pin 3/4 接 +5 V、pin 1/2 接地;pin 5 (U1TX) 接 USB-UART 的 RX、pin 7
(U1RX) 接 TX。
2. 安裝 GUI:解壓 SparkNavi-IMU600-GUI-v1.6.1.zip,執行 SparkNavi_IMU600.exe。
3. 連線:上方選 COM port、鮑率 460800 → 按「連線」。GUI 自動讀回設定 (CFG) 與裝置
資訊 (INFO),狀態列顯示韌體版本與序號。
4. 確認資料:儀表板的 IMU 1/2/3、合併、AHRS、氣壓計卡片持續更新;靜置水平時 az ≈
−9.79、roll / pitch ≈ 0。
5. 改設定:參數設定頁改「設定值」→「套用變更」。套用只改 RAM,要下次上電仍生效
請按「寫入裝置 (SAVE)」。
6. 錯的鮑率 / 模式連不上:先按「自動偵測鮑率」;仍不行用「開機救援」(§5.3) 回到出廠
值。
不用 GUI 也可以:任何串口終端機 (460800 8N1) 都能看到 ASCII 行,指令格式見 §6。第 15 頁¶
展開本頁文字(可複製)
5. GUI 介面介紹 (SparkNavi IMU600 GUI v1.6.1)
GUI 有三個頁籤:儀表板看資料、參數設定改設定與校正、終端機看原始收發與手打指令;上方
是連線列,「檔案」選單有錄製與韌體更新,「工具」選單有陀螺尋北精靈 (請依照視窗畫面步
驟進行操作)。需要韌體 fw 0.4.2 以上;UART2 / PPS 設定需要 fw 0.8.0 以上;輸出率 200 / 400
/ 500 Hz 需要 fw 0.10.3 以上;SPI3 輸出設定需要 fw 0.10.0 以上。
※ 出廠預設韌體版本為: fw 0.11.2,此版本支援全部功能。
5.1 連線列
元件 功能
連接埠 / 鮑率 選 COM port 與 UART1 鮑率 (出廠 460800)
連線 / 中斷 連線後自動送 CFG,1、INFO,1
自動偵測鮑率 依序以 460800 / 921600 / 1500000 /
2000000 送 PING
狀態列 韌體版本、序號 (SN)、接收速率
● REC 錄製中閃爍 (檔案 → 開始錄製原始資料…,存
成 .bin)
5.2 儀表板
• 左側:AHRS 姿態儀 (HUD) 與 3D 模型。HUD 左框 = IMU 溫度、右框 = 氣壓相對高
度;「AHRS 重置」需靜置 1 秒;「設定航向…」手動給 heading。3D 模型標題列可旋
轉 / 翻轉模型使前方對齊紅色 X。
• 右上方版面畫面 1-IMUx:IMU 1 / 2 / 3、合併、AHRS、氣壓計、系統、裝置。狀態綠
色 = 正常;顏色只看錯誤位元,PPS 標記不算錯誤。
• 右上方版面畫面 2-系統資訊:UART 丟棄 (括號內為 UART2)、CPU、輸出率、GPS PPS
狀態 (NO_SIGNAL / ACQUIRING / LOCKED + 晶振誤差 ppm / HOLDOVER)。系統卡與
錯誤計數需 STAT 開啟。第 16 頁¶
展開本頁文字(可複製)
• 即時圖:角速度 / 加速度圖上方勾選來源 [IMU 1][IMU 2][IMU 3][合併] × 軸向
[X][Y][Z];下方讀數條顯示最新值、平均 μ、標準差 σ (靜置時 σ 即雜訊)。氣壓圖可切 相
對高度 / hPa / 溫度,「高度歸零」只影響顯示。
5.3 參數設定
• 設定表:左欄「裝置目前值」(由 CFG 讀回),右欄「設定值」可編輯;改過的項目以 ●
標橘色。分組:輸出 (RATE / OUT / BARO / BRATE / AHRS / STAT)、介面 (MODE /
BAUD)、合併門檻 (GTH / ATH)、AHRS (AKP / AKI)、UART2 (輸出內容複選 / 格式 / 鮑
率)、GPS PPS 對齊、SPI3 輸出 (用途 / 內容 / 格式 / 時脈模式,§8.4)。
• 套用變更:只送有變更的項目;改 BAUD 時 GUI 收到 ACK 自動跟著切換本機鮑率。
• 寫入裝置 (SAVE):存入 flash,下次上電即為這組設定。恢復出廠 (FACTORY):清除使
用者設定 (校正不清)。
• 開機救援:不知道存了什麼鮑率 / 模式而連不上時使用。按下後 20 秒內把模組斷電再上
電,GUI 在開機 0.5 秒救援窗送 FACTORY,1。
• 裝置資訊:韌體版本、建置旗標、序號、初始化結果。
• UART 頻寬估計:UART1 與 UART2 各一條,≥ 90% 標紅 (會丟資料)。
• 校正:加速度六面校正精靈 (板子六面依序朝上各靜置 4 秒,自動計算並寫入)、合併權
重、寫入校正 (CALSAVE)、清除校正 (CALCLR)。
• IMU 輸出模式 (fw 0.9.0):「外部觸發 EXT_TRIGGER」分組選「連續輸出」或「外部觸
發」,套用後按 SAVE 保留。外部觸發時儀表板系統卡「輸出模式」顯示已收到的觸發
數,詳見 §8.3。
5.4 終端機
• 所有收發解碼成文字 (binary 幀也轉成文字),可依類別過濾;高頻資料行預設不顯示 (勾
「資料行」)。
• 輸入 RATE,100 或 rate 100 都會送成 $SPNVCMD,RATE,100*CS;以 $ 開頭的整行原樣送
出。↑ / ↓ 叫出歷史指令。
• 快捷鍵:INFO / CFG / DBG / PING / STAT now / BOOT (重新啟動)。
5.5 檔案選單
• 開始錄製原始資料…:把收到的 bytes 原封不動存成 .bin,之後可用任何解析器處理。
• 韌體更新…:見 §10。第 17 頁¶
展開本頁文字(可複製)
• 說明 → 語言:繁體中文 / English (重開生效);淺色 / 深色主題。
6. ASCII 協定與指令
出廠輸出為 NMEA 風格的 ASCII 行;指令不論輸出模式一律以 ASCII $SPNVCMD 送到 UART1。
6.1 行格式
項目 規格
行格式 $<body>*<XX>\r\n,body 第一欄為訊息名稱
(SPNV 開頭),欄位以 , 分隔
校驗 XX $ 與 * 之間所有字元逐位元組 XOR,2 位大寫
十六進位 (同 NMEA 0183)
數值 十進位;浮點為固定小數位數
單位 °/s、m/s²、°C、rad、m/s、hPa、µs、s
ts_us 64-bit,開機歸零的微秒,為該筆輸出視窗的
結束時刻;同一時間格的三顆 RAW 與合併行
ts_us 完全相同
解析建議 以 $ 同步、校驗錯整行丟;用第一欄分派;新
版韌體可能在尾端加欄位,不要假設固定欄數
頻寬不足 整行丟棄 (不會送半行),累計在 $SPNVSYS 第
1欄
def spnv_checksum(body: str) -> str:
cs = 0
for ch in body.encode('ascii'):
cs ^= ch
return f"{cs:02X}"
cmd = "SPNVCMD,RATE,100"
ser.write(f"${cmd}*{spnv_checksum(cmd)}\r\n".encode())第 18 頁¶
展開本頁文字(可複製)
6.2 $SPNVIMURAW — 單顆 IMU (每格 3 行)
$SPNVIMURAW,<id>,<ts_us>,<gx>,<gy>,<gz>,<ax>,<ay>,<az>,<temp>,<n>,<status>,<dthx>,<
dthy>,<dthz>,<dvx>,<dvy>,<dvz>,<dt>*XX
# 欄位 單位 說明
1 id — IMU 1 / 2 / 3
2 ts_us µs 視窗結束時刻
3–5 gx gy gz °/s 視窗平均角速度 (4 位
小數)
6–8 ax ay az m/s² 視窗平均比力,含重
力 (4 位)
9 temp °C 感測器溫度
10 n — 這筆包含的原始樣本
數 (50 Hz ≈ 29~30)
11 status bit 0 = 全部正常,見 6.5
12–14 dthx dthy dthz rad 視窗內旋轉向量 Δθ
(含 coning 補償,7
位)
15–17 dvx dvy dvz m/s 視窗內速度增量 Δv
(含 sculling 補償,6
位)
18 dt s 實際積分區間 ≈ 1 /
輸出率
範例 (50 Hz 靜置):$SPNVIMURAW,1,12345680,0.0123,-0.0456,0.0089,0.0210,-0.0150,-
9.7912,31.25,30,0,0.0000043,-0.0000159,0.0000031,0.000420,-0.000300,-0.195824,0.020000*0F第 19 頁¶
展開本頁文字(可複製)
6.3 $SPNVIMU — 三顆合併 (每格 1 行)
$SPNVIMU,<ts_us>,<gx>,<gy>,<gz>,<ax>,<ay>,<az>,<temp>,<dthx>,<dthy>,<dthz>,<dvx>,<d
vy>,<dvz>,<dt>,<n_used>,<flags>*XX
欄位與 RAW 相同 (沒有 id、n、status),另加 n_used (實際採用顆數 1~3) 與 flags:
位元 值 名稱 意義
bit0–2 1/2/4 IMUn_REJECTED IMU 1 / 2 / 3 這格被
排除
bit3 8 SPREAD_WARN 某顆偏離其他顆,提
醒注意
bit4 16 DEGRADED 可用顆數 < 2
bit5 32 INCOMPLETE 這格沒收齊所有顆
bit6 64 SATURATED 至少一顆量程飽和,
數值被截頂
bit7 128 PPS 不是錯誤:這格 ts_us
正好是 GPS PPS 上升
緣
6.4 其他資料行
訊息 格式 說明
$SPNVBARO <ts_us>,<press_hpa>,<temp_ 氣壓 hPa (4 位)、板溫、ISA
c>,<alt_m>,<status> 標準大氣高度 (只供相對高度
參考)、status 0 = 正常。
ts_us 對齊 IMU 時間格
$SPNVAHRS <ts_us>,<roll>,<pitch>,<ya 姿態 deg、四元數 body →
w>,<q0>,<q1>,<q2>,<q3> NED (q0 純量)、對準狀態、
旗標、陀螺零偏估計 °/s、靜第 20 頁¶
展開本頁文字(可複製)
訊息 格式 說明
,<align>,<flags>,<bgx>,<b 止零偏校正進度 zb_s (s,0 ~
gy>,<bgz>,<zb_s> 10)
$SPNVPPS <ts_us>,<edges>,<captures>, GPS PPS 狀態,見 §8.2
<state>,<err_ppm>,<age_ms
>,<align>
$SPNVSTAT <id>,<dry>,<out>,<crc_err>, 每顆 1 Hz 統計;crc_err /
<frame_err>,<spi_timeout>,< spi_timeout / dropped 正常
dropped>,…
為0
$SPNVFUS <outputs>,<rej1>,<rej2>,<rej 合併統計
3>,<incomplete>,<degraded
>,<gth>,<ath>
$SPNVSYS <uart_drop>,…,<rate_hz>,<ou 系統統計 (18 欄);uart_drop
t_mode>,…,<proto_mode>,<b / u2_drop 增加 = 頻寬不足;
aud>,<pps_state>,<u2_drop>
最後兩欄 trig_cnt / trig_rej =
外部觸發數 / 被擋的毛刺
AHRS align:0 = 初始對準中 (開機或 reset 後 1 秒,請靜置);1 = roll / pitch 有效、yaw 為相
對角會漂;2 = 已用 HDG 手動給航向。AHRS flags:bit0 動態中、bit1 零偏估計暫停、bit2 航
向來自 HDG、bit3 本筆不用加速度計、bit4 對準時板子有動 (建議靜置後 AHRS,reset)、bit5 陀
螺零偏已由 ≥ 10 秒的靜止時段估計過 (狀態,不是警告)、bit6 最近 10 秒判定為靜止 (狀態)。
6.5 IMU status 位元
status 是該輸出視窗內所有原始樣本旗標的 OR,意思是「這段時間內有沒有發生過」。判斷資料
好壞請用 status & 0x7F。
位元 值 名稱 意義 資料可信度
bit0 1 SPI_CRC 內部通訊錯誤 不可信
bit1 2 CE 感測器收到無效 仍有效
請求第 21 頁¶
展開本頁文字(可複製)
位元 值 名稱 意義 資料可信度
bit2 4 IDS 感測器內部資料 可疑
狀態異常
bit3 8 S_ERROR 感測器自我診斷 不可信
錯誤
bit4 16 S_SAT 量程飽和 (> 數值被截頂
±300 °/s 或 >
±156.9 m/s²)
bit5 32 S_INIT 感測器初始化中 不可信
(上電後約 250
ms)
bit7 128 PPS 不是錯誤:這筆 可信
ts_us 是 PPS 上
升緣
常見組合:0 正常;16 飽和 (撞擊、劇烈震動);12 感測器錯誤;32 / 44 開機初始化中。合併時
status & 0x7F ≠ 0 的顆該格自動排除。
6.6 指令
格式 $SPNVCMD,<key>,<value>[*XX]\r\n。校驗可省略 (方便手打),有帶就會驗;不分大小寫。
每個指令回 $SPNVACK,<key>,<實際套用值> 或 $SPNVNAK,<key>,<原因>。指令只改 RAM,要保
留請 SAVE,1。
key value 作用 出廠值
RATE 5 / 10 / 25 / 50 / 100 IMU 輸出率 Hz (200 50
/ 200 / 400 / 500 / / 400 / 500 為 fw
1000 0.10.3 起);接
ArduPilot 用 1000第 22 頁¶
展開本頁文字(可複製)
key value 作用 出廠值
OUT raw / fused / both / UART1 送哪些 IMU both
none 行
BARO 0/1 氣壓行關 / 開 1
BRATE 10 / 25 / 50 / 100 氣壓輸出率 Hz 50
AHRS 0 / 1 / reset 姿態行關 / 開;reset 1
= 重新對準 (靜置 1
秒)
HDG −360 ~ 360 手動設定航向 deg —
(align 需 ≥ 1)
AKP / AKI 0 ~ 50 AHRS 增益 Kp / Ki 2.0 / 0.05
GTH / ATH 0 < v ≤ 100 合併剔除門檻 °/s / 0.5 / 0.5
m/s²
STAT 0 / 1 / now 1 Hz 統計關 / 開; 1
now = 立刻送一組
HB 0/1 診斷心跳 $SPNVHB 0
MODE ascii / binary UART1 輸出協定 ascii
(ACK 以舊模式送出)
BAUD 460800 / 921600 / UART1 鮑率 (ACK 以 460800
1500000 / 2000000 舊鮑率送出,主機收
到後再切)
U2OUT raw / fused / ahrs / UART2 輸出內容 raw
baro / stat 用 + 組
合;none;all
U2MODE ascii / binary UART2 協定 binary第 23 頁¶
展開本頁文字(可複製)
key value 作用 出廠值
U2BAUD 115200 / 230400 / UART2 鮑率 460800
460800 / 921600 /
1500000 / 2000000
PPS 0/1 GPS PPS 對齊輸出時 1
間格
TRIG 0/1 IMU 輸出模式:0 = 0
連續輸出、1 = 外部
觸發 (§8.3)
AZB 0/1 AHRS 靜止零偏估計 1
(含 Z 軸):靜止 10 秒
自動校正陀螺零偏
(fw 0.9.1 起)
SPI off / ardupilot / SPI3 從機輸出用途: off
stream off = 關閉 (MISO 高
阻抗)、ardupilot =
給 ArduPilot 的 IMU
封包、stream = 與
UART2 相同內容
(§8.4)
SPIOUT 同 U2OUT stream 模式送哪些資 none
料
SPIMODE ascii / binary stream 模式的格式 binary
SPICK 3/0 SPI 時脈模式 (CPOL / 3
CPHA):3 = Mode
3、0 = Mode 0第 24 頁¶
展開本頁文字(可複製)
key value 作用 出廠值
SAVE 1 目前全部設定寫入 —
flash (期間 IMU 短暫
停止)
FACTORY 1 恢復出廠設定 (校正不 —
清);ACK 後主機改回
460800 ASCII
CFG 1 印目前設定 —
$SPNVCFG +
$SPNVU2 + $SPNVSPI
INFO 1 印版本、重置原因、 —
序號、初始化結果
REINIT 1 重新初始化三顆 IMU —
PING 任意字串 連線測試,原樣回傳 —
BOOT 1 重新啟動 (經 —
bootloader,載入已
存設定)
CAL 1 印目前校正 —
$SPNVCAL
ACAL <imu>,<bx>,<by>,<b 設定加速度校正:a = 無校正
z>,<kx>,<ky>,<kz> (a_raw − b) · k;|b| ≤
2、0.95 ≤ k ≤ 1.05
FWGT g|a,<w1>,<w2>,<w3> 合併權重 (陀螺 / 加速 全1
度),相對值 0 < w ≤
100
CALSAVE 1 校正與權重寫入 flash —第 25 頁¶
展開本頁文字(可複製)
key value 作用 出廠值
CALCLR 1 清除校正 —
讀回設定範例:
$SPNVCMD,CFG,1
$SPNVACK,CFG,1*XX
$SPNVCFG,baud=460800,mode=ascii,rate=50,out=3,stat=1,hb=0,baro=1,brate=50,ahrs=1,gth=0.5
00,ath=0.500,akp=2.000,aki=0.0500,saved=1,fw=0.11.2,trig=0,azb=1*XX
$SPNVU2,out=raw,mode=binary,baud=460800,drop=0,pps=1,pps_state=1,pps_err_ppm=0.000*XX
$SPNVSPI,mode=off,out=none,fmt=binary,ck=3,txn=0,ok=0,short=0,delivered=0,drop=0,…*XX
開機訊息:出貨韌體上電不印任何文字,第一行就是資料;用 INFO,1 索取 $SPNVBOOT (版本) 與
$SPNVRESET (上次重置原因:POR 上電、EXTR(MCLR) 外部重置、SWR 軟體重置、WDTO 看門
狗)。
7. Binary 協定 (D6 44)
$SPNVCMD,MODE,binary 後 UART1 輸出改為二進位幀,頻寬約為 ASCII 的一半;指令仍以
ASCII 送,回覆 (ACK / NAK / INFO) 以 0x7F TEXT 幀送出。單位與位元定義與 ASCII 完全相同。
UART2 出廠就是 binary。
7.1 幀格式
D6 44 | id (1) | len (1) | seq (1) | payload (len) | crc16 (2)
欄位 說明
sync 0xD6 0x44
id 訊息類別 (見 7.2)
len payload 長度 0–255
seq 每個 id 各自 +1 循環,用來偵測掉幀;
UART1 與 UART2 各自計數
payload little-endian;f32 = IEEE-754 單精度;
ts_us = u64第 26 頁¶
展開本頁文字(可複製)
欄位 說明
crc16 CRC-16/CCITT-FALSE (poly 0x1021、init
0xFFFF、不反射、無 xorout),LE,範圍為
id、len、seq、payload;"123456789" →
0x29B1
def crc16_ccitt(data: bytes) -> int:
crc = 0xFFFF
for b in data:
crc ^= b << 8
for _ in range(8):
crc = ((crc << 1) ^ 0x1021) & 0xFFFF if crc & 0x8000 else (crc << 1) & 0xFFFF
return crc
# 驗證:crc16_ccitt(frame[2:5+len]) == int.from_bytes(frame[5+len:7+len], 'little')
7.2 訊息表
id 名稱 對應 ASCII payload Python struct
0x01 IMU_RAW $SPNVIMURAW 68 <BBHQ3f3ff3f3ff
0x02 IMU (合併) $SPNVIMU 68 <Q3f3ff3f3ffBBB
B
0x03 BARO $SPNVBARO 24 <QfffB3x
0x04 AHRS $SPNVAHRS 52 <Q4f3f3fBBH
0x05 PPS $SPNVPPS 24 <QIIiBBH
0x10 STAT $SPNVSTAT 44 <BBBB9IHH
0x11 FUS $SPNVFUS 32 <6Iff
0x12 SYS $SPNVSYS 48 (fw 0.8.0: <7IHBBBBBBIII
40;更舊:36)
0x7F TEXT ACK / NAK / 可變 ASCII 字串 (不含
INFO 等文字 $、*XX)第 27 頁¶
展開本頁文字(可複製)
7.3 欄位配置
0x01 IMU_RAW:imu_id u8、status u8、n u16、ts_us u64、gyro[3] f32 °/s、acc[3] f32
m/s²、temp f32 °C、dth[3] f32 rad、dv[3] f32 m/s、dt f32 s。
0x02 IMU:ts_us u64、gyro[3]、acc[3]、temp、dth[3]、dv[3]、dt (f32)、n_used u8、flags
u8、used_mask u8 (bit n = IMU n+1 有採用)、reserved u8。
0x03 BARO:ts_us u64、press_hpa f32、temp_c f32、alt_m f32、status u8、reserved[3]。
0x04 AHRS:ts_us u64、q[4] f32 (q0 q1 q2 q3,body → NED)、roll / pitch / yaw f32 deg、
gyro_bias[3] f32 °/s、align u8、flags u8、zb_ds u16 (靜止零偏校正進度,單位 0.1 s)。(注
意:順序為先四元數、再歐拉角,與 ASCII 不同。)
0x05 PPS:ts_us u64 (最近合格 PPS 邊緣)、edges u32、captures u32、err_ppb i32 (本地晶
振相對 PPS,+ = 本地快)、state u8、align u8、age_ms u16。
0x10 STAT:imu_id、dry_timeout、dry_pin、isr_cpu_pct (u8)、dry、out、crc_err、
frame_err、spi_timeout、dropped、dcnt_skip、dry_kicks、resync (u32)、isr_us_max、
isr_us_last (u16)。
0x11 FUS:outputs、rej[3]、incomplete、degraded (u32)、gyro_thresh、acc_thresh
(f32)。
0x12 SYS:uart_drop、loops_per_s、uart_resets、pps_cnt、baro_samples、baro_i2c_err、
baro_timeouts (u32)、rate_hz u16、isr_cpu_total_pct u8、out_mode u8 (0 none / 1 raw / 2
fused / 3 both)、baro_stale u8、baro_hz u8、proto_mode u8 (0 ascii / 1 binary)、pps_state
u8、u2_drop u32、trig_cnt u32、trig_rej u32。解析時依 len 判斷 36 / 40 / 48。
7.4 頻寬參考 (binary)
設定 流量 460800 921600
50 Hz both + AHRS ≈ 19 kB/s OK OK
+ BARO
100 Hz both + ≈ 37 kB/s OK OK
AHRS + BARO第 28 頁¶
展開本頁文字(可複製)
設定 流量 460800 921600
200 Hz fused + ≈ 27 kB/s OK OK
AHRS
400 Hz fused + ≈ 54 kB/s 超過 OK
AHRS
500 Hz fused + ≈ 67 kB/s 超過 OK
AHRS
1000 Hz 單顆 raw ≈ 75 kB/s 超過 OK
1000 Hz fused + ≈ 134 kB/s 超過 超過 → 用 1500000 /
AHRS 2000000
460800 bps 實際約 46 kB/s。GUI 參數頁的頻寬估計會在 ≥ 90% 時標紅。
8. UART2、GPS PPS 對齊、外部觸發、SPI 飛控輸出
8.1 UART2 第二輸出埠
UART2 (J1 pin 9 U2TX) 是只輸出的第二個資料埠,適合同時接飛控 / 導航電腦與 GUI。出廠為
binary、三顆 IMU 原始資料 (raw)、460800 bps,上電即輸出。
• 設定一律經 UART1:GUI 參數頁「UART2」分組,或指令 U2OUT / U2MODE /
U2BAUD,再 SAVE,1。U2RX 目前不收指令。
• 輸出內容可複選:raw 三顆 IMU、fused 合併、ahrs 姿態、baro 氣壓、stat 1 Hz 統計 +
PPS 狀態。例:$SPNVCMD,U2OUT,raw+baro。
• 格式與 UART1 完全相同 (ASCII 行或 D6 44 幀);binary seq 自己計數。ACK / NAK /
INFO 等文字只走 UART1。
• 與 UART1 的 OUT / BARO / AHRS / STAT 互不影響,例如 UART1 只送合併給 GUI、
UART2 送三顆 raw 給飛控。
• 頻寬:binary raw 三顆 = 225 byte / 輸出,100 Hz ≈ 22.5 kB/s (460800 OK);1000 Hz
≈ 225 kB/s 超過 2000000 bps,請改送 fused 或降頻。緩衝滿整筆丟棄,累計在
$SPNVSYS 第 16 欄與 GUI 系統卡「UART 丟棄 (U2 n)」。第 29 頁¶
展開本頁文字(可複製)
8.2 GPS PPS 對齊
GPS (或任何 1 Hz 參考) 的 PPS 接到 GPS_PPS_IN (pin 13) 後,IMU 輸出時間格的 0 點會對齊
PPS 上升緣。模組不接收 GPS 時間,只用邊緣;主機把帶 PPS 標記的那一筆對到 GPS 整秒即
可。出廠已開啟 (PPS,1),沒接 PPS 時自動用自由時間格。
• 鎖定後每個 PPS 秒之間剛好輸出 RATE 筆,其中一筆的 ts_us 等於 PPS 上升緣時間戳;該
筆 $SPNVIMURAW status bit7 = 1、$SPNVIMU flags bit7 = 1。
• 每秒以量到的 PPS 間隔修正本地晶振誤差 (格點間隔 = 量到的 1 s / RATE),晶振的數十
ppm 偏差不會累積。err_ppm 即此偏差。
• ts_us 仍是模組自己的開機時鐘;PPS 只決定「在哪個時間點切輸出視窗」。
• 鎖定那一刻時間格會跳一次相位 (最多一個輸出週期),該筆 dt 較短或較長;之後連續。
• 電氣:3.3 V CMOS,上升緣有效,內部下拉,不要超過 3.3 V。脈衝寬度 ≥ 1 µs (GPS 一
般 100 ms)。
GPS_PPS_IN 輸入要求 (精度與容許範圍)
項目 要求
頻率 / 週期 1 Hz,相鄰兩個上升緣的間隔必須在 1 s ± 1000 ppm 內 (0.999 ~
1.001 Hz,即 999 ~ 1001 ms)。GPS 模組的 PPS 沒有問題;MCU 軟
體延時、一般信號產生器、PC 定時產生的 1 Hz 常常不夠準
抖動 每個間隔都必須在上述範圍內。任何一次超出就重新取得,連續 2 個合
格間隔才會鎖定
鎖定 連續 2 個合格 1 s 間隔 → state 由 2 (ACQUIRING) 變 3 (LOCKED)
漏脈衝 漏掉 1 ~ 9 個脈衝仍可沿用相位 (間隔為 k 秒 ± k × 1000 ppm,k = 2
~ 10);失去 PPS 超過 1.5 s 進入 HOLDOVER
雜訊 間隔短於 1 s − 1000 ppm 的邊緣視為毛刺丟棄,不影響狀態;captures
− edges 為被擋掉的次數
量測解析度 模組 50 MHz 時脈擷取邊緣,解析度 20 ns;err_ppm 為本地晶振相對
PPS 的偏差 (一般數十 ppm 內)第 30 頁¶
展開本頁文字(可複製)
提示:$SPNVPPS 只在「合格邊緣」或「狀態改變」時送出 (UART1 需 STAT,1)。$SPNVSYS 第 7
欄 pps_cnt 每秒增加、但第 15 欄 pps_state 一直是 2,代表邊緣有進來但間隔不合格,請用示波
器量 PPS 的實際頻率 (範例:產生器標示 1 Hz 但實測 993.83 mHz,約 6200 ppm 偏差,不會鎖
定)。
state 名稱 說明
0 OFF PPS,0:自由時間格
1 NO_SIGNAL 沒有合格 PPS (沒接),用自由
時間格
2 ACQUIRING 有邊緣,尚未連續 2 次落在 1
s ± 1000 ppm
3 LOCKED 對齊中
4 HOLDOVER 曾鎖定,> 1.5 s 沒有 PPS:
照最後的間隔外推;PPS 回來
立即恢復 LOCKED
$SPNVPPS,<ts_us>,<edges>,<captures>,<state>,<err_ppm>,<age_ms>,<align> 在每個合格邊緣
與狀態改變時送出 (UART1 需 STAT,1;UART2 需 U2OUT 含 stat)。例:
$SPNVPPS,1234000000,58,58,3,12.345,0,1*XX。
圖 6、PPS 對齊時序 · RATE 5 Hz第 31 頁¶
展開本頁文字(可複製)
帶 bit7 的那一筆 ts_us 就是 PPS 上升緣,主機把它對到 GPS 整秒,其餘各筆依序往後推 1 /
RATE。
8.3 外部觸發 (EXT_TRIGGER)
IMU 有兩種輸出模式,用 $SPNVCMD,TRIG,0|1 或 GUI 參數頁「IMU 輸出模式」切換,SAVE,1 後
上電即為該模式(fw 0.9.0 起)。
模式 TRIG 上電後 每筆輸出 EXT_TRIGGER
連續輸出 0 自動依 RATE 輸 一個 RATE 時間 忽略
(Continuous, 出 格
出廠)
外部觸發 1 不輸出,等觸發 兩次觸發之間 每個上升緣輸出
(Trigger) 一筆
外部觸發模式的行為:
• 第一個上升緣只是起點,不輸出;之後每個上升緣輸出一筆(三顆 $SPNVIMURAW +
$SPNVIMU + $SPNVAHRS,仍依 OUT / AHRS / U2OUT 開關)。外部送 100 Hz 就輸出
100 筆。
• 該筆 ts_us = 觸發上升緣的時間戳;Δθ / Δv = 上一個觸發到這個觸發之間的完整積分,dt
= 兩次觸發的間隔。逐筆相加不重複、不漏,觸發頻率不必是 RATE 的倍數。
• 輸出延遲:觸發後約 0.7 ms(一個原始樣本)加上處理與傳輸時間。
• 建議頻率 1 ~ 1000 Hz。間隔小於 0.5 ms 的邊緣當毛刺丟棄;超過約 10 秒沒有觸發,下
一個觸發重新當起點;間隔超過 1 秒時 AHRS 不更新。
• RATE 在此模式不影響 IMU 輸出;氣壓計照 BRATE 自己輸出;PPS 對齊不作用。頻寬請
以觸發頻率估算。
• 電氣:3.3 V CMOS,上升緣有效,內部下拉(沒接線不會誤觸發)。觸發源請用推挽 3.3
V 輸出、脈衝寬度 ≥ 1 µs,不要超過 3.3 V。
• 確認:$SPNVCFG 的 trig=;$SPNVSYS 第 17 / 18 欄 trig_cnt(已採用的觸發數)/ trig_rej
(被丟掉的毛刺);GUI 系統卡「輸出模式」。第 32 頁¶
展開本頁文字(可複製)
8.4 SPI 飛控輸出與 ArduPilot (fw 0.10.0 起)
J1 pin 6 / 8 / 10 / 12 是 SPI 從機介面:IMU600 為從機,飛控 (或其他主機) 為主機,以固定週
期讀取封包。封包含合併後的 Δθ / Δv 與三顆 IMU 各自的 Δθ / Δv,可直接作為 ArduPilot 飛控
的外接 IMU。出廠為關閉 (MISO 高阻抗),用 SPI 指令或 GUI 參數頁「SPI3 輸出」開啟,並
SAVE,1 保存。
ArduPilot 請把 IMU 輸出率設為 1000 Hz。ArduPilot 的起飛前檢查要求陀螺後端速率不低於主
迴圈速率的 1.8 倍 (預設 400 Hz 主迴圈需 720 Hz 以上),200 / 400 / 500 Hz 會出現 PreArm:
Gyro n rate 400Hz < loop rate*1.8 720Hz 而無法解鎖。200 / 400 / 500 Hz 適用於 UART 輸出或其
他主機。
介面規格
項目 規格
電氣 3.3 V;CS 低態有效 (模組內部上拉,飛控沒上電時不會浮接);MOSI
未使用,主機送 0;SPI 關閉時 MISO 高阻抗
時序 Mode 3 (出廠,SPICK,3) 或 Mode 0 (SPICK,0);MSB first;建議 SCK 2
MHz (已用 ArduPilot 驗證)
讀取 每次 CS 低態讀 128 bytes;讀滿才算讀走,讀不滿下一次 CS 重給同一
包;讀超過 128 bytes 補 0。沒有 DRDY 腳,主機以固定週期 (建議輸
出週期的 0.9 倍) 讀取,pending > 0 時可立即再讀
佇列 16 包 (1000 Hz 時 16 ms);主機沒讀走時丟最舊的
封包格式 (128 bytes,little-endian,SPI, ArduPilot)
offset 型別 內容
0 u8 × 2 0x53 0x4E ("SN")
2 u8 版本 = 1
3 u8 類型:0 = 空 (沒有新資料)、1 = IMU、2 = 串流第 33 頁¶
展開本頁文字(可複製)
offset 型別 內容
4 u16 seq:IMU 包為輸出時間格序號 (每格 +1);主機以
seq 偵測漏包,重複 seq 應忽略
6 u8 pending:這包之後還排著幾包
7 u8 used_mask:bit n = IMU n+1 參與合併
8 u64 ts_us:時間格結束時刻 (µs,與 UART 輸出同一時間
軸;PPS 對齊、外部觸發規則相同)
16 f32 dt (s)
20 f32 × 3 + f32 × 3 合併 Δθ (rad) / Δv (m/s),機體 FRD
44 / 68 / 92 各 f32 × 6 IMU 1 / 2 / 3 各自的 Δθ[3]、Δv[3];該顆這格缺席時
全 0 且 status = 0xFF
116 i16 × 3 IMU 1 ~ 3 溫度 (0.01 °C)
122 u8 × 3 IMU 1 ~ 3 status (同 §6.5,bit7 = PPS 標記)
125 u8 合併 flags (同 §6.3)
126 u16 CRC-16/CCITT-FALSE,範圍 byte 0 ~ 125 (與 §7.1
同一個 CRC)
stream 模式 (類型 2):byte 7 為有效長度 (0 ~ 118),byte 8 起依序接起來就是與 UART2 相同的
資料流 (SPIOUT 選內容、SPIMODE 選 ascii / binary),用 §6 / §7 的解析方式處理即可。
ArduPilot 設定步驟
步驟 設定
1. IMU600 GUI 參數設定頁「SPI3 輸出」用途選 ArduPilot、時脈模式選 3,輸出率選
1000 Hz,按「套用變更」後「寫入裝置 (SAVE)」;或指令 SPI, ArduPilot、
SPICK,3、RATE,1000、SAVE,1第 34 頁¶
展開本頁文字(可複製)
步驟 設定
2. UART1 同時接 GUI 時,1000 Hz 的 ASCII 三顆資料遠超過 UART1 頻寬 (uart_drop
會增加、儀表板速率顯示不準,但不影響 SPI);接飛控使用時建議
OUT,none、AHRS,0、U2OUT,none,需要看資料時再暫時打開
3. 飛控韌體 使用 SparkNavi 提供的 ArduPilot 驅動 (ArduPilot Copter 4.7.1,板型
SparkNavi-Blue2-IMU600)。SPI 時脈 2 MHz、Mode 3、獨立片選;
IMU600 是飛控的第三顆 IMU
4. 飛控參數 EK3_IMU_MASK = 7:三顆 IMU 都給 EKF3 使用 (位元 0 / 1 / 2 = IMU 1 / 2 /
3,每顆各跑一個 EKF 核心)。ArduPilot 預設是 3,只用前兩顆,IMU600
(IMU 3) 不會進 EKF。SparkNavi 板型的預設參數已設為 7
5. 設為優先 EK3_PRIMARY = 2:EKF 核心與 IMU 的編號從 0 開始,Blue2 內建的兩顆是
IMU (選用) 0、1,IMU600 是 2,設 2 就讓 IMU600 成為第一優先 (預設 0 = 內建第一
顆)。EKF3 以它為主核心,姿態、速度、位置與控制迴圈使用的陀螺都跟著
主核心。需要 EK3_IMU_MASK 含 IMU600 (= 7) 且 INS_USE3 = 1。未解鎖時
會固定用你指定的核心;飛行中若主核心的狀態明顯比其他核心差,EKF3 仍
會自動切換到較好的核心,這是安全機制,請不要用 EK3_OPTIONS 關閉。若
飛行中發生切換,地面站訊息會出現 EKF3 lane switch n。
6. 校正 在 Mission Planner 做加速度計六面校正 (三顆 IMU 一起校)。IMU600 內建
的六面校正 (§5.3) 與 ArduPilot 的校正只做其中一邊,之後若改用 GUI 校
正,ArduPilot 的要重做
7. 確認 Messages 出現 IMU600 found, 1000 Hz;參數出現 INS_ACC3_ID /
INS_GYR3_ID;靜置水平時 Accel3 Z 約 −1000 mG、X / Y 約 0,轉動方向與
IMU 1 / 2 一致;EKF3 對準後 HUD 顯示 Ready to Arm
注意事項
• ArduPilot 驅動由 SparkNavi 提供,尚未併入 ArduPilot 主線。
• 偶發的 SPI 讀取錯誤 (CRC 錯) 由驅動自動處理 (模組重送該包),不會在地面站顯示;只有
短時間內大量錯誤才會顯示 IMU600: SPI link errors。第 35 頁¶
展開本頁文字(可複製)
• IMU600 若由飛控的 5 V 供電,飛控重新開機時 5 V 可能短暫中斷;模組開機會先等電源
穩定,且 SPI 錯誤持續時自動重新初始化 IMU (fw 0.10.1 起,$SPNVHEAL 訊息)。
• 檢查 SPI 狀態:CFG,1 的 $SPNVSPI 中 txn (CS 次數) 與 delivered (被讀走的資料包) 應持續
增加,飛控開始讀取之後 drop 不應再增加。
9. MCLR 外部重置參考電路
把 J1 pin 17 (MCLR) 拉低再放開,模組就硬體重置。板上已有 10 kΩ (R4) 上拉到 3.3 V,所以客
戶端只需要「拉低」的元件,不要主動驅動高電位。
建議做法 (擇一):
方式 接法 適用
A. 按鈕 MCLR → R1 (470 Ω) → 常開 手動重置、測試治具
按鈕 → GND
B. N-MOSFET 開汲極 (建議) MCLR → R1 (100–470 Ω) → 主機 MCU / 飛控程式控制重
Q1 汲極 (2N7002 或同級), 置;主機是 3.3 V 或 5 V 都可
源極接 GND;主機 GPIO → 用
R2 (100 Ω) → 閘極,閘極加
R3 (100 kΩ) 下拉
C. 主機開汲極 GPIO MCLR → R1 (470 Ω) → 主機 主機為 3.3 V 且 GPIO 支援
設為 open-drain 的 GPIO open-drain第 36 頁¶
展開本頁文字(可複製)
圖 7、MCLR 接法參考圖
MCLR 外部重置參考電路 · 按鈕或 MOSFET
板上 R4 負責上拉;客戶端只經 R1 把 pin 17 拉到地。B 案中主機 GPIO 輸出高電位 = 重置,低
電位 = 正常執行。
設計要點
• 串聯電阻 R1 (100–470 Ω):限流並隔離外部連線的 ESD / 雜訊,必要。
• 不要用 5 V 驅動 MCLR,也不要用 push-pull 輸出驅動高電位;放開時交由板上 10 kΩ
上拉。
• R3 閘極下拉:主機上電中 / GPIO 浮接時保持 Q1 關閉,避免模組被一直重置。
• 脈衝寬度:拉低 ≥ 10 µs 即可 (建議 1–10 ms);放開後模組重新開機。不要長時間保持低
電位,否則模組一直停在重置。
• 電容 (選用):連線長或雜訊大時,可在客戶端 R1 外側對地加 1–10 nF 濾波;不要直接在
MCLR 上加大電容。
• 連線超過約 30 cm 或會接觸外界時,可在客戶端加 3.3 V TVS。
• 不使用外部重置時 pin 17 空接即可。
重置後的行為第 37 頁¶
展開本頁文字(可複製)
• 放開後 bootloader 先等約 120 ms,再啟動主程式、初始化 IMU (約 250 ms),接著恢復
輸出。剛開機的幾筆 status 可能帶 32 (初始化中)。
• 重置後載入 flash 中已 SAVE 的設定;只用指令改、未 SAVE 的設定會回到已存值。
• ts_us 重新從 0 開始;AHRS 重新對準 (請靜置 1 秒)。
• $SPNVCMD,INFO,1 的 $SPNVRESET 會顯示 EXTR(MCLR),可確認是外部重置。
• 不需要硬體重置時,也可用指令 $SPNVCMD,BOOT,1 (或 GUI 終端機「BOOT (重新啟
動)」) 軟體重開。
10. 韌體更新與救援
韌體以 SparkNavi 提供的加密簽章 .spfw 檔發佈,用 GUI 經 UART1 更新;參數設定與六面校正
存在另一個 flash 區,更新不會清掉。
一般更新
1. GUI 連線到模組 (任何鮑率 / 模式皆可)。
2. 檔案 → 韌體更新… → 選 .spfw。視窗顯示檔案版本、適用硬體、打包時間與裝置目前版
本。
3. 按「開始更新」。模組重開進入 bootloader,GUI 以 460800 傳送 (進度條),驗證通過
後自動回到主程式並重新連線。
4. 確認狀態列 / 裝置資訊的韌體版本為新版。
救援更新 (更新中斷、斷電,模組停在 bootloader、沒有任何輸出)
1. GUI 保持「中斷連線」狀態,選好 COM port。
2. 檔案 → 韌體更新… → 選 .spfw → 「救援更新」。
3. 30 秒內把模組斷電再上電 (或用 MCLR 重置)。GUI 在開機窗內接手並完成更新。
錯誤訊息 原因 處理
金鑰不符 檔案不是給這批模組的 向 SparkNavi 索取正確
的 .spfw
硬體不符 檔案是其他產品的 同上第 38 頁¶
展開本頁文字(可複製)
錯誤訊息 原因 處理
驗證失敗 檔案損壞或被修改 重新下載檔案,用救援更新再
做一次 (模組會停在
bootloader 等待)
只能用 PICkit 燒錄 模組是開發版韌體 聯絡 SparkNavi
更新過程中請不要拔線、斷電;若發生了也不會變磚,用救援更新即可。
11. 疑難排解
現象 可能原因 處理
連不上、沒有任何資料 TX / RX 接反、沒共地、鮑率 檢查接線 (§2);GUI 「自動偵
不對 測鮑率」
收到亂碼 模組存成 binary 或其他鮑率 GUI 可直接解 binary;終端
機軟體請先 MODE,ascii
改了設定重開後又回去 只套用沒存 按「寫入裝置 (SAVE)」或送
SAVE,1
完全不知道存了什麼設定 — 參數頁「開機救援」→ 20 秒
內斷電再上電,回到出廠值
$SPNVSYS uart_drop 一直增 UART1 頻寬不足 降 RATE、改 OUT,fused、改
加 binary 或提高 BAUD
UART2 丟棄 (U2 n) 增加 UART2 頻寬不足 減少 U2OUT 內容、提高
U2BAUD 或降 RATE
status = 16 或合併 量程飽和 撞擊 / 甩動屬正常;運轉中持
SATURATED 續出現請加減震
status = 32 / 44 感測器初始化中 開機後幾筆屬正常;運轉中出
現請檢查供電是否掉壓第 39 頁¶
展開本頁文字(可複製)
現象 可能原因 處理
status = 8 / 12 感測器自我診斷錯誤 REINIT,1;仍持續請聯絡
SparkNavi
status bit7 (128) PPS 標記,不是錯誤 判斷資料好壞用 status & 0x7F
AHRS yaw 慢慢漂 沒有磁力計 / GPS 航向參考 正常;用 HDG 手動給航向,
或主機端融合外部航向
AHRS flags bit4 開機對準時板子在動 靜置後 AHRS,reset
PPS 一直 NO_SIGNAL 沒接、電位不對、下降緣有效 確認 3.3 V 、上升緣有效、每
的 PPS 秒一個
PPS 一直 ACQUIRING PPS 間隔不穩 (不在 1 s ± 確認 GPS 已定位、PPS 來源
1000 ppm) 穩定;檢查接地與雜訊
模組一直沒反應、沒輸出 MCLR 被拉低或韌體更新中斷 檢查 pin 17 外部電路;用
「救援更新」(§10)
$SPNVHALT 模組認證失敗 請聯絡 SparkNavi,提供
INFO,1 的輸出
外部觸發模式下沒有 IMU 輸 沒有觸發訊號、只來了一個觸 看系統卡「輸出模式」觸發數
出 發 (第一個是起點)、電位不到 有沒有增加;確認 pin 15 是
3.3 V 3.3 V 上升緣;不用觸發時改
回 TRIG,0
觸發數比輸出多、trig_rej 增 觸發線上有彈跳或毛刺 (間隔 縮短連線、共地,觸發源用推
加 < 0.5 ms) 挽輸出
ArduPilot:PreArm: Gyro n IMU600 輸出率不是 1000 Hz RATE,1000 後 SAVE,1 (§8.4)
rate 400Hz < loop rate*1.8
720Hz
ArduPilot 找不到 IMU600 SPI 沒開、接線錯、時脈模式 SPI, ArduPilot、SPICK,3、
(Messages 沒有 IMU600 不符 SAVE,1;檢查 pin 6 / 8 / 10 /第 40 頁¶
展開本頁文字(可複製)
現象 可能原因 處理
found 或出現 IMU600 12 與共地;看 $SPNVSPI 的
probe: …) txn 有沒有增加
ArduPilot:IMU600: SPI is in SPI 設成 stream 改 SPI, ArduPilot
stream mode
GUI 在 400 / 1000 Hz 時 UART1 頻寬不足 (OUT both 不影響 SPI。接飛控時
uart_drop 增加、輸出率顯示 / AHRS 全開) OUT,none、AHRS,0;要看資
不準 料請用 binary、1500000 以
上鮑率 (§7.4)
pps_cnt 每秒增加,但 PPS 來源頻率不準:相鄰邊緣 用示波器量實際頻率並調到
pps_state 一直是 2 間隔超出 1 s ± 1000 ppm (例 1.000 Hz,或改用 GPS PPS
(ACQUIRING)、沒有 如輸入的 PPS 實際:993.83 (§8.2);STAT,1 後看
$SPNVPPS 或 bit7 mHz,IMU 不接受這種精度) $SPNVPPS
向 SparkNavi 回報問題時,請附上 $SPNVCMD,INFO,1 與 $SPNVCMD,CFG,1 的回覆,以及用 GUI
「開始錄製原始資料」錄的 .bin 檔。原始文件:User Manual v1.1 Source Pages · PDF 頁 1–40







































