UHF RFID PC 值完整解析:3000h、3400h 代表什麼?
在 UHF RFID 開發裡,很多人第一次看到 3000、3400 這類十六進位值會愣住。其實這就是 PC 值(Protocol Control Value):只有 16 位元,卻決定讀寫器怎麼解讀後面的 EPC 資料長度與部分標記狀態。
先講最常見結論:
3000h通常代表 96-bit EPC(也就是 6 個 16-bit words)- 若你改了 EPC 長度卻沒同步調整 PC 值,就很容易出現讀取截斷或盤點異常
下面用 EPC Gen2 規格一步步拆開。
PC 值在哪裡?先看 EPC 記憶體映射
在 EPC Gen2 中,Tag 記憶體常見分為四個 Bank。PC 值位在 Bank 01(EPC Bank) 的開頭區域。
EPC Bank 典型配置
- Word 00:CRC-16
- Word 01:PC(Protocol Control)
- Word 02 ~ n:EPC 資料本體
讀寫器在 Inventory/盤點流程中,會先看 PC,再決定後面 EPC 要抓多長。 換句話說,PC 是 EPC 的長度與控制描述頭。
PC 值 16-bit 結構拆解(Bit 15 → Bit 0)
下面這張表是實務最常用的理解方式。
| 位元區段 | 欄位 | 用途 |
|---|---|---|
| 15–11 | L | EPC 長度指示(單位:16-bit words) |
| 10 | UMI | User Memory Indicator,1 表示標籤宣告有 User Memory |
| 9 | XI | XPC Indicator,1 表示有延伸控制資訊(XPC) |
| 8 | T | Toggle 位,特定應用情境使用 |
| 7–0 | AFI | Application Family Identifier,常見預設為 00h |
重點是第一段: L 決定 EPC 長度,這是最常影響讀寫結果的欄位。
為什麼 3000h 幾乎到處可見?
3000h 轉二進位後,可對應出:
- L=00110(二進制)=6
- EPC 長度 = 6×16=96 bits
所以 3000h 對應「標準 96-bit EPC」非常常見。
其餘控制位在常見情況下多為 0(例如 UMI=0、XI=0、AFI=00h)。
常見延伸:3400h
很多場景會看到 3400h,實務上常是控制位差異(常見是 UMI 被設為 1)。
但不同晶片/流程仍要以實際讀回位元為準,避免只看十六進位表面值就下結論。
開發實戰:最常踩的 3 個坑
你這段原文已經很到位,我幫你整理成排錯清單。
1) 讀取截斷(EPC 少半段)
- 現象:EPC 只回傳前面幾個 bytes
- 常見原因:PC 的 L 小於實際 EPC 長度
- 修法:先算正確 word 數,再寫 EPC/PC
2) 寫入成功但盤點異常
- 現象:Write 回報成功,Inventory 卻不穩定
- 常見原因:只改 EPC,沒同步改 PC
- 修法:把「寫 EPC + 更新 PC」當成同一個交易流程
3) 以為 UMI=1 就能直接讀 User Memory
- 現象:判斷有 User 區但讀不到資料
- 常見原因:沒對 Bank 03 發送正確 Read,或權限受限
- 修法:明確指定 Bank/WordPtr/WordCount,並確認 Access 密碼策略
長度換算速查(實務超好用)
用這個公式就不容易算錯:
- EPC bits=L×16
- L=16EPC bits / 16
常見對照:
| EPC 長度(bits) | Words(L) |
|---|---|
| 96 | 6 |
| 112 | 7 |
| 128 | 8 |
| 160 | 10 |
| 192 | 12 |
寫入流程建議(避免一致性問題)
實作上建議固定遵守這個順序:
- 決定目標 EPC 位元長度(例如 128-bit)
- 計算 L 並組出對應 PC 欄位
- 先寫 EPC,立即回讀驗證
- 寫入/確認 PC(或依設備 SDK 建議一次性寫入)
- 再做一次 Inventory 驗證長度與內容
關鍵原則:EPC 與 PC 必須一致,不一致就會出現各種「看似玄學其實是位元不一致」的問題。
結語
PC 值不是小細節,而是 EPC 解析的入口。 你只要掌握三件事,系統穩定度就會明顯提升:
- 看懂 16-bit 欄位分工(尤其是 L)
- 改 EPC 長度時同步處理 PC
- 用固定驗證流程避免寫入後不一致
這樣你的 RFID 系統在倉儲、資產追蹤、產線盤點情境都會更可靠。
若還是不清楚怎麼計算,這邊有快速計算的網站 UHF RFID PC Value Calculator 。