基于MCF52235 的RFID 通用開發平臺設計
2 RFID通用開發平臺設計
本文引用地址:http://www.104case.com/article/266844.htm2.1硬件設計
硬件構件模型中首先是主控制器MCU的選型。由于RFID應用廣泛,很多場合要求控制器有較快的處理速度,有多種控制模塊如A/D控制模塊、CAN總線模塊、以太網控制模塊等。綜合分析,文中選擇了飛思卡爾單芯片解決方案MCF52235處理器。該處理器采用Coldfire V2內核和精簡指令集(RISC),頻率為60 MHz,通過設置鎖相環(PLL),MCF52235能夠穩定工作在80 MHz.內部集成了10/100M快速以太網控制器(FEC)、以太網物理收發器(EPHY)等模塊,還有UART,I2C、QSPI、PWM、快速ADC等模塊,實現了單芯片解決方案。
由于MCF52235處理器中集成的以太網模塊已經包括了以太網控制器和物理層收發器,因此網絡硬件構件僅需添加少量的元件便可。MCF52235處理器的PHY_RXP、PHY_RXN引腳用于接收數據,PHY_TXP、PHY_TXN引腳用于發送數據。這兩對收、發引腳分別接50Ω的上拉電阻。SPDLED引腳接網速LED燈指示當前的連接速度是10 Mbps還是100 Mbps,LNKLED引腳接的LED燈則指示當前是否已經與另一個網絡設備連接。如果RFID射頻系統中讀卡器終端并不多,可以不采用網絡而是通過USB接口與PC機進行通信。USB構件采用飛思卡爾的單芯片MC9S12UF32,它提供了高速USB2.0接口,即插即用。此處使用USB接口不是為了獲得更高的速度而是為了使用方便,所以選擇通過MCF52235的一個串口與UF32通信。
射頻芯片選用的是飛利浦RC531芯片,工作頻率為13.56 MHz,在不外加功率放大器時讀寫距離可達10 cm,它通過SPI接口與MCF52235通信。
LCD構件采用耀宇科技的YM12864圖形點陣液晶。該液晶顯示器可以顯示4行、每行8個漢字或者16個字母。它有兩種常用的連接方式:并行和串行。并行連接需要11根引腳線,串行連接僅用3根引腳線,因此與MCU的連接采用串行的連接方式。另外還需一個引腳控制背光燈電源的正極LEDA開關。語音模塊和LCD模塊的功能一樣,都是為了增強人機交互,它采用上海奔流公司的BMP5008語音芯片。狀態指示燈用于觀察系統的運行狀態和用戶的操作,通過GPIO口連接,幾乎所有的MCF52235引腳都可以作為GPIO引腳。主控制器MCF52235與各模塊的引腳連接如圖4所示。

2.2軟件設計
根據平臺的軟件構件層次模型,先將各個模塊的驅動程序封裝成構件。底層軟件構件是與硬件直接打交道的,它由頭文件和源程序文件兩部分組成。編程思想是分析構件的共性和個性,抽取出構件的屬性和對外接口函,用戶使用該構件時只需了解其接口函數,而不必去了解內部具體如何實現。
頭文件部分給出構件屬性的宏定義和對外接口函數的原型說明,源程序部分是函數的實現。
以太網構件主要包括以太網物理收發器(EPHY)和快速以太網控制器(FEC)的初始化、TCP/IP協議棧實現。它的接口函數原型說明如下:
//==================================
uint8 hw_ephy_init(uint16 sysclk,uint8 ratemode,
uint8 dupmode,uint8 autoneg);//EPHY初始化
void hw_fec_init(uint8 mac_addr_fec[6];//FEC初始化
int8 hw_fec_sendframe(uint8 ch[],uint8destAdd[6],uint8 srcAdd[6],uint16 lenType,uint16len);//發送單個以太網幀
uint8 hw_fec_receiveframe(uint8 ch[],uint16 *len);//接收單個以太網幀
uint hw_icmp_handle(PACKET p);//處理接收到的ICMP包,響應ping請求
int hw_udp_send(unshort fport,unshort lport,
PACKET p);//發送UDP包
//==================================
RC531射頻模塊與MCF52235通信嚴格按照串行通信時序要求。RC531與ISO/IEC 14443 TypeA和Type B卡通信,則按照A、B卡調制和編碼的方式設置相關的寄存器,并根據ISO/IEC 14443協議來設計軟件即可。讀卡器與A、B卡之間的通信是按照應答方式來進行的,非接觸式的卡有很多工作狀態,各個狀態的轉化可通過讀卡器向卡發送一系列命令完成。射頻構件的接口函數說明如下所示:
// ==操作Type A卡的部分主要函數======
void pcdinit();//R初始化
char pcdreset();//RC531復位
char pcdrequest(uint8 req_code);//尋卡
char pcdanticoll(uint8 *snr);//防碰撞
char pcdselect(uint8 *snr);//選定一張卡
// =========操作Type B卡的函數========
void pcdinitB();//B卡初始化
char pcdrequestB(uint8 *pupi);//尋B卡
char pcdattrib(uint8 *pupi);//發送attrib命令
char pcdhaltB(uint8 *pupi);// B卡掛起
char pcdgetUID(uint8 *snr,uint8 *len);//獲得B卡的ID
//==================================
pa相關文章:pa是什么
上拉電阻相關文章:上拉電阻原理 鎖相環相關文章:鎖相環原理
評論