STM32F401CCU6与MFRC522接线及读取示例
硬件准备
- stm32f401ccu6最小开发板
- rfid-rc522开发板
- usb2ttl转接, 可以用pl2303, ch340, CP2102, FT232
- Mifare 1K卡, UID长度4字节的版本
软件准备
- Keil uVision5
- putty, xshell等可以连接com口的终端
MFRC522 13.56MHZ射频卡读卡器
SPI接线
SPI是Serial Peripheral Interface的缩写, 是一种同步的短距离串口通信接口规范, 由摩托罗拉与80年代开发, 主要用于嵌入式系统, 特别是SD卡和LCD显示. SPI设备由一主(master)多从(slave)组成, 通过SS(slave select)或者CS(chip select)选择通信. 通信需要的接口一般为4个:
- SCLK: Serial Clock (output from master)
- MOSI: Master Out Slave In (data output from master)
- MISO: Master In Slave Out (data output from slave)
- SS: Slave Select (often active low, output from master)
stm32f401ccu6与rfid-rc522和usb2ttl的接线
MFRC522 <====> STM32F401, 在rc522.c中设置, PA5, PA6和PA7是datasheet中定义的SPI1
SS(SDA) -> PA2
SCK -> PA5
MOSI -> PA7
MISO -> PA6
IRQ
GND -> GND
RST -> PA3
3.3V -> 3.3V
PL2303/CH340 <====> STM32F401, 在main.c的UARTmain_Init()方法中设置, PB6和PB7是datasheet中定义的USART1
TX -> PB7 (RX)
RX -> PB6 (TX)
GND -> GND
M1卡(Mifare 1K Card)
主要指标
- 容量为8K位EEPROM, 8192 bits(1K bytes)
- 分为16 个扇区,每个扇区为4 块,每块16 个字节,以块为存取单位
- 每个扇区有独立的一组密码及访问控制
- 每张卡有唯一序列号,为32 位
- 具有防冲突机制,支持多卡操作
- 无电源,自带天线,内含加密控制逻辑和通讯逻辑电路
- 数据保存期10年,可改写10万次,读无限次
- 工作温度:-20℃ ~ 50℃(温度为90%), PET 材料封装的M1卡温度可达100℃。
- 工作频 :13.56MHZ
- 通信速 :106Kbps
- 读写距离:10cm以内(与读写器有关)
存储结构
- M1卡分为16个扇区, 每个扇区分为4块(块0、块1、块2、块3), 也可以将16个扇区的64个块按绝对地址编号为 0 - 63
- 第0扇区的块0用于存放厂商代码, 已经固化, 不可更改
- UID分为4byte, 7byte等版本
- 每个扇区的块0、块1、块2为数据块, 可用于存贮数据. 数据块可作两种应用
- 用作一般的数据保存,可以进行读、写操作
- 用作数据值,可以进行初始化值、加值、减值、读值操作
- 每个扇区的块3为控制块,包括了密码A(6 byte)、存取控制(4 byte)、密码B(6 byte)
- 每个扇区的密码和存取控制都是独立的, 可以根据实际需要设定各自的密码及存取控制.
- 存取控制为4个字节共32 位
- 扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的
- 在存取控制中每个块都有相应的三个控制位
- 三个控制位以正和反两种形式存在于存取控制字节中, 决定了该块的访问权限(如进行减值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)
实物图及检测输出
接线图
输出格式
代码说明
- 在Keil MDK5中可以直接打开项目运行, 需要有STM32F401CCUx的依赖库
- 项目中使用USART1作为printf的输出
- 为了在stm32f401中可以使用, 将USART1设置为PB6和PB7, 如果要调整, 需要修改main.c的UARTmain_Init()方法
- SPI脚如果要调整, 需要修改rc522.c, PA5, PA6和PA7是datasheet中定义的SPI1
- 仅支持UID长度为4byte的M1卡
- 运行中会循环读取靠近的射频卡, 当读取成功时
- 读取前4个字节, 作异或(^)校验, 将结果与第5个字节比较, 不相同则返回错误
- 与预设的MyID作比较, 判断是否相同并展示
- 循环依次将64个区块读出并展示
下载
https://pan.baidu.com/s/1618xzotP3IG9aNII39CJ0g 提取码: 4c8c