微波EDA网,见证研发工程师的成长!
首页 > 微波射频 > 射频工程师文库 > 基于MCF52235 的RFID 通用开发平台设计

基于MCF52235 的RFID 通用开发平台设计

时间:06-12 来源:3721RD 点击:

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

//==================================

MCF52235与LCD构件的通信同样采用串行方式。串行通信的一次数据分3个字节传输。第一个字节数据格式为11111AB0,表示串行控制,A是选择数据方向,1表示LCD到MCF52235,0表示MCF52235到LCD. B是选择数据类型,1表示数据为显示数据,0表示数据为控制命令。第二个字节格式为DDDD0000,表示8位数据的高4位。第三个字节格式为0000DDDD表示8位数据的低4位。

LCD 构件接口函数说明如下所示:

  //==================================

  void lcd_init();//初始化

  void lcd_display (const char* buf, int line);//在第line 行显示buf,line>=0 && line<= 3

  //==================================

  USB 软件构件比较简单,只需对MC9S12UF32的USB 模块进行初始化,UF32 便可以和MCF52235 进行交互了。 由于MCF52235 与UF32采用串口连接, 因此只要在串口中断程序中调用USB 构件,UF32 便可从串口接收数据, 然后通过USB 传送给上位机。 上位机通过USB 接口发送数据给UF32 也产生一个中断,在中断程序把数据缓存起来再调用USB 构件, 通过串口发送给MCF52235. USB 构件接口函数说明如下所示:

  //==================================

  void uf32_uart_init(void);//uf32 模块初始化

  void uf32_uart_send(uint8 ch[],uint32 n); //发送数据

  uint32 uf32_uart_rev (uint8 ch [],uint32 n); //接收数据

  //==================================

  语音构件相对比较简单,接口函数说明如下所示:

  //==================================

  void audio_init();//语音模块初始化

  void audio_play(int i);//语音播放

  void audio_stop();//语音停止

  //==================================

  串口构件接口函数说明如下所示:

  //==================================

  uint8 hw_uart_init(uint8 uartNo, uint32 baud);//串口初始化

  uint8 hw_uart_rev_one (uint8 uartNo, uint8 *fp); //串口接收一个字节到fp

  uint8 hw_uart_send_one(uint8 uartNo, unit8 ch);

//串口发送一个字

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top