STM32/51单片机实训day4——RFID数据读取|RC522|串口数据收发、可模拟RFID (三) 仿真
创始人
2024-05-02 21:12:45
0

目录

1 任务指导

2 实验步骤

3 串口调试

4 USART配置

5 fputs函数重写

内  容:能够读取RFID卡S50的ID——编程实现串口数据收发

学  时:3学时

知识点:电路图设计、USART配置  

重点: USART配置

难点:USART配置

时间:2022年12月22日 13:30~16:20 

1 任务指导

使用MFRC522读卡器读取S50卡的ID号,并显示在12864液晶上。

2 实验步骤

MFRC522读卡器和开发板的硬件接线,如图1-2所示,上图为电路图,下图为实物图。

图1-1 MFRC522硬件电路

图1-2  MFRC522读卡器电路图和实物图 

读卡器和开发板进行连接,连接方式如图1-3所示。

图1- 3  读卡器与开发板连接方式

MFRC522是高度集成非接触式(13.56MHz)读卡芯片。此发送模块利用调制和解调的原理,并将它们完全集成到各种非接触式通信方法和协议中。

MFRC522的发送模块支持ISO 14443A/MIFARE协议

MFRC522的内部发送器部分可以驱动读卡器天线与ISO 14443A/MIFARE卡和应答机的通信,无需其他的电路。接收器部分提供一个功能强大和高效的解调和译码电路,用来处理兼用ISO 1443A/MIFARE的卡和应答机的信号。数字电路部分处理完整的ISO1443A/MIFARE帧和错误检测。MFRC522支持MFARE更高速的非接触式通信,双向数据传输速率高达424Kbit/s。可以实现各种不同主机接口的功能:

(1)SPI接口

(2)串行UART接口

(3)I2C接口

不同类型的接口连接方法如图1-4所示。

 图1-4 不同类型接口的连接方法

开发板有专门的SPI接口,用于外接MFRC522。所以,本实验采用的是SPI接口,如图1-1所示。关于MFRC522的详细资料可以参考MFRC522中文手册。

软件实现步骤。下图1-5是读写流程。

图1-5 读写流程 

3 串口调试

为了模拟RFID数据通讯添加串口输出数据电路,通过查询数据手册,确定PA9引脚对应有USART1_TX(发送)功能。在proteus中添加虚拟终端,将虚拟终端的RXD(接收)引脚接与单片机引脚PA9连接。电路设计如图4。

图4 串口输出数据电路设计 

4 USART配置

在main.c中编写USART的配置函数,调用库函数配置USART相关参数,在配置参数之前,需要调用时钟使能函数对GPIOA、AFIO、USART的端口时钟进行使能。GPIO_InitTypeDef及USART_InitTypeDef结构体包含了GPIO和USART所需配置的参数,因此参数配置主要是调用GPIO_InitTypeDef及USART_InitTypeDef对其内部的元素进行配置。代码如下:

void usart_init(void)
{
GPIO_InitTypeDef  GPIO_InitStruct;
USART_InitTypeDef USART_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1, ENABLE);// PA9 -> Tx
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStruct);// USART
USART_InitStruct.USART_BaudRate = 9600;
USART_InitStruct.USART_WordLength = USART_WordLength_8b;
USART_InitStruct.USART_Parity = USART_Parity_No;
USART_InitStruct.USART_StopBits = USART_StopBits_1;
USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode = USART_Mode_Tx;
USART_Init(USART1, &USART_InitStruct);USART_Cmd(USART1, ENABLE);}

5 fputs函数重写

重写串口发送函数,代码如下:

int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t)ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) != 1);return ch;
}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...