|
发表于 2012-5-15 09:23:16
|
显示全部楼层
sunshinetree 发表于 2012-5-14 22:56
不是和我那个代码比较 是和RC632应用手册里寄存器的默认值比较。 我的那个代码是我测试成功的 ...
我需要配置寄存器值应该是与14443A对应的啊,可是,632手册里的默认值不是对应632的。我给你看我修改后的情况,我根据手册一个一个的寄存器修改的,但是可能有错误。
//////////////////////////////////////////////////////////////////////
//设置RC632的工作方式
//////////////////////////////////////////////////////////////////////
char PcdConfigISOType(unsigned char type)
{
if (type == 'A') //ISO14443_A,'A'在ACSII中0x41.
{
ClearBitMask(RegControl,0x08); //disable crypto 1 unit 加密单元关闭
WriteRawRC(RegClockQControl,0x00);
WriteRawRC(RegClockQControl,0x40);
Delay_50us(2); // wait approximately 100 us - calibration in progress
ClearBitMask(RegClockQControl,0x40);
WriteRawRC(RegTxControl,0x5B);
WriteRawRC(RegCwConductance,0x3F); //配置输出驱动的电导系数 /////////////////
WriteRawRC(RegModConductance,0x3F); //配置输出信号的时间调制系数,100%ASK此位无效
WriteRawRC(RegCoderControl,0x19); //配置时钟速率和编码模式,初始值和14443A值均是0x19.
WriteRawRC(RegModWidth,0x13); //设定调制脉冲的宽度 脉冲调制宽度Tmod=2(ModWidth+1)/fc=3.0us
WriteRawRC(RegModWidthSOF,0x3F); //SOF调制宽度9.44us 00
WriteRawRC(RegTypeBFraming,0x00);
WriteRawRC(RegRxControl1,0x73); //控制接收行为 ,接收信号电压增益因子为35dB
WriteRawRC(RegDecoderControl,0x28); // 控制解调,28(2C),68,08 P45 ////
WriteRawRC(RegBitPhase,0xAD); //设定发送与接收时钟间的相位关系
WriteRawRC(RegRxThreshold,0xAA); //设定位解码阈值,88 FF 初值AA ///////// ////
WriteRawRC(RegBPSKDemControl,00); //控制BPSK解调
WriteRawRC(RegRxControl2,0x41); //控制解调,并定义接收机decoder的输入
WriteRawRC(RegRxWait,0x06); //
WriteRawRC(RegChannelRedundancy,0x03); //
WriteRawRC(RegCRCPresetLSB,0x63); //14443A的CRC初始值为0x6363
WriteRawRC(RegCRCPresetMSB,0x63); //14443A的CRC初始值为0x6363
WriteRawRC(RegTimeSlotPeriod,0x00); //for I.CODE1 protocol
WriteRawRC(RegMfOutSelect,0x04); // select internal signal applied to pin MFOUT 04 or 05
WriteRawRC(RFU27,0x00);
WriteRawRC(RegFIFOLevel,0x3F); //0x3F=63D,FIFO共64字节
WriteRawRC(RegTimerClock,0x07);
WriteRawRC(RegTimerControl,0x06);
WriteRawRC(RegTimerReload,0x0A);
WriteRawRC(RegIRqPinConfig,0x02);
WriteRawRC(RFU2E,0x00);
WriteRawRC(RFU2F,0x00);
PcdSetTmo(106);
DelayMs(1);
PcdAntennaOn();
}
else{ return -1; }
return MI_OK;
}
|
|