1. 简介
使用STM32F103C8T6单片机通过HAL库方式对ATS522模块进行驱动,操作过程如下。
2、操作流程
2、1硬件调试
该模块使用串口方式进行驱动,对于硬件部分首先将ATS522模块上SWIM引脚与GND短接,接着将正负极对接USB转TLL模块的正负极(5V),最好将TX、RX分别与USB转TLL模块上TX、RX模块反接。波特率为9600,接线无误后,刷卡进行识别,可以在串口调试助手上看到ID卡内部存储信息(不同ID卡信息不同,卡1ID信息如下所示。
2.2 Cubemax配置
对于基础配置过程点击此链接,因为该模块通过串口模块进行通讯,因此需要对串口进行配置,又需要对不同的ID卡信息进行识别,因此打开两个串口(串口1对ID信息进行发送,串口2对传感器进行通信),并且配置PB0对于LED灯进行驱动,便于观察效果,操作流程如下所示。
串口1配置如下所示:
串口2配置如下所示:
除了需要配置9600波特率,还需要打开串口中断,配置如下所示。
接着对PB0引脚的GPIO初始化进行配置,配置图如下所示。
最好生成代码进行程序的书写。
2.3 keil端程序书写
首先在main.h文件中进行LED_ON、LED_OFF宏定义,如下所示:
接着在主函数上方进行中断回调函数的书写,如下所示:
/* 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展示效果如下所示: