注册登录

30分钟编写RFID读卡程序,你能做到吗?

RFID技术应用广泛,常见于停车场、酒店门锁、门禁安防、公共交通等,而RFID读卡是RFID应用过程中的重点和难点。本文详细讲解AMetal的RFID组件移植和使用,让你30分钟实现RFID读卡。

本文设计的RFID读卡器主控采用高性能微控制器ZLG217P64A,读卡芯片采用FM17550,主控通过SPI接口与读卡芯片通信,实现RFID读卡。

一、ZLG217高性能ARM微控制器

ZLG217P64A是一款基于ARM Cortex-M3内核的高性能32位微控制器,具有128KB Flash/20K SRAM,运行主频高达96MHz,支持多路UART、SPI、I²C等外设接口,功能框图如图1。该芯片搭载AMetal软件平台,具有丰富的例程和功能组件,可快速实现跨平台移植,轻松解决各项目中的难点和痛点。

 微信图片_20190711103332.jpg

图1 ZLG217功能框图

二、AMetal读卡组件

AMetal平台提供了FM175xx的读卡组件和接口函数,如图2,读卡软件设计时只需要调用接口函数即可操作读卡芯片,实现读卡芯片与卡片的数据交换。

 微信图片_20190711103336.jpg

图2 读卡接口函数

三、AMetal读卡程序

1、FM175xx初始化

AMetal已经提供了FM175xx系列的驱动函数,在使用之前,必须先完成初始化,初始化函数原型如图3:

 微信图片_20190711103339.jpg

图3 FM175xx初始化函数

  • p_dev为指向am_fm175xx _dev_t类型实例的指针;

  • p_devinfo为指向am_ fm175xx _devinfo_t类型实例信息的指针;

  • spi_handle为获取SPI服务的实例化句柄。

基于以上信息初始化示例如图4:

 微信图片_20190711103341.jpg

图4 初始化示例

2、激活卡片

激活卡片接口函数是请求、防碰撞和选择三条命令的组合,使用AMetal读卡组件可以大大减少读卡驱动编写的时间。激活卡片接口函数原型如图5:

 微信图片_20190711103344.jpg

图5 激活卡片函数

  • p_dev为指向am_fm175xx _dev_t类型实例的指针;

  • req_mode为请求模式;

  • p_atq为存放卡片类型的缓冲区;

  • p_uid为存放序列号的缓冲区;

  • p_uid_real_len为序列号的实际长度;

  • p_sak为最后一次选择应答SAK。

执行激活卡片函数,若卡片激活成功,返回值为0,不为0则激活失败。

基于以上信息激活卡片输出UID的示例如图6:

微信图片_20190711103347.jpg

图6 激活卡片示例

3、密钥验证

对卡片读写操作前必须先进行密钥验证,密钥验证接口函数原型如图7:

 微信图片_20190711103350.jpg

图7 密钥验证函数

  • p_dev为指向am_fm175xx _dev_t类型实例的指针;

  • key_type为密钥类型;

  • p_uid为卡序列号;

  • p_key为6字节密钥;

  • nblock为需要验证的卡块号。

卡片密钥验证成功,返回值为0,若返回值不为0,密钥验证失败。

基于以上信息,验证密钥示例如图8:

 微信图片_20190711103353.jpg

图8 密钥验证示例

4、读写卡片数据

经过卡片激活、密钥验证后,可以对卡片数据进行读写操作。读卡片数据函数原型如图9:

 微信图片_20190711103356.jpg

图9 读卡函数

  • p_dev为指向am_fm175xx _dev_t类型实例的指针;

  • nblock为需要读取的卡块号;

  • p_buf为存放读取数据缓冲区。

写卡片数据原型如图10:

 微信图片_20190711103359.jpg

图10 写卡函数

  • p_dev为指向am_fm175xx _dev_t类型实例的指针;

  • nblock为需要写入的卡块号;

  • p_buf为写入数据缓冲区。

基于以上信息,读写卡片数据示例如图11:

 微信图片_20190711103401.jpg

图11 读写卡示例

使用AMetal读卡组件和接口函数,经过初始化、激活卡片、验证密钥、读写卡片四个步骤,即可轻松实现RFID的应用。30分钟实现RFID读卡,你能做到了吗?

0条回复

作者
用户头像
文章 0关注 0粉丝 0
相关文章
联系客服