UHF RFID PC 值完整解析:3000h3400h 代表什麼?

在 UHF RFID 開發裡,很多人第一次看到 30003400 這類十六進位值會愣住。其實這就是 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 01PC(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

寫入流程建議(避免一致性問題)

實作上建議固定遵守這個順序:

  1. 決定目標 EPC 位元長度(例如 128-bit)
  2. 計算 L 並組出對應 PC 欄位
  3. 先寫 EPC,立即回讀驗證
  4. 寫入/確認 PC(或依設備 SDK 建議一次性寫入)
  5. 再做一次 Inventory 驗證長度與內容

關鍵原則:EPC 與 PC 必須一致,不一致就會出現各種「看似玄學其實是位元不一致」的問題。


結語

PC 值不是小細節,而是 EPC 解析的入口。 你只要掌握三件事,系統穩定度就會明顯提升:

  • 看懂 16-bit 欄位分工(尤其是 L)
  • 改 EPC 長度時同步處理 PC
  • 用固定驗證流程避免寫入後不一致

這樣你的 RFID 系統在倉儲、資產追蹤、產線盤點情境都會更可靠。

若還是不清楚怎麼計算,這邊有快速計算的網站 UHF RFID PC Value Calculator