基于STM32F103系列的RFID低频读卡器设计项目(保姆级教程)_stm32 rfid识别(1)

本文详细介绍了基于STM32F103的RFID低频读卡器设计,包括数值帧指令分析、读卡器地址修改和功能测试。讲解了如何配置读卡器功能、计算校验和,以及通过串口进行数据通信和代码编写。
摘要由CSDN通过智能技术生成
(2)数值帧指令分析

我们来看读卡器的功能配置指令(如图3),以上我说的相关功能都可以在这里配置。

图3 功能配置指令

由上图可知,一帧数据指令是由以上若干格式组成的。我们要更改相关功能只需要修改对应的值即可,以下贴出读卡器使用说明中各个位指令的作用(如图5)。

图4 各个位的作用

这里要注意的是校验和,上面可能说得不太清楚,根据我的理解是先把BCC校验(异或校验)算出来,然后把得出来的二进制位全部取反,取反后得到的就是校验和。写个例子,比如根据上面的功能配置指令,我写出来了一帧配置指令:

20 00 2C 04 00 00 96 00 校验和 03

配置指令的意思是开启主动输出卡号,主动输出卡片离开数据,9600的波特率,开启蜂鸣器提醒。我现在开始要算校验和,根据指示我得出来00 2C 04 00 00 96 00。

然后计算BBC校验码,如图5。

图5 BBC校验码计算

得出二进制位是1011 1110,按位取反获得0100 0001。

转换为十六进制为:41

所以我们的校验和是41,填入后完整的数据指令是:

20 00 2C 04 00 00 96 00 41 03

需要注意的是,数据指令的第二个位是读卡器的地址,你要改哪个读卡器的话就用地址定位你要改的读卡器。

2.准备步骤

(1)修改读卡器地址

如果你打算只使用一个读卡器完成测试的话,那就可以跳过这一步,否则的话请按照此步骤将读卡器的地址设置为不同的值。两个以上读卡器的话要修改读卡器地址,因为指令发送是发送给单个读卡器的,你需要读卡器的唯一地址才能确定这指令发给谁,否则后面发送指令时一样的地址会导致冲突。其中一个读卡器默认地址就为0x00就行了(如果你不想要0x00的话改成其他也行),其他的改成其他值(0xFF以内)。首先我们先把要改地址的读卡器接好线,电源线接3.3V,A、B线接到RS485转TTL芯片的A、B线,然后RS485转TTL芯片的串口线接到我们的USB转串口芯片上,j接好后插电脑。打开串口调试助手,按如图3所示配置:

图6 串口调试助手的相关配置

接下来我们查看修改模块地址指令(如图7)。

图7 修改模块地址指令

我们可以看到,我们要修改的有两个值,一个是原地址,一个是新地址,分别位于第2和第5个字节。由于读卡器出厂都是默认地址为0x00,原地址就填0x00。新地址的话填你想要的值,我填的是0x01,发送成功后会接受到反馈指令,如图8。

图8 修改读卡器地址

(2)测试读卡器功能

如果我们用默认功能配置的话,是开启主动输出卡号,主动输出卡片离开数据,9600的波特率,开启蜂鸣器提醒。所以我们先测试的时候是把卡片放到天线上去,可以听到蜂鸣器响一声,并且串口调试助手接受到数据(如图9)。卡片拿走后返回卡片离开数据(如图10)。(这里我使用的是地址为0x01的读卡器,所以数据帧第二个字节是01)

图9 检测到卡片时返回的数据

图10 卡片已离开

我们不仅要它读到卡号返回数据,还要随时能够确定读卡器天线上有没有卡片,接下来测试读卡指令,先看读卡指令的通讯格式(如图11)。

图11 寻卡指令格式

我们根据地址寻卡,比如地址为0x01的读卡器,我们就把第2字节的地址位改成0x01,然后计算校验值得到D9,指令是20 01 27 00 D9 03。如图12所示。

图12 有卡与无卡数据帧返回情况

测试完毕,开始写代码了。

3、准备接线

整个实验我使用了STM32的串口1和串口2,串口1连接电脑打印调试信息,串口2接RS485转TTl芯片,RS485转TTl芯片再接读卡器模块。

STM32 -> RS485转TTl芯片

PA2 -> TXD

PA3 -> RXD

RS485转TTl芯片 -> 读

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值