CLRC663学习笔记

CLRC663学习笔记基础介绍和PN512一样工作频率13.56MHz,适用于ISO14443A/B,Felica方案,ISO15693,ISO18000等

基础介绍

和PN512一样工作频率13.56MHz,适用于ISO14443A/B,Felica方案,ISO15693,ISO18000等。内建发射器直接驱动外置天线与卡片进行通信,无需附加有源电路,数字模块包含数据帧的检验,支持SPI、UART、I2C接口与主机连接,支持安全访问模块(SAM)一个独立的I2C接口用于连接。
在这里插入图片描述
特征供电电压5V,电流值要求较PN5180低,但仍需要注意在天线工作时的瞬时电流非常大。

特征框图及结构说明

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要注意接口选择的引脚以及天线两端的引脚需要注意对称排布。

中断控制说明

芯片内置两个中断寄存器,IRQ0和IRQ1,还有两个8bit的中断使能寄存器,最高位清楚后7位数据。可以通过在statusReg寄存器设置IRQ位来触发中断。

定时器说明

集成有5个定时器,其中4个定时器- 从定时器0到定时器3 含有输入时钟,能经由T(x)Control寄存器配置为13.56 MHz,212 kHz,(由27.12 MHz石英生成)或以第5个定时器(定时器4)的下溢事件作为输入。定时器的设置需要具体看文件说明。

关于非接触式读卡的说明

ISO14443A
在这里插入图片描述
在这里插入图片描述
具体组帧格式参考ISO14443A协议内容,这个部分还可以通过计算CRC值来进行数据内部的奇偶校验。
ISO14443B
在这里插入图片描述
调制方式和组帧方式都与ISO14443A略有不同。
ISO15693
在这里插入图片描述

通信接口说明

在这里插入图片描述
在这里插入图片描述
为方便使用我们通常选择SPI作为通信接口。

寄存器及其对应的描述说明

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这些寄存器都是8位的,非常方便使用SPI进行修改设置,其中最重要的几个寄存器:
Command:命令寄存器
HostCtrl:主控制寄存器
TxAmp:发射放大器
Txl:发射寄存器
RxThreshold:接收器阈值寄存器
这些寄存器的数值将严重影响实际的发射接收效果,必须谨慎考虑设定值。

参考原理图

在这里插入图片描述
这边的原理图结构与PN512类似,且天线匹配思路也雷同。低通滤波L0C0,匹配电路C1C2,接收电路R1=R3,R2=R4,C3=C5,C4=C6,其中C1C2的值,决定了天线上信号波形的峰峰值和相位,需要根据实际情况进行估算和微调,天线按照形状估算其值及匹配的电容电感值。

参考代码部分说明

参考代码非常多,但是和上文一样,具体的寄存器参数设定值需要根据实际需要(天线大小、精度要求等)进行微调,这里仅给出部分设置值的参考数据。
ISO14443A类型寄存器设定值代码

		RC663_WriteReg(rRegWaterLevel,0x10);	//Set WaterLevel =(FIFO length -1)
										 
		RC663_WriteReg(rRegRxBitCtrl,0x80);	//Received bit after collision are replaced with 1.
		RC663_WriteReg(rRegDrvMod,0x80);	//Tx2Inv=1
		RC663_WriteReg(rRegTxAmp,0xC0);	// 0x00
		RC663_WriteReg(rRegDrvCon,0x09);	//01
		RC663_WriteReg(rRegTxl,0x05);	//
		RC663_WriteReg(rRegRxSofD,0x00);	//
		
		RC663_CMD_LoadProtocol(0,0);

		// Disable Irq 0,1 sources
		RC663_WriteReg(rRegIRQ0En,0);
		RC663_WriteReg(rRegIRQ1En,0);
		
		RC663_WriteReg(rRegFIFOControl,0xB0);

		RC663_WriteReg(rRegTxModWidth,0x20); // Length of the pulse modulation in carrier clks+1 
		RC663_WriteReg(rRegTxSym10BurstLen,0); // Symbol 1 and 0 burst lengths = 8 bits.
		RC663_WriteReg(rRegFrameCon,0xCF); // Start symbol=Symbol2, Stop symbol=Symbol3
		
		RC663_WriteReg(rRegRxCtrl,0x04); // Set Rx Baudrate 106 kBaud 
		RC663_WriteReg(rRegRxThreshold,0x55); // Set min-levels for Rx and phase shift //32 
		RC663_WriteReg(rRegRcv,0x12);	//
		RC663_WriteReg(rRegRxAna,0x0A); //0
		
		RC663_WriteReg(rRegDrvMod,0x81);
		//> MIFARE Crypto1 state is further disabled.
		RC663_WriteReg(rRegStatus,0);
		//> FieldOn
		RC663_WriteReg(rRegDrvMod,0x89);

ISO14443B寄存器设定值代码

		RC663_WriteReg(rRegWaterLevel,0x10);	//Set WaterLevel =(FIFO length -1)
										 
		RC663_WriteReg(rRegRxBitCtrl,0x80);	//Received bit after collision are replaced with 1.
		RC663_WriteReg(rRegDrvMod,0x8F);	//Tx2Inv=1
		RC663_WriteReg(rRegTxAmp,0x0C);	// 0xCC 
		RC663_WriteReg(rRegDrvCon,0x01);	
		RC663_WriteReg(rRegTxl,0x05);	
		RC663_WriteReg(rRegRxSofD,0x00);	
		
		RC663_CMD_LoadProtocol(4,4);

		// Disable Irq 0,1 sources
		RC663_WriteReg(rRegIRQ0En,0);
		RC663_WriteReg(rRegIRQ1En,0);
		
		RC663_WriteReg(rRegFIFOControl,0xB0);

		RC663_WriteReg(rRegTxModWidth,0x0A); // Length of the pulse modulation in carrier clks+1 
		RC663_WriteReg(rRegTxSym10BurstLen,0); // Symbol 1 and 0 burst lengths = 8 bits.
		RC663_WriteReg(rRegTXWaitCtrl,1);	
		RC663_WriteReg(rRegFrameCon,0x05); 
		RC663_WriteReg(rRegRxSofD,0xB2);
		
		RC663_WriteReg(rRegRxCtrl,0x34); // Set Rx Baudrate 106 kBaud 
		RC663_WriteReg(rRegRxThreshold,0x9F); // Set min-levels for Rx and phase shift 0x7F 
		RC663_WriteReg(rRegRcv,0x12);
		RC663_WriteReg(rRegRxAna,0x0a); //0x0a 0X0e
		
		RC663_WriteReg(rRegDrvMod,0x87);
		RC663_WriteReg(rRegStatus,0);
		//> FieldOn
		RC663_WriteReg(rRegDrvMod,0x8F);

今天的文章CLRC663学习笔记分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/71972.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注