(1)STM32 RC522模块测试代码

1.使用资源

  • 使用32 的SPI1资源:
    SDA-PA4
    RST-PA1(普通io)
    SCK-PA5
    MISO-PA6
    MOSI-PA7
  • 使用RCT6的板子,其它的也可以

2. RC522模块

2.1 RC522简介

  • RC522是一种低成本、高性能的射频识别(RFID)模块,用于与RFID标签进行通信。它是一种13.56MHz射频通信模块,采用射频(RF)技术进行无线数据传输。RC522模块由射频前端、数模转换器和控制单元组成,具有读取和写入RFID标签的能力。

  • RC522模块常用于许多应用领域,如门禁系统、物流跟踪、身份验证和付款系统等。它可以与各种类型的RFID标签一起使用,包括标准的ISO/IEC 14443 Type A和Type B标签以及MIFARE系列标签。

  • RC522模块通过SPI(串行外设接口)与主控器(如Arduino、树莓派等)进行通信。它提供了一组简单的指令和寄存器,用于读取和写入RFID标签的数据。模块还具有内置的加密引擎,可用于实现对数据的加密和解密操作。

  • 使用RC522模块时,可以通过发送命令来控制模块进行初始化、寻找RFID标签、读取标签数据和写入数据到标签等操作。模块还提供了一些辅助功能,如检测RFID标签的存在、控制射频功率等。
    在这里插入图片描述

2.2 RC522工作模式

RC522模块有三种主要的工作模式,它们是:

读写模式(Reader/Writer Mode):在读写模式下,RC522模块作为一个读写器与RFID标签进行通信。它可以读取标签中存储的数据,并且可以写入新的数据到标签中。这种模式适用于许多应用场景,如门禁系统、存储卡的读写等。

卡模拟模式(Card Emulation Mode):在卡模拟模式下,RC522模块可以模拟成一个RFID标签。它可以接收来自读写器的请求,并返回相应的数据。这种模式通常用于模拟智能卡,如支付系统和身份验证系统。

寻卡模式(Card Detection Mode:在寻卡模式下,RC522模块可以被用于检测附近是否存在RFID标签。它可以扫描周围的射频场,并检测到标签的存在。这种模式通常用于门禁系统中的卡片检测。

这些工作模式可以通过RC522模块的控制寄存器和命令来配置和切换。在实际应用中,可以根据需求选择适合的工作模式,并通过与主控器的通信来实现相应的功能。
本文代码只体现寻卡测试

3. 模块测试代码(工程文件源码链接)

工程源码网盘链接: https://pan.baidu.com/s/1igOLotOK8bdipJTGZlqqGg 提取码: y6g7 复制这段内容后打开百度网盘手机App,操作更方便哦

寻卡检测部分:

void IC_test ( void )
{
	char cStr [ 30 ];
    uint8_t ucArray_ID [ 4 ];    /*先后存放IC卡的类型和UID(IC卡序列号)*/                                                                                         
	uint8_t ucStatusReturn;      /*返回状态*/                                                                                           
  while ( 1 )
  {    
    ucStatusReturn = PcdRequest ( PICC_REQALL, ucArray_ID ); 
		if ( ucStatusReturn == MI_OK  )
		{
      printf ( "寻卡成功\n" );
      /*防冲撞(当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作)*/
			if ( PcdAnticoll ( ucArray_ID ) == MI_OK )                                                                   
			{
				PcdSelect(ucArray_ID);					
				PcdAuthState( PICC_AUTHENT1A, 0x11, KeyValue, ucArray_ID );//校验密码        		
				  sprintf ( cStr, "The Card ID is: %02X%02X%02X%02X",ucArray_ID [0], ucArray_ID [1], ucArray_ID [2],ucArray_ID [3] );
					printf ( "%s\r\n",cStr );  //打印卡片ID					
          PcdHalt();
			}		
				
		}		
		    
  }	
}

串口输出
在这里插入图片描述

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当然可以!下面是一份基于STM32F103C8T6和RC522模块的串口测试代码示例: ```c #include "stm32f10x.h" #include "rc522.h" void USART1_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); // 配置USART1的引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; // USART1_TX GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; // USART1_RX GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置USART1 USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); // 使能USART1 USART_Cmd(USART1, ENABLE); } void USART1_SendChar(char ch) { while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET) ; USART_SendData(USART1, (uint8_t)ch); } int main(void) { uint8_t uid[5]; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); RC522_Init(); USART1_Init(); while (1) { if (RC522_CheckCard(uid) == MI_OK) { USART1_SendChar('['); for (int i = 0; i < 5; i++) { USART1_SendChar(uid[i]); } USART1_SendChar(']'); } } } ``` 这段代码使用了STM32F103C8T6的USART1串口与RC522模块进行通信。在主循环中,通过调用`RC522_CheckCard`函数检测是否有卡片靠近RC522模块,如果有,则通过USART1串口将卡片的UID发送出去。 请注意,以上代码仅为示例,具体的硬件连接和其他配置可能需要根据你的实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无敌最俊朗-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值