---
# System prepended metadata

title: nRF52832 從零開始建構 ANT+ 教學

---



---

**1. 先把 3 個名詞分清楚**
1. `ANT`  
這是底層無線通訊協定，本質上是低功耗 2.4 GHz 無線協定，強調低功耗、固定時槽、裝置間穩定資料交換。ANT 網路中的節點可依 channel 角色互動，且同一節點可在不同 channel 擔任不同角色。[ANT Basics](https://www.thisisant.com/developer/ant/ant-basics)

2. `ANT+`  
這不是另一種無線電，而是建立在 `ANT` 之上的「互通裝置規格」。  
重點不是只有「能傳資料」，而是「別人的碼表、手錶、感測器能看懂你的資料格式」。  
例如心率、踏頻、功率、速度等，都有既定的 device profile 與 data page 定義。[ANT+ Device Profiles](https://www.thisisant.com/developer/ant-plus/device-profiles)

3. `SoftDevice`  
這是跑在 nRF52 上的無線協定堆疊。  
對 nRF52832 而言，你不是自己從頭寫 ANT/BLE MAC/Link Layer，而是把對應的 SoftDevice 先燒進晶片，再由 application 呼叫 API。

一句話：
- `ANT` = 協定
- `ANT+` = 互通標準與 profile
- `SoftDevice` = 在晶片上實作這些無線能力的協定堆疊

---

**2. nRF52832 常見 SoftDevice 組合**
對 `nRF52832`，最常見、最重要的是這三個觀念：

1. `S212`  
`ANT only`。  
如果你的產品只做 ANT / ANT+，不需要 BLE，這是最精簡的做法。官方把 S212 定義為 ANT protocol stack，支援多種 network topology、最多 15 個 channel。[Nordic S212](https://www.nordicsemi.com/Products/Development-software/S212-ANT)

2. `S332`  
`ANT + BLE concurrent`。  
如果你要同時做 ANT+ 與 BLE，例如：
- ANT+ 對碼表
- BLE 對手機或 DFU  
那通常會選 `S332`。THIS IS ANT 也明確把它列為 nRF52832 的 `ANT / BLE SoftDevice`。[THIS IS ANT nRF52832](https://www.thisisant.com/developer/components/nrf52832/)

3. `S132`  
`BLE only`。  
這是 Nordic 常見的 BLE stack，但**不支援 ANT**。  
所以如果你未來要加 ANT+，不能只停在 S132。

新手最實用的選擇原則：
- 只做 ANT+：`S212`
- ANT+ 和 BLE 都要：`S332`
- 只做 BLE：`S132`

補充：  
THIS IS ANT 的 nRF52 相容表也顯示，nRF52 生態還有 `S312 / S313 / S340` 等 ANT/BLE 組合，但對 `nRF52832` 入門實作來說，最常碰到、也最值得先搞懂的就是 `S212` 與 `S332`。[Compatibility Chart](https://www.thisisant.com/developer/components/nrf52832/)

---

**3. ANT+ 和 BLE 的差別，要怎麼專業地理解**
很多新手會把它們都當成「2.4G 無線」，但工程上差很多。

**3.1 協定定位不同**
- `BLE` 是通用型近距離裝置通訊協定，手機支援度高，適合 App 互動、設定、升級、資料同步。
- `ANT+` 是以運動/健身/感測器互通為核心的標準化生態，重點是 display 與 sensor 的互通性。

**3.2 通訊模型不同**
- `BLE` 核心是 `connection-oriented GATT` 思維，雖然也有 advertising / broadcaster 模式，但大多數產品最終會走 service/characteristic。
- `ANT/ANT+` 核心是 `channel + message/page` 思維。應用通常先配置 channel，再按 profile 規則周期送 page 或接收 page。

**3.3 生態系不同**
- `BLE` 最大優勢是手機、平板、PC 生態完整。
- `ANT+` 最大優勢是運動器材互通，例如碼表、心率帶、功率計、跑步機、訓練台。

**3.4 互通方式不同**
- `BLE` 就算兩邊都用 BLE，也不保證互通，因為你還要看 service、UUID、payload 定義。
- `ANT+` 若雙方都正確實作同一個 device profile，互通性通常更直接。  
這也是 ANT+ 的核心價值。

**3.5 功耗與資料節奏**
- `ANT+` 很適合固定頻率、週期性、小封包感測資料。
- `BLE` 比較適合手機互動、設定、配對、升級、較彈性的資料交換。

**3.6 驗證方式不同**
- `BLE` 常用手機掃描、GATT 工具、手機 App 驗證。
- `ANT+` 通常用碼表、錶、ANT USB dongle、或另一個 ANT receiver 驗證。

一句話總結：
- 你要「手機相容」時，多半靠 BLE
- 你要「運動裝置互通」時，多半靠 ANT+

---

**4. ANT 與 ANT+ 在實作上的關鍵差異**
這點很重要，很多人一開始會混用。

1. `ANT 自訂協定`  
你可以自己定義資料格式、頻率、channel 行為。  
這適合封閉式系統或自家設備互通。

2. `ANT+ 標準 profile`  
如果你的產品要被碼表或手錶當成標準心率帶、功率計、踏頻器，就必須依 profile 規範送資料。

另外，THIS IS ANT 的授權頁也提醒：
- 非 ANT+ 產品，不應使用 `ANT+ network key` 或 `2457 MHz` 的 ANT+ 頻率
- 若要做真正可互通的 ANT+ 裝置，需遵守 ANT+ profile 與相關規則  
來源：[Licensing](https://www.thisisant.com/developer/ant/licensing/), [Downloads reminder](https://www.thisisant.com/developer/resources/downloads), [Network key FAQ](https://www.thisisant.com/developer/resources/tech-faq/where-can-i-find-the-ant-network-key-and-the-ant-fs-network-key)

工程上可簡化為：
- 只想自家兩台機器互傳：可做 `ANT`
- 想讓碼表直接認得你：要做 `ANT+`

---

**5. ANT+ 金鑰、授權與申請流程**
如果你的目標是做出能被碼表、手錶、心率帶等商用品辨識的 `ANT+` 裝置，只開啟 `ANT SoftDevice` 還不夠，還需要正確理解兩種 key。

**5.1 兩種 key 要分清楚**
1. `ANT license key`  
用途：讓支援 ANT 的 SoftDevice 能啟動。  
例如 `sd_softdevice_enable(...)` 在使用 ANT SoftDevice 時會需要它。

2. `ANT+ network key`  
用途：讓裝置加入 `ANT+` 網路，並以標準 `ANT+ device profile` 與其他裝置互通。  
如果你要做標準 `Heart Rate Monitor`、`Speed`、`Cadence`、`Power` 等裝置，真正與碼表互通有關的是這個 key。

**5.2 申請方式**
1. 到 [THIS IS ANT](https://www.thisisant.com/) 官網註冊帳號。
2. 申請成為 `ANT+ Adopter`。
3. 以 `ANT+ Adopter` 身分登入後，到下載與技術文件頁面取得：
   - `ANT+ network key`
   - 相關 profile 文件
   - 必要設計工具或參考資料

**5.3 實作原則**
1. 如果只是做自家設備間的自訂 `ANT` 通訊，不要使用 `ANT+ network key`。
2. 如果要做能被商用品碼表辨識的正式 `ANT+` 裝置，就要使用正確的 `ANT+ network key`。
3. 不要把真實 `ANT+ network key` 寫進公開 repo、公開教學或對外文件。
4. 內部教學文件建議只寫：
   - `請向官方申請 ANT+ network key`
   - `將 key 填入 ant_key_manager_config.h`
   不公開實際數值。

**5.4 在專案中的落點**
以 nRF5 SDK 為例，通常會在：
`components/ant/ant_key_manager/config/ant_key_manager_config.h`

設定：
```c
#define ANT_PLUS_NETWORK_KEY { /* 由官方取得後填入 */ }
```

**5.5 重要提醒**
截至 **2026 年 3 月 24 日**，THIS IS ANT 官方下載頁仍寫明：
- `ANT+` 標記內容受 Adopter agreement 約束
- 某些下載需登入後才能取得
- `ANT+ membership`、`product certification`、`engineering support` 已於 **2025 年 6 月 30 日** 結束  
所以實際可下載與可申請內容，請以你登入官網後看到的資訊為準。

參考來源：
- [ANT Licensing](https://www.thisisant.com/developer/ant/licensing/)
- [ANT+ Network Key FAQ](https://www.thisisant.com/developer/resources/tech-faq/where-can-i-find-the-ant-network-key-and-the-ant-fs-network-key)
- [Downloads](https://www.thisisant.com/developer/resources/downloads/)

---

**6. 從零開始的正確路線**
新手最穩的流程不是直接做整機，而是分 4 階段。

**階段 1：先選角色**
先決定你是：
- `TX` 發送器
- `RX` 接收器

入門最建議從：
`ANT+ HRM TX`
開始。  
因為最容易用碼表驗證。

**階段 2：先選 SoftDevice**
- 純 ANT+ 感測器：先用 `S212`
- 如果未來一定要手機設定/DFU：直接用 `S332`

**階段 3：先跑 SDK 範例**
不要從空白專案開始。  
先找對應 SDK 的 ANT 範例，先讓它：
- 能編譯
- 能燒錄
- 能送固定資料

**階段 4：最後再整合 BLE / DFU / 客製功能**
順序建議：
1. `SoftDevice + App`
2. 驗證 ANT+ 能收發
3. 再加 Bootloader
4. 再加 DFU
5. 最後再加自家邏輯

---

**7. 你要準備哪些軟體**
最基本：
1. `SEGGER Embedded Studio`
2. `SEGGER J-Link Software`
3. `nRF5 SDK`
4. `對應的 ANT SoftDevice`
5. `RTT Viewer`
6. 如果要 DFU，再加 `nrfutil`
7. 如果要驗證 BLE，再加 `nRF Connect`

如果同時有外部 MCU 或其他平台，再補對應編譯器與下載器。

---

**8. 專案建立時最關鍵的技術點**
**8.1 SoftDevice 與專案要匹配**
這是第一個大坑。  
你專案如果是照 `S332` 配，但晶片裡刷的是 `S132`，很容易：
- 編譯過
- 執行直接 fault

所以一定要一致：
- header / include
- preprocessor define
- 實際燒入的 SoftDevice

**8.2 `sdk_config.h` 要開對模組**
常見會影響 ANT+ 的包含：
- softdevice handler
- timer
- log
- queue
- BLE/ANT observer
- 若同時有 BLE，還有 GATT queue 等

**8.3 `LFCLK` 要正確**
低頻時鐘設定錯，常見現象是：
- `sd_softdevice_enable()` 失敗
- bootloader 廣播不起來
- 一開機就 fault

**8.4 舊版 SDK 要注意版本綁定**
如果你用的是歷史專案或舊 SDK 範例，實務上通常要讓：
- `SDK 版本`
- `SoftDevice 版本`
- `headers`
- `project memory map`
彼此匹配。  
若沿用既有工程，最好保持同一組版本組合，不要隨意混搭。[THIS IS ANT nRF52 page](https://www.thisisant.com/developer/components/nrf52832/), [Nordic DevZone guide](https://devzone.nordicsemi.com/guides/short-range-guides/b/getting-started/posts/introduction-to-nordic-nrf5-sdk-and-softdevice)

---

**9. ANT+ TX 與 RX 在程式結構上的差異**
**TX**
你要處理的是：
- channel config
- profile init
- page 組包
- 定期送出資料

適合：
- 心率感測器
- 踏頻器
- 功率計
- 自訂 broadcaster

**RX**
你要處理的是：
- 掃描/開 channel
- 接收資料 page
- 解析 profile payload
- 轉成內部狀態

適合：
- 顯示器
- 資料匯總器
- 閘道器

新手建議先做 TX，因為成功條件最單純：
- 送固定值
- 接收端看到固定值

---

**10. 驗證 ANT+ 是否真的成功**
如果你做 `ANT+ HRM TX`，驗證流程建議：

1. 板子上電
2. 確認 profile/channel 已啟動
3. 用 RTT 看有沒有持續送包
4. 用碼表新增 `Heart Rate` 感測器
5. 看碼表有沒有穩定顯示例如 `60 bpm`

如果有：
- log 在送
- 碼表也收得到  
就代表 TX 成功

注意：
不要用一般手機藍牙頁去找 ANT+ 裝置。

---

**11. 什麼時候該用 S212，什麼時候該用 S332**
**選 S212 的情境**
- 只需要 ANT / ANT+
- 不需要手機 BLE
- 想節省資源
- 架構單純、風險最低

**選 S332 的情境**
- ANT+ 對運動裝置
- BLE 對手機 App
- BLE DFU
- 需要雙協定並存

專業上，`S332` 的價值就在「同時支援 ANT 與 BLE」。THIS IS ANT 對 nRF52832 的描述也明確列出 `S332` 是 concurrent `ANT/BLE SoftDevice`。[THIS IS ANT nRF52832](https://www.thisisant.com/developer/components/nrf52832/)

---

**12. 新手最容易犯的錯**
1. 用錯 SoftDevice  
例如想做 ANT+ 卻刷了 BLE-only stack。

2. 把 ANT 和 ANT+ 當成同一件事  
實際上，ANT+ 代表 profile 與互通標準，不只是底層傳輸。

3. 直接從空白專案硬建  
建議先從 SDK 範例改。

4. 一開始就同時做 ANT + BLE + DFU + 自訂邏輯  
太容易讓問題混在一起。

5. 只看手機掃不到就以為沒發送  
ANT+ 驗證要用對工具。

6. 只設定 `ANT license key`，卻忘了 `ANT+ network key`  
這樣可能能把 ANT stack 跑起來，但商用品碼表仍不會把你當成真正的 ANT+ 感測器。

---

**13. 最推薦的新手開發順序**
1. 先安裝開發環境
2. 先燒對 SoftDevice
3. 先確認 `ANT license key`
4. 先確認已取得並配置 `ANT+ network key`
5. 先讓 ANT+ 範例能編譯
6. 先做最小 TX
7. 用碼表驗證
8. 再換真實感測資料
9. 再加 BLE
10. 再加 bootloader / DFU

這樣成功率最高。

---

**14. 一句話總結**
如果你是 `nRF52832 + ANT+` 新手，最重要的不是一開始會寫多少程式，而是先把這四件事建立正確：

1. `S212 / S332 / S132` 的角色分工
2. `ANT` 與 `ANT+` 的差異
3. `ANT license key` 與 `ANT+ network key` 的差異
4. 用正確接收端去驗證 `TX / RX`

掌握這幾點後，再進到 profile、page、DFU、雙協定整合，會順很多。

**參考來源**
- [THIS IS ANT nRF52832 / SoftDevice 頁面](https://www.thisisant.com/developer/components/nrf52832/)
- [Nordic S212 SoftDevice 說明](https://www.nordicsemi.com/Products/Development-software/S212-ANT)
- [Nordic DevZone: nRF5 SDK 與 SoftDevice 入門](https://devzone.nordicsemi.com/guides/short-range-guides/b/getting-started/posts/introduction-to-nordic-nrf5-sdk-and-softdevice)
- [ANT Basics](https://www.thisisant.com/developer/ant/ant-basics)
- [ANT+ Device Profiles](https://www.thisisant.com/developer/ant-plus/device-profiles)
- [ANT Licensing](https://www.thisisant.com/developer/ant/licensing/)
- [Downloads / Licensing Reminder](https://www.thisisant.com/developer/resources/downloads/)
- [ANT+ Network Key FAQ](https://www.thisisant.com/developer/resources/tech-faq/where-can-i-find-the-ant-network-key-and-the-ant-fs-network-key)
