历史上的今天
返回首页

历史上的今天

今天是:2025年03月09日(星期日)

正在发生

2021年03月09日 | Cortex-M0+的RFID读卡器模块设计

2021-03-09 来源:eefocus

简介:LPCS00系列是基于ARM Cortex-M0+的低成本32位MCU系列产品,工作时CPU 频率最高可达30 MHz。它支持最高16 KB的闪存和4 KB的SRAM。


1 主控和射频芯片简介

1.1 主控芯片NXPLPC812

LPCS00系列是基于ARM Cortex-M0+的低成本32位MCU系列产品,工作时CPU 频率最高可达30 MHz。它支持最高16 KB的闪存和4 KB的SRAM。


1.2 射频芯片SLRC610

SLRC610是NXP公司新一代多协议无线近场芯片中的一员,它是用于13.56 MHz的非接触式通信的高度集成的收发器芯片,支持并遵守IS0/IEC15693、EPC UID和ISO/IEC18000-3 mode 3/EPC Class-1 HF协议的卡片。它与主机的通信接口有SPI、UART、I2C总线(包括I2C和I2CL模式)三种。另外,它的安全性比上一代更高,支持安全访问模块(SAM)的连接。


数据手册的第一个正式版(SLRC610 v.3.1)在2012年9月6日发布,从目前最新的数据手册(SLRC6l0 v.3.4)来看,新版主要是修正发现的描述错误和数据值的更新。


2 模块硬件设计

模块主要由通信升级接口、调试接口、提示信号、LPC812、SLRC610、模块内置天线等组成。模块框图如图1所示。

图1 模块框图

图1 模块框图


2.1 主控芯片电路设计

LPC812是LPC800 系列配置最高的型号,它有TSSOP16、SO2O、TSSOP20三种封装,因为设计的是小模块,所以选用了sO2O塑料小型封装。由于LPC812支持通过开关矩阵将特殊功能分配到某个I/O引脚,所以在设计原理图的时候可以充分考虑将某个功能分配到哪个引脚上既方便布线、性能又好。另外,本次设计中LPC812内置的1%精度的12 MHz内部RC振荡器作系统时钟。主控芯片电路如图2所示。图2 主控芯片电路图

图2 主控芯片电路图


2.1.1 通信、升级接口设计

LPC812继承NXP以往单片机的在系统编程(ISP)升级功能。由于在ISP模式下占用了USARTO,而本次设计模块的通信接口也是串口,故将通信和升级合并为一个接口。要模块正常工作则将IsPEN悬空(推荐接VCC);要升级固件,则将ISPEN接GND,然后给LPC812上电,再通过工具软件Flash Magic烧写新固件。这部分对应图2中的J1接口。


2.1.2 调试接口设计

LPC812支持SWD调试、JTAG 边界扫描、微跟踪缓冲区(MTB)三种方式。其中,SWD使用较为方便,仅仅需要串行线调试数据输入/输出(SWDIO)、串行线时钟(SWCLK)、复位(nRST)这i根线。本设计中为了调试方便又加了VCC和GND这两根线,也就是说可以在只插这个调试接口的情况下对模块进行调试。在默认情况下它的VCC是从外界取电的,所以要外部给板子供电才能调试。打开JTAG的外壳,将内部的跳线帽插到靠近VCC的两针上,那么JTAG工具的VCC就对外供电了,对板子调试可以不用再外部供电。这部分对应图2中J2接口。


2.2 射频芯片电路设计

SLRC610只有一种小型的HVQFN32封装,特别要注意它的第33引脚,也就是芯片朝PCB面正中间一个正方形的面,这个面必须良好接地,否则会出现些奇怪的现象。SLRC610支持SPI、I2C 总线、I2CI 和UART 四种接口,它会在掉电复位后通过IFSEL0和IFSEL1电平组合来判断当前主机接口类型。本次设计是采用了硬编码的SPI接口,在硬件电路上需IFSEL0接地、IFSEL1接VCC。射频芯片电路如图3所示。其巾,引在SLRC610芯片中33引脚VSS的作用是接地和散热,所以此引脚必须良好接地。

图3 射频芯片电路图

图3 射频芯片电路图


天线的匹配电路包含一个EMC低通滤波器(L1、L2、C5、C6),一个匹配电路(C3、C4、C7~ C1O),一个接收电路(R2、R3、C15)和天线本身。接收电路的元件值需被特别设计并根据板子实际情况调整。本次设计模块的尺寸有限,接收电路采用了元器件较少的单端模式,且天线线圈是内置在PCB中间层,以方便应用,减小体积。


3 模块软件设计

主程序包含系统初始化、LED测试、串口测试、SLRC610测试这4部分。系统初始化部分主要有系统内核时钟更新、GPIO初始化、systick配置功能。LED测试部分主要包含LED端口初始化、更新为灭状态、更新为亮状态、翻转亮灭状态功能测试。当然这之后LED已经配置好,可以随意使用三个更新状态函数。串口测试主要包括对串口功能引脚分配(LPC812的开关矩阵,这部分放在SPI配置部分详细叙述)、串口初始化、发送字符串等功能测试。这之后,就可以通过串口打印调试信息。


3.1 SLR0610测试部分

SLRC610测试部分包含设置接口连接、SLRC610复位、NXP lib初始化、等待SLRC610复位就绪进人空闲状态、检测15693卡、LED灯提示等。设置 接口连接部分主要是通过软件来设置IFSEL0和IFSEL1的电平,告诉SLRC610采用哪种接口,因为本设计中这两个引脚是通过硬件方式设置的,所以这里没有执行实际操作,仅打印了当前使用了SPI接口的提示信息。


SLRC610复位是通过将SLRC610的PDOwN 引脚加载超过10μs的持续高电平来启动内部复位程序的,它包含复位电源和启动时间两个阶段。由于它的复位方式和老一代的方式不同,所以升级射频芯片的时候要格外注意。笔者调试的时候就遇到过因复位导致的问题,当循环跑SLRC610测试时,会偶尔成功。追踪发现读写寄存器不是每次都成功,后来调了较长一段时间才发现是复位的问题。在本次设计中为确保复位成功,后面又加了“等待SLRC610复位就绪进入空闲状态”这一步骤。


SLRC610测试流程图如图4所示。

图4 SLRC610测试流程图

图4 SLRC610测试流程图


3.2 检测 15693

检测15693协议主要包含SLRC610软复位、初始化15693协议层、应用15693协议设置、获取15693卡系统信息。SLRC61O软复位就是将SLRC610内部E2PROM 中保存的寄存器的默认值重新加载到寄存器中。一般初始化的时候会用到,当然切换协议的时候也会用到。初始化15693协议层主要完成参数结构体长度检查和私有变量初始化。应用15693协议设置是根据参数中设置的卡的类(PHHAL_Hw_CARDTYPE_ISO15693)来加载该协议下SLRC610的寄存器的默认配置,包括调制深度、调制方式、超时时间等。检测15693流程图如图5所示。

图5 检测15693流程图

图5 检测15693流程图


3.3 Get System lnfo命令

Get System Info是ISI15693的可选命令,主要用来检索卡片的基本信息。请求和应答帧都是有帧头和帧尾的,如下所示。

去掉帧头帧尾 一共有4个字段,其中一个字段(8字节的UID)是可选的。它的响应信息格式如下所示,其中斜体部分的字段表示,只有在响应信息中有该标志,才有这个字段的信息。

由于它发送的字节少(在不加UID的情况,加 上CRC才4字节),而且只要卡在场中就能使用,比较方便用示波器抓波形以分析收发的数据是否正常。


获取15693卡系统信息的写法有两种:第一种是用phpalSlil5693_Sw_Exchange和卡片交换信息的时传两字节数据“0x02 0x2B”,并设发送长度为两字节;第二种是用phpalSlil5693_Sw_Exchange和卡片交换信息的时传两字节数据“0x2B”,并设发送长度为一字节。从本质上来讲,这两种做法的最终结果都是发了同样的数据,不同之处在于它们的发送方式。phpalSli15693_Sw_Exchange的第二个参数有一个是写选项,对于第一种,要将其设为PH_EXCHANGE_LEAVE_BUFFER_BIT,第二种设为PH_EXCHANGE_DEFAULT,还得将0x02设置到第一个参数的bFlags上。另外在使用phpalSli15693_Exchange时要特别注意,在该函数前面用phpalSli15693_SetConfig函数设置超时。假如没有设置该函数,那么每次只能收到卡片返回的前5位正确数据。获取15693卡系统信息流程图如图6所示。

图6 获取15693卡系统信息流程图

图6 获取15693卡系统信息流程图


3.4 SPI通信

采用宏定义加数组的方式来配置I/O引脚,这种方法比较灵活,可移植性很强,又方便代码维护 。LPC800系列加了一个开关矩阵,将可转移功能通过开关矩阵分配给引脚PIO0_0~PIO0_17,使用起来很方便。使用的时候需要先查可转移功能所对应的SWM 引脚分配寄存器。找到后先将原来的数据清除,再写上新分配的引脚。操作过程中要谨慎,绝不能修改不该动的位。


这里初始化调用LPC812的库函数,将SP10设置为主机模式,为确保通信可靠在SSEL置位和数据帧起点之间、制数据帧末尾和SSEL解除置位之间、相邻数据帧之间插入2个SPI时钟周期,两次传输之间SSEL解除置位的最短时间为3个SPI时钟周期。


4 模块调试和测试

4.1 调试方法

由于15693的编码方式是SOF信号后每一定长度代表一定量的信息,所以可以先取信号的开始时间,然后计算下一个的时间,去看示波器每一个时间段的波形,记录下来然后去整体解析。


抓到数据后开始解析数据,比如获取卡片信息的命令(0x02 0x2B 0x26 0xA3),它总共有4个字节,最后两个字节是CRC校验。通过调程序可以看到VCD发的实际命令(0x02 0x2B),而CRC则是硬件算好直接发的,所以通过调程序无法看到它。


4.2 测试

模块的实际大小为45 mm×45 mill,模块中芯片、元器件都集中在模块中间,线圈以蚀刻的方式在靠近的边缘的PCB中间层。笔者手上有TI、NXP、ST公司的15693卡共4种型号,做了读卡距离测试。测试方法是将卡放于模块天线正对面,通过观察模块上LED灯是否亮就能知道是否读卡成功,将卡放到能读到的高度,再用直尺去量高度。


结语

本模块设计中采用的是较新的主控和射频芯片,价格较低,性能又强,而且在很长一段时间内不会有供货、价格等方面的问题。LPC800系列既增加了开关矩阵等实用的功能,方便用户电路设计,也集成了老一代单片机的ISP升级功能。本文详细描述了这两颗芯片的使用方法以及对模块的调试方法与步骤等。该模块采用贴面封装的元件,具有低成本、低功耗、小尺寸、读写卡距离远等特点,使用起来很方便,具有较高的应用价值。

推荐阅读

史海拾趣

Arima Lasers Corp公司的发展小趣事

随着产品线的丰富和技术的成熟,Arima Lasers Corp开始积极寻求市场拓展的机会。公司首先与一些知名的电子设备制造商建立了合作关系,为其提供定制的激光解决方案。这些合作不仅帮助公司扩大了市场份额,也提升了品牌知名度。随后,Arima Lasers Corp进一步拓展了国际市场,与海外企业开展技术交流和贸易往来,推动了公司的全球化发展。

AITSEMI公司的发展小趣事

AITSEMI公司成立于XXXX年,创立之初便以研发高性能模拟与混合信号IC为核心目标。面对当时市场上对高性能、高性价比集成电路的迫切需求,AITSEMI团队凭借深厚的技术积累和敏锐的市场洞察力,成功开发出了一系列具有竞争力的产品,为公司的初步发展奠定了坚实的基础。

亿晶源(ekinglux)公司的发展小趣事

面对不断变化的市场环境和客户需求,亿晶源始终保持敏锐的市场洞察力和创新精神。公司将继续加大研发投入,推出更多具有竞争力的新产品;同时,加强与国际知名企业的合作与交流,提升公司的国际竞争力。展望未来,亿晶源将致力于成为全球领先的LED半导体制造商之一。

请注意,以上故事框架仅为示例,具体细节和事实可能需要根据实际情况进行调整和补充。

Force Technologies Ltd公司的发展小趣事

背景:在电子行业的早期,Force Technologies Ltd便以其对新材料和先进制造工艺的深入研究而闻名。公司创始人敏锐地洞察到半导体材料对于电子行业的重要性,于是投入大量资源进行研发。

发展:经过数年的努力,Force Technologies Ltd成功开发出一种新型半导体材料,该材料在提高芯片性能的同时显著降低了能耗。这一创新成果迅速吸引了全球电子巨头的关注,并促成了一系列重要的技术合作和订单。随着产品广泛应用于智能手机、平板电脑等消费电子产品中,Force Technologies Ltd迅速崛起为行业内的技术领军者。

Adafruit公司的发展小趣事

背景:在电子行业的早期,Force Technologies Ltd便以其对新材料和先进制造工艺的深入研究而闻名。公司创始人敏锐地洞察到半导体材料对于电子行业的重要性,于是投入大量资源进行研发。

发展:经过数年的努力,Force Technologies Ltd成功开发出一种新型半导体材料,该材料在提高芯片性能的同时显著降低了能耗。这一创新成果迅速吸引了全球电子巨头的关注,并促成了一系列重要的技术合作和订单。随着产品广泛应用于智能手机、平板电脑等消费电子产品中,Force Technologies Ltd迅速崛起为行业内的技术领军者。

Crocus公司的发展小趣事

展望未来,Crocus将继续致力于TMR传感器技术的研发与创新。公司计划进一步拓展产品线,提升产品性能,满足更多领域的需求。同时,Crocus还将加强与产业链上下游企业的合作,共同推动整个电子行业的发展。

这五个故事展示了Crocus公司在电子行业中的发展历程和取得的成就。从创立初期的艰难探索到技术突破、产品升级、与Allegro的合并、市场拓展以及未来的持续创新,Crocus始终保持着积极进取的精神和不断创新的态度,为电子行业的发展做出了重要贡献。

问答坊 | AI 解惑

单片机控制GSM模块

void Rs485_Do(void) interrupt 4 using 1 {& K   if(RI==l)% z& {/ a- N# G0 k   {* {& F* F. [$ |! E8 d, r\" E, H     RI=0; RsBuq[RsPoint++]=SBUF;2 G9 ^2 y\" `( x\' [) X9 c8 a     if fRsPo ...…

查看全部问答>

请问铝条的最大电流密度是多少?

请问铝条的最大电流密度是多少?主要和什么有关?…

查看全部问答>

如何在Multisim中把数据固化到eeprom中啊

如何在Multisim中把数据固化到eeprom中啊在线等,谢谢回答…

查看全部问答>

sources.cmn中一行前面加"#"号是表示注释掉吗?和#if…!endif有什么区别?

看到如下内容有点迷糊: WINCEOEM=1 WINCECPU=1 NOMIPS16CODE=1 ##WARNLEVEL=4 ##WARNISERROR=1 还有: # define to enable suspend/resume related debugging (requires clean build) #CDEFINES=$(CDEFINES) -DDEBUG_PRCM_SUSPEND_RESUME ...…

查看全部问答>

wince下ui问题

刚接触wince,有两个wince的初级ui问题,望高手赐教: 1:如果mfc的标准控件满足不了我的要求,必须要自己实现满足自己要求的控件类吗? 大家在做项目的时候用的都是标准的控件吗? 2:如果动态创建控件,那么控件的坐标信息怎么管理?…

查看全部问答>

51单片机=====步进式电机

51单片机=====步进式电机 BY: 飞龙  QQ: 9086074    希望认识更多的单片机开发朋友一起交流   第一次做教程不好多多见谅 BLOG: http://hi.baidu.com/alalmn 1.        烧写程序 2.  ...…

查看全部问答>

TI的系统级静电放电保护指南

本帖最后由 dontium 于 2015-1-23 13:35 编辑 TI的系统级静电放电保护指南 …

查看全部问答>

成功移植带多媒体驱动的linux-2.6.35.4到6410

转自:http://www.arm9home.net/read.php?tid-8106.html   喜讯:2010-9-24 在诸位沉浸在2010中秋佳节之假日时,友善之臂的嵌入式软件疯子们,经过不懈努力,终于在6410上成功移植了支持多媒体驱动的Linux-2.6.35.4,请看截图,是采用m ...…

查看全部问答>

PCB布线 技巧

本帖最后由 paulhyde 于 2014-9-15 09:25 编辑  …

查看全部问答>

【设计工具】赛灵思工具及 IP 更新

赛灵思在努力帮助设计人员提高工作效率的同时,不断改进产品、IP 以及设计工具。我们将在此报告自 2011 年 7 月起,有关旗舰 FPGA 开发环境、ISE®设计套件以及赛灵思 IP 核的当前最新更新情况。产品更新包括 ISE 设计套件三个版本(逻辑、嵌入 ...…

查看全部问答>