作者:ZeroGrid 實驗室
🎯 本篇目標
- 地圖導航:看懂 Datasheet (v2.2) 的 狀態機流轉圖 (State Machine)。
- 啟動 SOP:詳解從 NRESET 到 Ready 的標準步驟(含 DC-DC 與時脈源的硬體陷阱)。
- 模式禁忌:解釋 Sleep / Standby / FS / RX / TX 各模式下的操作限制。
- 聽診器:學會解讀 Status Byte,診斷晶片狀態。
1. 前言:它不是電燈開關,它是手排車
很多新手把 SX1262 當成電燈開關,以為送出發射指令就是「開燈」,睡眠就是「關燈」。 但 SX1262 更像是一台精密的賽車。
你不能在「熄火 (Sleep)」狀態下直接「踩油門 (TX)」。你必須遵守嚴格的換檔邏輯:
- 發動引擎 (進入 Standby RC)
- 暖車 (校正、確認時脈源、切換到 Standby XOSC)
- 拉轉速 (FS 頻率合成)
- 入檔 (TX 發射)
如果你跳過中間步驟(例如在睡眠時嘗試設定頻率),晶片會拒絕執行,並且在 Status Byte 裡給你一個「Command Error」的白眼。
2. 啟動儀式:標準初始化流程 (Startup Sequence)
晶片上電或 Reset 後,內部的狀態是不確定的。為了讓這顆心臟穩定跳動,我們必須執行一套嚴格的「喚醒儀式」。
特別注意:以下流程包含硬體匹配的關鍵決策,選錯會導致死機。
Step 1: 硬體重置 (NRESET)
- 腳位:Pin 23 (NRESET)
- 動作:拉低至少 50µs,然後拉高。
- 物理意義:強制讓內部的狀態機歸零。此時
BUSY腳位會拉高,代表晶片正在載入預設韌體。
Step 2: 確認通訊 (Check BUSY)
- 動作:等待
BUSY變回 Low。 - 狀態:此時晶片預設進入 STDBY_RC 模式(使用內部 13MHz RC 振盪器,省電但不準)。
Step 3: 設定封包類型 (SetPacketType, 0x8A)
- 指令:
0x8A+0x01(LoRa) - 目的:SX1262 支援 LoRa 與 FSK。在做任何 RF 設定前,必須先選邊站。
Step 4: 電源管理 (SetRegulatorMode, 0x96) —— 硬體匹配陷阱 #1
- 指令:
0x96+Mode - 選項:
0x00: LDO (線性穩壓,耗電但通用)。0x01: DC-DC (開關穩壓,省電)。
- ⚠️ 技術長實戰筆記: Datasheet 推薦 DC-DC 省電 (4.6mA vs 8.8mA),但前提是板子上有焊接 DC-DC 專用電感 (LDCDC)。
- Waveshare RP2040-LoRa 實測:板載有此電感,開啟 DC-DC 運作正常,功耗減半。
- 避坑指南:如果你用的是廉價閹割版模組,開啟 DC-DC 可能會導致 RF 電路斷電(死機)。若不確定,選 LDO 最安全。
Step 5: 時脈源設定 (SetDio3AsTcxoCtrl, 0x97) —— 硬體匹配陷阱 #2
- 指令:
0x97+電壓+Delay - ⚠️ 技術長實戰筆記: 這條指令僅適用於 使用 TCXO (溫補晶振) 的板子。
- Waveshare RP2040-LoRa 實測:雖然電路圖上畫了 TCXO 選項,但實際出貨版本焊接的可能是 XTAL (傳統晶體)。
- 災難現場:如果對 XTAL 板子下達此指令,晶片會關閉內部的 XTAL 驅動電路,導致晶振停止震盪,晶片心跳停止。
- 解決方案:跳過此步驟。使用預設的 XTAL 模式即可穩定運作。
Step 6: 整體校正 (Calibrate, 0x89)
- 指令:
0x89+0x7F(全選) - 功能:校正內部的 RC64k, RC13M, PLL, ADC 等模組。這對使用 XTAL 的板子尤為重要,因為 XTAL 受溫度影響較大。
Step 7: 頻率鏡像校正 (CalibrateImage, 0x98)
- 指令:
0x98+0xE1+0xE9 - 解讀:調整內部的濾波電容以抑制鏡像頻率干擾。這兩個參數對應 902~928MHz 頻段。
Step 8: 切換主時鐘 (SetStandby, 0x80)
- 指令:
0x80+0x01(STDBY_XOSC) - 解讀:熱身完畢,切換到外部 32MHz 主晶振。
- 狀態:現在,晶片正式進入 Ready 狀態。
3. 五大模式詳解:能做什麼?不能做什麼?
這張地圖是開發者必須刻在腦子裡的。

Mode Transition
A. SLEEP (睡眠模式)
- 狀態:最低功耗 (160nA)。
- 禁忌:嚴禁讀寫 RF 暫存器。SPI 只能接收「喚醒」指令。
B. STDBY_RC (待機 - RC振盪)
- 狀態:剛醒來,使用內部不準的時鐘。
- 任務:唯一能執行
Calibrate(校正) 的模式。
C. STDBY_XOSC (待機 - 晶振) —— 大廳
- 狀態:清醒狀態,時脈準確。
- 任務:所有的 RF 參數設定 (SetRfFrequency, SetTxParams) 都必須在這裡完成。這是前往 TX/RX 的必經之路。
D. FS (Frequency Synthesis - 頻率合成)
- 狀態:PLL (鎖相迴路) 啟動,正在鎖定 921MHz。
- 行為:這是 TX/RX 的前置動作,通常由晶片自動切換。
E. RX / TX (收發模式)
- 狀態:火力全開。
- 禁忌:嚴禁修改 RF 參數。如果你在發射途中想改頻率,必須先送
SetStandby退回大廳,改完再發射。
4. 狀態的聽診器:Status Byte 解密
在 SPI 通訊中,MISO 回傳的第一個 Byte 永遠是 Status Byte。這不是垃圾,這是晶片的求救訊號。

Status to host

Status Code Definition
Status Byte (8 bits) 被切分為三部分:
- Bit 7:保留 (Reserved,恆為 0)
- Bit 6-4:Chip Mode (目前模式)
- Bit 3-1:Command Status (指令執行狀況)
- Bit 0:保留 (Reserved,恆為 0)
實戰演練:解碼 0x6C
假設你在終端機做實驗,看到 Status Byte 回傳 0x6C。我們來算一下這是什麼意思。
- 轉成二進位:
0x6C(Hex) =0110 1100(Binary) - 拆解欄位:
- Bit 7:
0(正常) - Bit 6-4:
110-> Chip Mode - Bit 3-1:
110-> Command Status - Bit 0:
0
- Bit 7:
- 查表:
- Chip Mode (110):
- 0x2: STDBY_RC
- 0x3: STDBY_XOSC
- 0x5: RX
- 0x6: TX (發射中)
- -> 結論:晶片目前處於 TX 發射模式。
- Cmd Status (110):
- 0x2: Data Available
- 0x3: Command Timeout
- 0x4: Command Error
- 0x6: TX Done (發射完成)
- -> 結論:晶片剛剛完成了發射任務。
常見的 Status Byte 密碼:
0x54(0 101 010 0): Mode=RX, Status=Data Available。- 翻譯:「我在接收模式,而且我有資料給你!」
0x28(0 010 100 0): Mode=STDBY_RC, Status=Cmd Error。- 翻譯:「我現在在 RC 待機模式,但你剛剛給的指令有錯 (Command Error)。」
5. ZeroGrid 實驗室:捕捉瞬間
現在我們用 ZeroGrid 的 /reg 指令,來偷看晶片的狀態。
實驗 A:確認待機狀態 輸入 /reg read 0740。 你應該會看到 Status Byte 回傳 0x30 或 0x32。
0x3(011) 代表 STDBY_XOSC。這證明我們的初始化流程成功讓晶片進入了高精準度待機模式。
實驗 B:製造錯誤 試著輸入 /reg write 0000 00 (寫入無效地址)。 下一次讀取 Status Byte 時,你可能會發現 Command Status 變成了 0x4 (Command Error)。這就是晶片在向你抱怨:「你剛剛說什麼?我聽不懂。」
下一課預告
機器已經發動了,SOP 也標準化了(而且我們還避開了硬體的坑)。 下一篇 #4 LoRa 調變的黃金三角,我們將直接進入最核心的參數設定:SF (展頻因子)、BW (頻寬)、CR (編碼率),並教你如何計算出最佳的傳輸組合。
















