当前位置: 首页 > news >正文

STM8S 系列单片机 + RC522读写 IC 卡

STM8S 系列单片机 + RC522(MFRC522)读写 IC 卡(MIFARE Classic)


一、适用芯片说明

  • MCU:STM8S003 / STM8S103 / STM8S105(推荐 103F3P6,性价比最高)
  • RFID:RC522(13.56MHz,ISO/IEC 14443 Type A)
  • IC 卡:MIFARE Classic 1K(S50)

二、硬件连接(SPI 方式)

RC522STM8S说明
VCC3.3V禁止 5V
GNDGND
RSTPC4复位
NSSPA3片选
SCKPC5SPI 时钟
MOSIPC6主发从收
MISOPC7主收从发
IRQ悬空可选

STM8S 使用SPI 主模式,CPOL=0,CPHA=0


三、RC522 工作原理简述

寻卡 → 防冲撞 → 选卡 → 认证 → 读/写扇区

MIFARE 1K:

  • 16 个扇区(0~15)
  • 每扇区 4 块(0~3)
  • 块 3 = 密钥区(KeyA + Access Bits + KeyB)

四、SPI 基础读写

uint8_tSPI_ReadWrite(uint8_tdata){while(!(SPI->SR&SPI_SR_TXE));SPI->DR=data;while(!(SPI->SR&SPI_SR_RXNE));returnSPI->DR;}uint8_tRC522_ReadReg(uint8_taddr){uint8_tval;NSS_LOW();SPI_ReadWrite((addr<<1)|0x80);val=SPI_ReadWrite(0x00);NSS_HIGH();returnval;}voidRC522_WriteReg(uint8_taddr,uint8_tval){NSS_LOW();SPI_ReadWrite((addr<<1)&0x7E);SPI_ReadWrite(val);NSS_HIGH();}

五、RC522 初始化

voidRC522_Init(void){RC522_Reset();RC522_WriteReg(TModeReg,0x8D);RC522_WriteReg(TPrescalerReg,0x3E);RC522_WriteReg(TReloadRegL,30);RC522_WriteReg(TReloadRegH,0);RC522_WriteReg(TxAutoReg,0x40);RC522_WriteReg(ModeReg,0x3D);RC522_AntennaOn();}

六、寻卡 & 防冲撞

1、寻卡

uint8_tRC522_Request(uint8_t*cardType){uint8_tstatus;RC522_WriteReg(BitFramingReg,0x07);status=RC522_ToCard(PICC_REQALL,cardType);returnstatus;}

2、防冲撞(获取 UID)

uint8_tRC522_Anticoll(uint8_t*uid){uint8_tstatus;RC522_WriteReg(BitFramingReg,0x00);status=RC522_ToCard(PICC_ANTICOLL,uid);returnstatus;}

七、扇区认证(关键)

uint8_tkeyA[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};uint8_tRC522_Auth(uint8_tblockAddr){uint8_tbuff[12];buff[0]=PICC_AUTHENT1A;buff[1]=blockAddr;memcpy(&buff[2],keyA,6);memcpy(&buff[8],uid,4);returnRC522_ToCard(PCD_AUTHENT,buff);}

八、读数据(16 字节)

uint8_tRC522_ReadBlock(uint8_tblock,uint8_t*data){uint8_tbuff[18];buff[0]=PICC_READ;buff[1]=block;RC522_ToCard(PCD_TRANSCEIVE,buff);memcpy(data,buff,16);}

九、写数据(必须 16 字节对齐)

uint8_tRC522_WriteBlock(uint8_tblock,uint8_t*data){uint8_tbuff[18];buff[0]=PICC_WRITE;buff[1]=block;RC522_ToCard(PCD_TRANSCEIVE,buff);memcpy(buff,data,16);returnRC522_ToCard(PCD_TRANSCEIVE,buff);}

参考代码 STM8S系列单片机通过RC522电路向IC卡中读取、写入数据www.youwenfan.com/contentcsv/72536.html

十、典型主流程

intmain(void){SPI_Init();RC522_Init();while(1){if(RC522_Request(cardType)==MI_OK){if(RC522_Anticoll(uid)==MI_OK){RC522_Auth(8);RC522_ReadBlock(8,data);RC522_WriteBlock(8,"1234567890123456");}}delay_ms(200);}}

十一、常见问题 & 避坑指南

问题原因解决
读不到卡电压不稳加 100nF 电容
写卡失败未认证先 Auth
偶尔死机SPI 时序降低 SPI 频率
距离短天线优化 PCB / 线圈
http://www.zskr.cn/news/1414822.html

相关文章:

  • ChemCrow化学AI助手:12种专业工具免费解决化学难题
  • ArcMap插件开发实战:手把手教你写一个Word动态报告生成工具(附避坑指南)
  • 天津国产化信创软件定制怎么做?国产环境适配、系统迁移与企业软件开发指南 - 热点观察
  • AdvancedSessionsPlugin:为Unreal Engine 4构建强大的多玩家会话系统
  • 7天以上长途旅行选箱指南:大容量耐磨抗摔兼具高级感的优质旅行箱推荐
  • 2026亲测10款降AIGC网站红黑榜!优缺点无保留曝光,达标率硬刚行业巅峰
  • 本地特色的金沙滩海鲜餐厅推荐
  • AMD Ryzen终极调试指南:免费开源工具SMUDebugTool完整使用教程
  • Python赋能剪映:从手动剪辑到数据驱动的自动化革命
  • 基于Arduino的自动打孔机:从传感器到执行器的完整自动化实践
  • 西安高新鑫伟瑞家具维修:灞桥专业的餐椅翻新选哪家 - LYL仔仔
  • 用SigmaStudio Plus如何来开发ADAU1466(4)实现模拟的4进8出
  • 校招|本硕双非机械研一,因项目涉及 Linux 和 C/C++,趁此转码深入学C/C++可行吗?
  • 三步打造你的Windows桌面智能监控中心:告别杂乱,拥抱高效
  • 从‘撞库’到‘彩虹表’:手把手教你用Python加固密码哈希存储(附代码)
  • Windows 11上运行Android应用的终极指南:告别模拟器,拥抱原生体验
  • 互联网大厂 Java 求职者面试:Spring Boot 与微服务的探讨
  • Word转PDF的方法是什么?2026保姆级详细教程,手把手教你一看就会 - AI测评专家
  • 基于Arduino与超声波传感器的互动售货机:从传感器到情感交互的完整实现
  • ZEMAX热分析实战:从“空气边缘厚度”到“镜片带台面”的完整避坑指南
  • 2026年玻璃鳞片胶泥/环氧玻璃鳞片胶泥主流厂家实力排行盘点 推荐河北翔塔新材料有限公司 - 奔跑123
  • 快速美化代码:终极免费在线代码高亮工具指南
  • 【往届会后仅3个月见刊检索- EI检索稳定且周期快 | 官方认证优质会议-曾入选中国自动化学会推荐名录-见刊检索有保障】第十二届传感器、机电一体化和自动化系统国际学术研讨会(ISSMAS 2026)
  • iii:实时编排服务的利器,简化开发流程!
  • 新手入门教程使用Python快速调用Taotoken聚合的多模型服务
  • VeriOpt框架:LLM驱动的PPA感知Verilog代码生成技术
  • 联想E14装Ubuntu18.04没WiFi?手把手教你搞定Realtek RTL8111网卡驱动(附免费驱动包)
  • 【往届会后3个月已完成EI核心检索 | 辽宁省力学学会主办,多高校承协办 | JPCS(ISSN:1742-6596)出版】第三届航空航天与力学国际学术会议(ICAM 2026)
  • FLOW 流程洞察功能 | 上万行日志找不到问题?FLOW 让测试排障不再靠猜
  • ZLMediaKit 源码分析(二):EventPoller 事件循环机制深度分析