硬件准备

  1. stm32f401ccu6最小开发板
  2. rfid-rc522开发板
  3. usb2ttl转接, 可以用pl2303, ch340, CP2102, FT232
  4. Mifare 1K卡, UID长度4字节的版本

软件准备

  1. Keil uVision5
  2. 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以内(与读写器有关)

存储结构

  1. M1卡分为16个扇区, 每个扇区分为4块(块0、块1、块2、块3), 也可以将16个扇区的64个块按绝对地址编号为 0 - 63
  2. 第0扇区的块0用于存放厂商代码, 已经固化, 不可更改
  3. UID分为4byte, 7byte等版本
  4. 每个扇区的块0、块1、块2为数据块, 可用于存贮数据. 数据块可作两种应用
  5. 用作一般的数据保存,可以进行读、写操作
  6. 用作数据值,可以进行初始化值、加值、减值、读值操作
  7. 每个扇区的块3为控制块,包括了密码A(6 byte)、存取控制(4 byte)、密码B(6 byte)
  8. 每个扇区的密码和存取控制都是独立的, 可以根据实际需要设定各自的密码及存取控制.
  9. 存取控制为4个字节共32 位
  10. 扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的
  11. 在存取控制中每个块都有相应的三个控制位
  12. 三个控制位以正和反两种形式存在于存取控制字节中, 决定了该块的访问权限(如进行减值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)

实物图及检测输出

接线图





输出格式

代码说明

  1. 在Keil MDK5中可以直接打开项目运行, 需要有STM32F401CCUx的依赖库
  2. 项目中使用USART1作为printf的输出
  3. 为了在stm32f401中可以使用, 将USART1设置为PB6和PB7, 如果要调整, 需要修改main.c的UARTmain_Init()方法
  4. SPI脚如果要调整, 需要修改rc522.c, PA5, PA6和PA7是datasheet中定义的SPI1
  5. 仅支持UID长度为4byte的M1卡
  6. 运行中会循环读取靠近的射频卡, 当读取成功时
    1. 读取前4个字节, 作异或(^)校验, 将结果与第5个字节比较, 不相同则返回错误
    2. 与预设的MyID作比较, 判断是否相同并展示
    3. 循环依次将64个区块读出并展示

下载

https://pan.baidu.com/s/1618xzotP3IG9aNII39CJ0g 提取码: 4c8c

参考

STM32F401CCU6与MFRC522接线及读取示例的更多相关文章

  1. Java 通过 BufferReader 实现 文件 写入读取 示例

    package com.javatest.techzero.gui; import java.io.BufferedReader; import java.io.File; import java.i ...

  2. 特殊集合(stack、queue、hashtable的示例及练习)

    特殊集合:stack,queue,hashtable stack:先进后出,一个一个的赋值一个一个的取值,按照顺序. .count           取集合内元素的个数 .push()        ...

  3. Java将文件中的内容转换为sql语句(和并发定时读取文件)

    数据文件内容data.txt {USER_TYPE=1,CREATE_USER=ZHANG,UPDATE_USER=li,OPER_NUM=D001,SRC=2,UPDATE_TIME=2018-11 ...

  4. 开源javacsv读取csv文件

    一.下载地址:https://sourceforge.net/projects/javacsv/ 读取示例: public static void main(String[] args) { // 1 ...

  5. .Net Core配置文件读取整理

    一 .配置文件说明 1.配置,主要是 指在程序中使用的一些特殊参数,并且大多数 仅在程序启动的之后指定不需要修改. 2.在以前.Net项目中配置文件主要指app.config或web.config,但 ...

  6. RxJava API使用示例

    概述 RxJava API示例代码,可离线查看rxjava1.0大部分API的marble图,描述,示例代码,并支持示例代码实时输出及展示执行结果. 详细 代码下载:http://www.demoda ...

  7. Spring Boot 学习系列(07)—properties文件读取

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的properties读取方式 一般的,我们都可以自定义一个xxx.properties文件,然后在工程 ...

  8. Matlab 从入门到精通 Chapter11 文件读取I/O

    11.1 工作空间数据读取 将工作空间的变量保存为文件,可以使用save命令.  save('filename') 将文件保存在当前目录下,文件名为filename.mat save('filenam ...

  9. 深入理解 EF Core:EF Core 读取数据时发生了什么?

    阅读本文大概需要 11 分钟. 原文:https://bit.ly/2UMiDLb 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能 ...

  10. matlab中imread 从图形文件读取图像

    来源:https://ww2.mathworks.cn/help/matlab/ref/imread.html?searchHighlight=imread&s_tid=doc_srchtit ...

随机推荐

  1. 例2.8 已知带头结点单链表L,设计算法实现:以表中第一元素作为标准,将表中所有值小于第一个元素的结点均放在第一结点之前,所有值大于第一元素的结点均放在第一元素结点之后。

    1.题目 例2.8已知带头结点单链表L,设计算法实现:以表中第一元素作为标准,将表中所有值小于第一个元素的结点均放在第一结点之前,所有值大于第一元素的结点均放在第一元素结点之后. 2.算法分析 3.代 ...

  2. SQLServer数据库优化学习-总结

    SQLServer数据库优化学习-总结 背景 各种能力都需要提升. 最近总是遇到SQLServer的问题 趁着周末进行一下学习与提高. 安装与优化 1. 数据库必须安装 64位, 不要安装成32位的版 ...

  3. TiDB的搭建与维护过程

    TiDB的搭建与维护过程 背景 总结一下TiDB的搭建以及简单维护过程. 目标: 简单快速的创建TiDB数据库,以及进行备份恢复等工作. TiDB 简介 TiDB(全称:Ti Distributed ...

  4. [转帖]一次ORA-3136的处理

    https://oracleblog.org/working-case/deal-with-ora3136/ 最近收到一个告警,用户说数据库无法连接,但是从监控上看,oracle的后台进程已经侦听进程 ...

  5. Grafana监控minio的极简方法

    Grafana监控minio的极简方法 背景 想监控一下minio的部分信息. 使用过程中需要关注的内容挺多的. 只看简单的node感觉已经不够了. 所以想监控易一下. 方式和方法 minio其实集成 ...

  6. [转帖]KingbaseES不同字符类型比较转换规则

    https://www.cnblogs.com/kingbase/p/14798059.html Postgresql 常用的字符数据类型的有char.varchar和text,其中 char 固定长 ...

  7. [转帖]InnoDB表聚集索引层高什么时候发生变化

    导读 本文略长,主要解决以下几个疑问 1.聚集索引里都存储了什么宝贝 2.什么时候索引层高会发生变化 3.预留的1/16空闲空间做什么用的 4.记录被删除后的空间能回收重复利用吗 1.背景信息 1.1 ...

  8. [转帖]Intel甘拜下风,挤牙膏比不过兆芯CPU

      https://baijiahao.baidu.com/s?id=1735997557665412214 本文比较长,有万字左右,因此在前面先把小标题集中亮个相. 即使大家一晃而过,我也要让精心拟 ...

  9. 【验证码逆向专栏】最新某度旋转验证码 v2 逆向分析

    声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容.敏感网址.数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许 ...

  10. win10家庭版禁用更新

    前言 2020年初因为疫情在家远程办公,而我老家没有电脑,先后向两位大学生借了两台电脑来办公,发现一个现象:他们的电脑系统都是家庭版,也就是刚买电脑时安装的win10家庭版.也问了其它几位计算机专业的 ...