liuzonggong 发表于 2024-10-23 21:05:11

Ai8H2K17U驱动MFRC522射频卡

各位老朋友,我看了一下午MFRC522的数据手册。109页英文版的。总算入了点门,有谁要问的抓紧问。趁着我还有热度。

先发点h内容,我自己标注的。
这是命令控制字。

#define PCD_IDLE                        0x00               //无操作,或者取消当前命令的执行。
#define PCD_MEM                        0x01               //从fifo将25个字节存储到内部缓冲区中
#define PCD_RAID                        0x02               //生成一个10字节的随机id号
#define PCD_CALCCRC               0x03               //激活crc协处理器或执行自检
#define PCD_TRANSMIT               0x04               //从FIFO缓冲区发送数据
#define PCD_NOCMDCHAN         0x07               //没有命令更改。此命令可用于修改命令寄存器中的不同位,
                                                                     //而不结束该命令。
#define PCD_RECEIVE               0x08                     //激活接收器电路
#define PCD_TRANSCEIVE         0x0C                  //将数据从fifo缓冲区传输到天线,并在传输后自动激活接收机
#define PCD_AUTHENT               0x0E                  //Performs the MIFARE® standard authentication as a reader
#define PCD_RESETPHASE          0x0F                  //Resets the MFRC522
//这些说明在数据手册73页


/////////////////////////////////////////////////////////////////////
//RC522寄存器定义
/////////////////////////////////////////////////////////////////////
// PAGE 0
#define   RFU00               0x00//保留供将来使用
#define   CommandReg            0x01//启动和停止命令执行
#define   ComIEnReg             0x02//控制位以启用和禁用中断请求的传递
#define   DivlEnReg             0x03//控制位以启用和禁用中断请求的传递
#define   ComIrqReg             0x04//包含中断请求位
#define   DivIrqReg             0x05//包含中断请求位
#define   ErrorReg            0x06//显示最后执行的命令的错误状态的错误位
#define   Status1Reg            0x07//包含用于通信的状态位
#define   Status2Reg            0x08//包含接收器和发射器的状态位
#define   FIFODataReg         0x09//64字节FIFO缓冲器的输入和输出
#define   FIFOLevelReg          0x0A//表示FIFO中存储的字节数
#define   WaterLevelReg         0x0B//定义FIFO不足和溢出警告的级别
#define   ControlReg            0x0C//包含各种控制寄存器
#define   BitFramingReg         0x0D//面向位帧的调整
#define   CollReg               0x0E//RF接口上检测到的第一个比特冲突的比特位置
#define   RFU0F               0x0F//保留供将来使用
// PAGE 1   
#define   RFU10               0x10//保留供将来使用
#define   ModeReg               0x11//定义传输和接收的一般模式
#define   TxModeReg             0x12//定义传输数据速率和帧
#define   RxModeReg             0x13//定义接收数据速率和帧
#define   TxControlReg          0x14//控制天线驱动器引脚TX1和TX2的逻辑行为
#define   TxAutoReg             0x15//控制TX调制的设置
#define   TxSelReg            0x16//为天线驱动器选择内部电源
#define   RxSelReg            0x17//选择内部接收器设置
#define   RxThresholdReg      0x18//为位解码器选择阈值
#define   DemodReg            0x19//定义解调器设置
#define   RFU1A               0x1A//保留供将来使用
#define   RFU1B               0x1B//保留供将来使用
#define   MifareReg             0x1C//控制某些MIFARE®通信传输参数
#define   RFU1D               0x1D//控制某些MIFARE®通信传输参数
#define   RFU1E               0x1E//保留供将来使用
#define   SerialSpeedReg      0x1F//选择串行UART接口的速度
// PAGE 2   
#define   RFU20               0x20 //保留供将来使用
#define   CRCResultRegM         0x21 //显示CRC计算的实际MSB
#define   CRCResultRegL         0x22 //显示CRC计算的实际LSB值
#define   RFU23               0x23 //保留供将来使用
#define   ModWidthReg         0x24 //控制ModWidth的设置
#define   RFU25               0x25 //保留供将来使用
#define   RFCfgReg            0x26 //配置接收器增益
#define   GsNReg                0x27//选择天线驱动器引脚TX1和TX2的电导
#define   CWGsCfgReg            0x28//调制
#define   ModGsCfgReg         0x29//调制
#define   TModeReg            0x2A//定义内部计时器的设置16bit高8位
#define   TPrescalerReg         0x2B//定义内部计时器的设置低8位
#define   TReloadRegH         0x2C//描述16位定时器重新加载值高8位
#define   TReloadRegL         0x2D//描述16位定时器重新加载值低8位
#define   TCounterValueRegH   0x2E//显示16位实际计时器值高8位
#define   TCounterValueRegL   0x2F//显示16位实际计时器值低8位
// PAGE 3      
#define   RFU30               0x30//保留供将来使用
#define   TestSel1Reg         0x31//通用测试信号配置
#define   TestSel2Reg         0x32//通用测试信号配置和PRBS控制
#define   TestPinEnReg          0x33//启用D1-D7上的引脚输出驱动器
#define   TestPinValueReg       0x34//定义D1-D7用作I/O总线时的值
#define   TestBusReg            0x35//显示内部测试总线的状态
#define   AutoTestReg         0x36//控制数字自检
#define   VersionReg            0x37//显示版本
#define   AnalogTestReg         0x38//控制引脚AUX1和AUX2
#define   TestDAC1Reg         0x39 //定义TestDAC1的测试值
#define   TestDAC2Reg         0x3A//定义TestDAC2的测试值
#define   TestADCReg            0x3B   //显示ADC I和Q的实际值
#define   RFU3C               0x3C //保留供将来使用
#define   RFU3D               0x3D //保留供将来使用
#define   RFU3E               0x3E//保留供将来使用
#define   RFU3F                        0x3F//保留供将来使用





//***********************************************************************
//与mfrc522在两条线路(MOSI、MISO)上,每个数据字节首先由MSB发送。MOSI线上的数据在时钟线的上升沿应是稳定的,在下降沿可以改变。该名称对MISO线路有效。数据由MFRC522在下降沿提供,在上升沿稳定。
//要使用SPI兼容接口读取数据,必须使用以下字节顺序。最多可以读出n个数据字节。

//       BUTE0   BYTE1   BYTE2         TO   byteN    byteN+1
//MOSI   adr 0   adr1    adr2               adr n       00
//MISO    X      data0   data1 ..............data n-1    data n

//要使用SPI接口将数据写入MFRC522,只需发送一个地址字节,就可以写出多达n个数据字节。必须首先发送最高有效位(MSB)。地址字节必须满足以下格式:


//第一个地址字节的第7位定义了使用的模式。要从MFRC522读取数据,第7位设置为逻辑1。要将数据写入MFRC522,第7位必须设置为逻辑0。位6到1定义了地址,第0位应设置为逻辑0。
//************************************************************************/

远行的鹿 发表于 2024-10-25 15:50:04

最近也在研究这个芯片,请教一下这个芯片功耗可以做到多低。看到另一款SI522在检测卡时只要几uA。

liuzonggong 发表于 2024-10-26 21:09:30

本帖最后由 liuzonggong 于 2024-10-26 21:16 编辑

远行的鹿 发表于 2024-10-25 15:50
最近也在研究这个芯片,请教一下这个芯片功耗可以做到多低。看到另一款SI522在检测卡时只要几uA。 ...微安粘贴不上


liuzonggong 发表于 2024-10-26 21:15:35

本帖最后由 liuzonggong 于 2024-10-26 21:18 编辑

远行的鹿 发表于 2024-10-25 15:50
最近也在研究这个芯片,请教一下这个芯片功耗可以做到多低。看到另一款SI522在检测卡时只要几uA。 ...
IHPD状态下TVDD= PVDD =3 V   5   mA

ISPD状态下TVDD= PVDD =3 V   5   m
ISPD and IHPD are the total currents over all supplies.


远行的鹿 发表于 2024-10-27 09:38:55

liuzonggong 发表于 2024-10-26 21:15
IHPD状态下TVDD= PVDD =3 V   5   mA

ISPD状态下TVDD= PVDD =3 V   5   m


谢谢,这个看样子不高。这个RC522可以相互通讯吗,比如做数据传输、刷机之类的

liuzonggong 发表于 2024-10-28 08:21:13

本帖最后由 liuzonggong 于 2024-10-28 08:28 编辑

远行的鹿 发表于 2024-10-27 09:38
谢谢,这个看样子不高。这个RC522可以相互通讯吗,比如做数据传输、刷机之类的 ...
你不是顾惠中吧?RC522是专用芯片,只用来与满足iso14443规程的卡片通讯用,不能相互通讯用来做数据传输。
因为它设计死了只能做主机,俩主机没法通讯。

远行的鹿 发表于 2024-10-28 09:41:41

liuzonggong 发表于 2024-10-28 08:21
你不是顾惠中吧?RC522是专用芯片,只用来与满足iso14443规程的卡片通讯用,不能相互通讯用来做数据传输。 ...

不是哦,如果想相互通信有什么方案可以实现

liuzonggong 发表于 2024-10-28 12:44:46

远行的鹿 发表于 2024-10-28 09:41
不是哦,如果想相互通信有什么方案可以实现

模拟自己是一个卡片。让读卡器发出读卡操作,然后互通数据。

liuzonggong 发表于 2024-10-28 12:50:43

本帖最后由 liuzonggong 于 2024-10-28 12:55 编辑

远行的鹿 发表于 2024-10-28 09:41
不是哦,如果想相互通信有什么方案可以实现
The MFRC522is a highly integrated reader/writer for contactless communication at 13.56 MHz. TheMFRC522 reader supports ISO 14443A / MIFARE® mode.The MFRC522’sinternal transmitter part is able to drive a reader/writer antenna designed tocommunicate with ISO/IEC 14443A/MIFARE® cards and transponders without additional active circuitry. The receiver part provides a robust and efficient implementation of a demodulation anddecoding circuitry for signals from ISO/IEC 14443A/MIFARE® compatible cards and transponders. The digital part handles the completeISO/IEC 14443Aframing and error detection (Parity & CRC).The MFRC522 supports MIFARE®Classic (e.g. MIFARE® Standard) products. The MFRC522 supportscontactless communication using MIFARE® higher transfer speedsup to 848 kbit/s in both directions. 从介绍看能做转发器transponders.是转发器的意思。高速公路的卡就是cpu卡,里面有单片机和电池。

远行的鹿 发表于 2024-10-29 09:54:37

liuzonggong 发表于 2024-10-28 12:50
The MFRC522is a highly integrated reader/writer for contactless communication at 13.56 MHz. TheMFRC ...

感谢你的回复。这么说还是有希望通过si522做数据传输的了{:5_305:}
页: [1]
查看完整版本: Ai8H2K17U驱动MFRC522射频卡