当前位置: 首页 > 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.jsqmd.com/news/903716/

相关文章:

  • 天津国产化信创软件定制怎么做?国产环境适配、系统迁移与企业软件开发指南 - 热点观察
  • 双轴晶体中的锥形折射
  • GESP6级C++考试语法知识(三十五、二叉搜索树(BST)(五、BST综合实战))
  • 2026 长沙爱马仕回收攻略|5 月最新行情 + 避坑 + 五大正规机构 - 奢侈品回收测评
  • P4语言与TCAM实现RTT直方图的技术解析
  • CSDN AI数字营销功能实测
  • 儿童乐园需要投资多少钱?2026成本明细与回本周期测算
  • 告别Python浮点数精度坑:用decimal模块重写你的计算函数(附性能对比)
  • 西安高新鑫伟瑞家具维修:灞桥专业的餐椅翻新选哪家 - LYL仔仔
  • 基于Arduino的自动打孔机:从传感器到执行器的完整自动化实践
  • taotoken助力claudecode用户摆脱封号与token不足困扰
  • 互联网大厂 Java 求职者面试:Spring Boot 与微服务的探讨
  • Gemini推荐策略黑盒破解实录(内部泄露的8类用户分群逻辑+实时反馈闭环设计图)
  • Word转PDF的方法是什么?2026保姆级详细教程,手把手教你一看就会 - AI测评专家
  • 高效智能视觉系统:基于YOLOv8的多线程目标检测与实时追踪实战指南
  • 高端人形机器人轴承厂家与品牌怎么选?关节轴承核心技术解析 - 品牌2025
  • 乌鸡招商加盟怎么选?硬核货源+完善扶持稳创业 - 讲清楚了
  • 矿山做业实景透明.智能预警透明化三维立体重构视频孪生数字孪生解决方案
  • 如何通过Python快速接入Taotoken并调用多款大模型API
  • 2026年玻璃鳞片胶泥/环氧玻璃鳞片胶泥主流厂家实力排行盘点 推荐河北翔塔新材料有限公司 - 奔跑123
  • XGP 免费入库!《深海迷航 2》上线,四人联机探索异星深海
  • 2026年6月重磅推荐 | 罗杰杜彼官方售后服务网络2026焕新升级公告 - 资讯速览
  • 国产流量计哪家强?内行人揭秘这家隐形冠军企业,实力不容小觑! - 品牌推荐大师
  • 快速上手,在五分钟内完成Taotoken注册并获取首个APIKey
  • 2026佛山黄金回收避坑实测|5家门店真实测评,教你稳稳市价出手 - 奢侈品回收测评
  • 本地视频怎么去水印?2026实测7款方法+小程序横评
  • 针对gdb出现DWARF错误的问题
  • 【2026】同等学历-计算机-数学
  • 终极指南:如何快速在Vue 3项目中集成专业代码编辑器
  • 华为云ecs与openstack nova的关系:如果说 Nova 是 OpenStack 这个“开源发动机原型”,那么华为云 ECS 就是基于这个原型,经过深度魔改、强化并对外开售的“豪华量产车”。