Cortex-M0+的RFID讀卡器模塊設(shè)計(jì)
3.2 檢測(cè) 15693
本文引用地址:http://m.butianyuan.cn/article/265052.htm檢測(cè)15693協(xié)議主要包含SLRC610軟復(fù)位、初始化15693協(xié)議層、應(yīng)用15693協(xié)議設(shè)置、獲取15693卡系統(tǒng)信息。SLRC61O軟復(fù)位就是將SLRC610內(nèi)部E2PROM 中保存的寄存器的默認(rèn)值重新加載到寄存器中。一般初始化的時(shí)候會(huì)用到,當(dāng)然切換協(xié)議的時(shí)候也會(huì)用到。初始化15693協(xié)議層主要完成參數(shù)結(jié)構(gòu)體長(zhǎng)度檢查和私有變量初始化。應(yīng)用15693協(xié)議設(shè)置是根據(jù)參數(shù)中設(shè)置的卡的類(PHHAL_Hw_CARDTYPE_ISO15693)來(lái)加載該協(xié)議下SLRC610的寄存器的默認(rèn)配置,包括調(diào)制深度、調(diào)制方式、超時(shí)時(shí)間等。檢測(cè)15693流程圖如圖5所示。
圖5 檢測(cè)15693流程圖
3.3 Get System lnfo命令
Get System Info是ISI15693的可選命令,主要用來(lái)檢索卡片的基本信息。請(qǐng)求和應(yīng)答幀都是有幀頭和幀尾的,如下所示。
去掉幀頭幀尾 一共有4個(gè)字段,其中一個(gè)字段(8字節(jié)的UID)是可選的。它的響應(yīng)信息格式如下所示,其中斜體部分的字段表示,只有在響應(yīng)信息中有該標(biāo)志,才有這個(gè)字段的信息。
由于它發(fā)送的字節(jié)少(在不加UID的情況,加 上CRC才4字節(jié)),而且只要卡在場(chǎng)中就能使用,比較方便用示波器抓波形以分析收發(fā)的數(shù)據(jù)是否正常。
獲取15693卡系統(tǒng)信息的寫法有兩種:第一種是用phpalSlil5693_Sw_Exchange和卡片交換信息的時(shí)傳兩字節(jié)數(shù)據(jù)“0x02 0x2B”,并設(shè)發(fā)送長(zhǎng)度為兩字節(jié);第二種是用phpalSlil5693_Sw_Exchange和卡片交換信息的時(shí)傳兩字節(jié)數(shù)據(jù)“0x2B”,并設(shè)發(fā)送長(zhǎng)度為一字節(jié)。從本質(zhì)上來(lái)講,這兩種做法的最終結(jié)果都是發(fā)了同樣的數(shù)據(jù),不同之處在于它們的發(fā)送方式。phpalSli15693_Sw_Exchange的第二個(gè)參數(shù)有一個(gè)是寫選項(xiàng),對(duì)于第一種,要將其設(shè)為PH_EXCHANGE_LEAVE_BUFFER_BIT,第二種設(shè)為PH_EXCHANGE_DEFAULT,還得將0x02設(shè)置到第一個(gè)參數(shù)的bFlags上。另外在使用phpalSli15693_Exchange時(shí)要特別注意,在該函數(shù)前面用phpalSli15693_SetConfig函數(shù)設(shè)置超時(shí)。假如沒(méi)有設(shè)置該函數(shù),那么每次只能收到卡片返回的前5位正確數(shù)據(jù)。獲取15693卡系統(tǒng)信息流程圖如圖6所示。
圖6 獲取15693卡系統(tǒng)信息流程圖
3.4 SPI通信
采用宏定義加數(shù)組的方式來(lái)配置I/O引腳,這種方法比較靈活,可移植性很強(qiáng),又方便代碼維護(hù)。LPC800系列加了一個(gè)開(kāi)關(guān)矩陣,將可轉(zhuǎn)移功能通過(guò)開(kāi)關(guān)矩陣分配給引腳PIO0_0~PIO0_17,使用起來(lái)很方便。使用的時(shí)候需要先查可轉(zhuǎn)移功能所對(duì)應(yīng)的SWM 引腳分配寄存器。找到后先將原來(lái)的數(shù)據(jù)清除,再寫上新分配的引腳。操作過(guò)程中要謹(jǐn)慎,絕不能修改不該動(dòng)的位。
這里初始化調(diào)用LPC812的庫(kù)函數(shù),將SP10設(shè)置為主機(jī)模式,為確保通信可靠在SSEL置位和數(shù)據(jù)幀起點(diǎn)之間、制數(shù)據(jù)幀末尾和SSEL解除置位之間、相鄰數(shù)據(jù)幀之間插入2個(gè)SPI時(shí)鐘周期,兩次傳輸之間SSEL解除置位的最短時(shí)間為3個(gè)SPI時(shí)鐘周期。
4 模塊調(diào)試和測(cè)試
4.1 調(diào)試方法
由于15693的編碼方式是SOF信號(hào)后每一定長(zhǎng)度代表一定量的信息,所以可以先取信號(hào)的開(kāi)始時(shí)間,然后計(jì)算下一個(gè)的時(shí)間,去看示波器每一個(gè)時(shí)間段的波形,記錄下來(lái)然后去整體解析。
抓到數(shù)據(jù)后開(kāi)始解析數(shù)據(jù),比如獲取卡片信息的命令(0x02 0x2B 0x26 0xA3),它總共有4個(gè)字節(jié),最后兩個(gè)字節(jié)是CRC校驗(yàn)。通過(guò)調(diào)程序可以看到VCD發(fā)的實(shí)際命令(0x02 0x2B),而CRC則是硬件算好直接發(fā)的,所以通過(guò)調(diào)程序無(wú)法看到它。
4.2 測(cè)試
模塊的實(shí)際大小為45 mm×45 mill,模塊中芯片、元器件都集中在模塊中間,線圈以蝕刻的方式在靠近的邊緣的PCB中間層。筆者手上有TI、NXP、ST公司的15693卡共4種型號(hào),做了讀卡距離測(cè)試。測(cè)試方法是將卡放于模塊天線正對(duì)面,通過(guò)觀察模塊上LED燈是否亮就能知道是否讀卡成功,將卡放到能讀到的高度,再用直尺去量高度。
結(jié)語(yǔ)
本模塊設(shè)計(jì)中采用的是較新的主控和射頻芯片,價(jià)格較低,性能又強(qiáng),而且在很長(zhǎng)一段時(shí)間內(nèi)不會(huì)有供貨、價(jià)格等方面的問(wèn)題。LPC800系列既增加了開(kāi)關(guān)矩陣等實(shí)用的功能,方便用戶電路設(shè)計(jì),也集成了老一代單片機(jī)的ISP升級(jí)功能。本文詳細(xì)描述了這兩顆芯片的使用方法以及對(duì)模塊的調(diào)試方法與步驟等。該模塊采用貼面封裝的元件,具有低成本、低功耗、小尺寸、讀寫卡距離遠(yuǎn)等特點(diǎn),使用起來(lái)很方便,具有較高的應(yīng)用價(jià)值。
低通濾波器相關(guān)文章:低通濾波器原理
評(píng)論