PN5180 は全コマンドで BUSY ピンによる処理完了通知を行う。
_wait_low() のみでは BUSY の HIGH 遷移を見逃し全 0xFF を返す。
必ず HIGH → LOW の両エッジを待つこと。
EEPROMからRF設定をレジスタに読み込む。RF ON より前に必ず実行すること。
| プロトコル | TX index | RX index | コマンド例 |
|---|---|---|---|
| ISO 14443A 106kbps | 0x00 | 0x80 | [0x11, 0x00, 0x80] |
| ISO 14443A 212kbps | 0x01 | 0x81 | [0x11, 0x01, 0x81] |
| ISO 14443A 424kbps | 0x02 | 0x82 | [0x11, 0x02, 0x82] |
| ISO 14443B 106kbps | 0x04 | 0x84 | [0x11, 0x04, 0x84] |
| FeliCa 212kbps | 0x08 | 0x88 | [0x11, 0x08, 0x88] |
| ISO 15693 | 0x0D | 0x8D | [0x11, 0x0D, 0x8D] |
RF ON後、カードが応答できるまで 5ms以上 待つこと (ISO 14443 仕様)。
ISO 14443A の REQA → ATQA → Anticollision → SELECT の流れ:
| コード | コマンド | 送信フォーマット | レスポンス |
|---|---|---|---|
| 0x00 | WRITE_REGISTER | [0x00, reg, val_LE(4B)] | なし |
| 0x01 | WRITE_REGISTER_OR_MASK | [0x01, reg, mask_LE(4B)] | なし |
| 0x02 | WRITE_REGISTER_AND_MASK | [0x02, reg, mask_LE(4B)] | なし |
| 0x04 | READ_REGISTER | [0x04, reg] | 4B (LE) |
| 0x06 | WRITE_EEPROM | [0x06, addr, data...] | なし |
| 0x07 | READ_EEPROM | [0x07, addr, length] | N bytes |
| 0x09 | SEND_DATA | [0x09, valid_bits_last, data...] | なし (RX_IRQ待ち) |
| 0x0A | READ_DATA | [0x0A, length] | N bytes |
| 0x11 | LOAD_RF_CONFIG | [0x11, tx_idx, rx_idx] | なし |
| 0x12 | UPDATE_RF_CONFIG | [0x12, proto, reg, val(4B), ...] | なし |
| 0x16 | RF_ON | [0x16, config] | なし (TX_RFON_IRQ待ち) |
| 0x17 | RF_OFF | [0x17, 0x00] | なし |
EEPROMが消去されていても チップは起動できる(0xFF=全ビット1 → IDLE_IRQ_AFTER_BOOT bit0=1 は保たれる)。 ただし RF Config が無効なため、以下の順で手動設定が必要。