SX1262
Semtech SX1262 LoRa transceiver: the SPI command interface (status, modes, registers, IRQs, BUSY/DIO1). No RF air link.
Live catalog
Prefer labwired_describe with the catalog id over guessing pins or addresses.
Status at a glance
| Aspect | Status |
|---|---|
| Catalog id | sx1262 |
| Bus | SPI (mode 0), one command per NSS-low transaction |
| Address | — (NSS via cs_pin) |
| Datasheet | Semtech SX1261/2 Data Sheet Rev. 1.2 (June 2019): §8.3.1 BUSY, §11 command tables, §12 Table 12-1, §13 (Tables 13-1..13-86) |
| Source | configs/devices/sx1262.yaml (declarative, no Rust model) |
| Tier | smoke-proven (register-level tests: crates/core/tests/parts_batch5.rs) |
Pins / attachment
| Pin / net | Role |
|---|---|
| SCK / MOSI / MISO | SPI |
| NSS | cs_pin |
| BUSY | Driven low when ready, high in Sleep (busy_pin) |
| DIO1 | IRQ output (dio1_pin) |
| DIO2/DIO3, NRESET | Not modelled |
Support matrix
| Behavior | Status | Notes |
|---|---|---|
| Status byte (Table 13-76), GetStatus 0xC0 | ✅ | 0x20 (STBY_RC) at power-on |
| SetStandby / SetFs / SetRx / SetTx / SetSleep | ✅ | TX completes at once with TxDone |
| Read/WriteRegister over Table 12-1 | ✅ | Sync word 0x0740 = 0x14 0x24, OCP 0x08E7 = 0x38 … |
| Set/GetPacketType, SetDioIrqParams, Get/ClearIrqStatus | ✅ | DIO1 = IRQ & IrqMask & DIO1Mask |
| GetRssiInst, GetPacketStatus (LoRa), Get/ClearDeviceErrors | ✅ | Whole-dB stimulus |
| RF air link, data buffer, timing, DIO2/DIO3 | ❌ |
Stimulus
Host inputs: rssi_dbm, packet_rssi_dbm (dBm), snr_db (dB), whole units.
How to run
- Place the part and an MCU in Playground, or add it to a system YAML:
- Agent:
labwired_list→labwired_describe id=sx1262→ wire →labwired_validate→labwired_run/labwired_verify. - Register-level smoke:
cargo test -p labwired-core --test parts_batch5— GetStatus at power-on, ReadRegister of the LoRa sync word and OCP, SetStandby(XOSC), Set/GetPacketType;sx1262_tx_done_drives_dio1_and_sleep_holds_busycovers TX → DIO1, IRQ clear, RSSI, register writes and Sleep/BUSY. The same file's negative control proves the check fails against a stand-in that answers only 0x00 or only 0xFF.
Limitations
- Nothing is ever received, and SetRx never times out.
- BUSY never pulses (commands complete instantly); TX has no time-on-air.
- Undocumented registers read 0x00; the FSK sync word and random-number registers have no datasheet reset value and read 0x00.
See the YAML header for the full datasheet trace and every named approximation.