STM32(HAL)驱动RFID模块(ATS522)

简介: STM32(HAL)驱动RFID模块(ATS522)

1. 简介

使用STM32F103C8T6单片机通过HAL库方式对ATS522模块进行驱动,操作过程如下。


2、操作流程

2、1硬件调试

该模块使用串口方式进行驱动,对于硬件部分首先将ATS522模块上SWIM引脚与GND短接,接着将正负极对接USB转TLL模块的正负极(5V),最好将TX、RX分别与USB转TLL模块上TX、RX模块反接。波特率为9600,接线无误后,刷卡进行识别,可以在串口调试助手上看到ID卡内部存储信息(不同ID卡信息不同,卡1ID信息如下所示。


11f3323a620a90336303ad40b5e792ce.png


2.2 Cubemax配置

对于基础配置过程点击此链接,因为该模块通过串口模块进行通讯,因此需要对串口进行配置,又需要对不同的ID卡信息进行识别,因此打开两个串口(串口1对ID信息进行发送,串口2对传感器进行通信),并且配置PB0对于LED灯进行驱动,便于观察效果,操作流程如下所示。


串口1配置如下所示:



串口2配置如下所示:



除了需要配置9600波特率,还需要打开串口中断,配置如下所示。


3a15434862c000b95c1d3e179f6a42d0.png


接着对PB0引脚的GPIO初始化进行配置,配置图如下所示。


1301a6a04851b4c56f92d350b86c7e4a.png


最好生成代码进行程序的书写。


2.3 keil端程序书写

首先在main.h文件中进行LED_ON、LED_OFF宏定义,如下所示:


cca5669f2b18235dd5e8699faeb10daa.png


接着在主函数上方进行中断回调函数的书写,如下所示:

/* USER CODE BEGIN PTD */
char revebuf[10];
uint8_t UID[50]={0};
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart->Instance == USART2){
        HAL_UART_Transmit(&huart1,(uint8_t *)revebuf,sizeof(revebuf),10);
    }    
    }    
}
/* USER CODE END PTD */


在主函数中添加一行代码即可,如下所示:

/* USER CODE BEGIN WHILE */
  while (1)
  {
   HAL_UART_Receive_IT(&huart2,(uint8_t *)&revebuf,10);
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */


对于不同的ID卡识别可以在串口调试助手上查看到内部数据(串口1波特率为115200),卡2ID卡内部信息如下所示:



想要实现ID卡识别功能,需要在回调函数中添加条件判断,如下所示:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart->Instance == USART2){
        HAL_UART_Transmit(&huart1,(uint8_t *)revebuf,sizeof(revebuf),10);
        if(revebuf[0]==0X33){
          LED_ON;
      }    
        else if(revebuf[0]==0X32){
          LED_OFF;
      }    
    }    
}


刷卡1LED灯亮,卡会熄灭,刷卡1展示效果如下所示:

相关文章
|
3月前
|
传感器
手把手在STM32F103C8T6上构建可扩展可移植的DHT11驱动
【8月更文挑战第29天】本文详细介绍在STM32F103C8T6上构建可扩展且可移植的DHT11温湿度传感器驱动的步骤,包括硬件与软件准备、硬件连接、驱动代码编写及测试。通过这些步骤,可根据实际项目需求优化和扩展代码。
|
4月前
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
64 14
|
4月前
STM32Cubemx PWM驱动SG90舵机
STM32Cubemx PWM驱动SG90舵机
148 13
|
4月前
STM32CubeMX mpu6050驱动
STM32CubeMX mpu6050驱动
66 10
|
4月前
STM32CubeMX WS2812B灯驱动
STM32CubeMX WS2812B灯驱动
192 1
|
4月前
STM32CubeMX ULN2003步进电机驱动
STM32CubeMX ULN2003步进电机驱动
54 0
|
4月前
STM32Cubemx TB6612直流电机驱动
STM32Cubemx TB6612直流电机驱动
134 0
|
5月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
405 2
|
4月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
668 0
|
5月前
|
IDE 开发工具
使用STM32F103标准库实现自定义键盘
通过本文,我们学习了如何使用STM32F103标准库实现一个简单的自定义键盘。我们首先初始化了GPIO引脚,然后实现了一个扫描函数来检测按键状态。这个项目不仅能够帮助我们理解STM32的GPIO配置和按键扫描原理,还可以作为进一步学习中断处理和低功耗设计的基础。希望本文对你有所帮助,祝你在嵌入式开发的道路上不断进步!
489 4