,,,
(天津科暢慧通信息技術(shù)有限公司 研發(fā)部,天津 300300)
超高頻讀寫器編碼解碼處理使用FPGA[3]較多,反向可以多路并行濾波并解碼,但成本高,硬件設(shè)計占用面積大,單板面積固定的情況下不容易擴展接口。由于STM32芯片成本、功耗、接口擴展都有優(yōu)勢,但對協(xié)議時序邏輯處理比較難[2]。因而本文提出了基于STM32的讀寫器物理層編解碼方法,并加以實現(xiàn)。
RFID GB/T 29768協(xié)議規(guī)定讀寫器使用TPP對物理層數(shù)據(jù)進行編碼,使用DSB-ASK或者SSB-ASK方式調(diào)制射頻載波,向一個或者多個標(biāo)簽發(fā)送命令。命令發(fā)送后,讀寫器繼續(xù)發(fā)送未經(jīng)調(diào)制的射頻載波,并監(jiān)聽來自標(biāo)簽的響應(yīng)數(shù)據(jù)包[1]。標(biāo)簽從讀寫器發(fā)送的射頻載波中獲得工作能量,使用FM0對物理層數(shù)據(jù)進行編碼[5],反向散射調(diào)制射頻載波的幅度和(或)相位。
本文使用STM32F205的TIMER和DMA進行TPP編碼,通過DAC控制射頻開關(guān)實現(xiàn)調(diào)制。電子標(biāo)簽接收到命令后反向散射載波應(yīng)答,經(jīng)過射頻模塊的天線接收后被解調(diào)電路還原成FM0波形。構(gòu)造FM0解碼算法,使用STM32的TIMER對FM0時序序列進行上升沿和下降沿捕獲,捕獲到的時間間隔脈寬通過DMA實時存儲,進而解調(diào)出標(biāo)簽數(shù)據(jù)。系統(tǒng)的硬件框圖[4]如圖1所示。
圖1 系統(tǒng)硬件框圖
圖2 TPP符號
讀寫器使用如圖2所示的TPP對物理層數(shù)據(jù)進行編碼。圖中,符號00的持續(xù)時間為2Tc,符號01的持續(xù)時間為3Tc,符號11的持續(xù)時間為4Tc,符號10的持續(xù)時間為5Tc,Tc可以取6.25 μs或者12.5 μs,實現(xiàn)設(shè)計中Tc取12.5 μs,讀寫器應(yīng)在一個盤點循環(huán)內(nèi)使用固定的Tc。前向鏈路應(yīng)使用如圖3所示的前導(dǎo)碼通信,前導(dǎo)碼由分隔符、校準符一和校準符二組成[1]。
圖3 前向鏈路的前導(dǎo)碼
圖4 FM0 基本符號
反向鏈路應(yīng)使用如圖4所示的FM0編碼。
反向鏈路使用如圖5所示的前導(dǎo)碼通信,前導(dǎo)碼由12個0以及1、0、V序列組成[1]。
圖5 FM0基本符號和前導(dǎo)碼
前導(dǎo)碼解碼算法步驟如下:
① 檢測是否收到0的1/2位,若否,繼續(xù)接收,轉(zhuǎn)①;
② 判斷是否超時,若是,則退出;
③ 開始計數(shù)并判斷是否已經(jīng)連續(xù)收到12個0,若否,則轉(zhuǎn)①;
④ 檢測判斷是否收到1,若否,則解碼失敗,退出;
⑤ 檢測判斷是否共收到3個1,若否,則退出;
⑥ 檢測判斷是否收到0的1/2位,若否,則退出;
⑦ 檢測判斷是否收到1,若否,則退出;
⑧ 檢測判斷是否收到0的1/2位,若否,則退出;
⑨ 檢測判斷是否收到2個0,若否,則退出;
數(shù)據(jù)解碼算法流程如下:
① 檢測是否收到0的1/2位,若否,則轉(zhuǎn)④;
② 檢測是否收到0的1/2位,若否,則退出;
③ 將收到的0保存,判斷收到的數(shù)據(jù)長度是否已滿足,若否,則轉(zhuǎn)①;
④ 數(shù)據(jù)解碼成功。
⑤ 檢測是否收到1,若否,則退出;
⑥ 將收到的1保存,判斷收到的數(shù)據(jù)長度是否已滿足,若否,則轉(zhuǎn)①;
⑦ 數(shù)據(jù)解碼成功。
圖6中啟動查詢命令共44個二進制位,前8位是命令代碼,中間10位是參數(shù),后16位是CRC校驗碼[1,6]。圖中編碼獲取命令共18個二進制位,前2位是命令代碼,后16位包括11位隨機數(shù)和5位CRC校驗碼[1,6](標(biāo)簽每次返回的隨機數(shù)和CRC不一樣,以X代替)。
圖6 啟動查詢和編碼獲取命令
2.5.1 啟動查詢命令后標(biāo)簽響應(yīng)
圖7為標(biāo)簽返回的波形。
圖7 標(biāo)簽返回Handle
根據(jù)前導(dǎo)碼解碼算法解出前導(dǎo)碼后,根據(jù)數(shù)據(jù)解碼算法解碼數(shù)據(jù),最終解碼出標(biāo)簽11位隨機數(shù)010 1001 1110和5位CRC 0 1001。
2.5.2 編碼獲取命令后標(biāo)簽響應(yīng)
圖8為是標(biāo)簽返回的波形。
圖8 標(biāo)簽返回的波形
根據(jù)前導(dǎo)碼解碼算法解出前導(dǎo)碼后,根據(jù)數(shù)據(jù)解碼算法開始解碼數(shù)據(jù),解出標(biāo)簽數(shù)據(jù):00000000 01000000 00000100 10001101 00101010 01110011 11。根據(jù)協(xié)議規(guī)定最終解出的編碼數(shù)據(jù)為0x 1234,表明解碼成功。