系统采用STC公司的IAP11F60X单片机,具有62 KB程序空间,引导程序占1 KB,应用程序和升级程序各占28 KB,IAP参数占1 KB(2页),其余为用户数据区[2]。

射频模块为FM1702SL,单片机通过模拟SPI与之连接,可以读取ISO14442A标准系列非接触卡。具体功能模块见图4。

微处理器IAP技术中是如何融合rfid技术的

在项目设置中需要设置应用程序起始地址,例如在本系统中起始地址设为0x0400,此外需要特别处理中断向量。51单片机的中断向量为固定地址,此时中断向量都在引导程序中,而中断服务函数均在应用程序中,因此需要在引导程序中设置中断跳转到应用程序中,举例如下:

;-----定时中断0----------------

ORG 000BH

LJMP AP_ADDR+0BH

;-----定时中断1----------------

ORG 001BH

LJMP AP_ADDR+1BH

;-----------------------------

AP_ADDR 定义为应用程序起始地址,而在应用程序中依然通过以下语法实现中断函数:

void timer0_ISR(void) interrupt 1 using 1

void timer1_ISR(void) interrupt 3 using 1

使用IAP11F62X单片机,在处理完升级卡后可以通过给IAP_CONTR赋值0x20强制软件复位跳转到引导程序,引导程序完成升级。然后通过LJMP AP_ADDR 指令跳转到应用程序,完成IAP过程并继续运行。

2.2 STM32单片机系统IAP

某型非接触卡加油机控制板采用STM32F103RC处理器,具有256 KB Flash,读卡电路采用性价比更高的FM1701,由软件实现FM1208 CPU卡的加密认证读取,通过车号识别模块识别车辆,并可以通过串口摄像模块拍照,与加油记录一起保存在大容量串口Flash中,其结构框图如图5所示。

微处理器IAP技术中是如何融合rfid技术的

STM32位处理器IAP功能与51单片机系统大体相似,需要设置程序起始位置,引导程序必须设置为Flash基地址(0x08000000),而应用程序地址则是0x0800-2000。不同之处在于STM32的中断向量表可以通过NVIC_Set-VectorTable函数设置到0x08002000,而不必通过引导程序跳转[3]。此外,STM32F103RC具有48 KB SRAM,可以读入升级卡全部数据,校验正确后写入Flash。

引导程序完成升级程序代码复制交换后,通过绝对地址跳转语句即可跳转到指定地址的应用程序执行。应用程序也通过相同语句跳转到引导程序执行,仅地址不同。

3 主机写升级卡软件

主机写卡软件读取HEX格式或者BIN格式程序文件,按IC卡容量分割后写入升级卡。由于RFID卡数据容量有限,升级程序可能需要写入多张升级卡。