|
官方的14443B的初始化代码如下:
s8 iso14443BInitialize(u8* result)
{
u8 buf[2];
s8 err;
buf[0] = 0x40;
buf[1] = 0xd0;
/* set iso14443 mode B, lowest Rx and TX rate. Enable Rx and Tx */
err = as3910WriteMultipleRegisters(AS3910_REG_ISO_MODE, buf, 2);
EVAL_ERR_NE_GOTO(ERR_NONE, err, out);
/* enable AGC */
err = as3910ModifyRegister(AS3910_REG_RCV_CONF, 0x80, 0x80);
EVAL_ERR_NE_GOTO(ERR_NONE, err, out);
/* Set modulation depth to 10%. */
err = as3910WriteRegister(AS3910_REG_MOD_DEP_DEF, 0x1c);
EVAL_ERR_NE_GOTO(ERR_NONE, err, out);
/* calibrate modulation depth */
err = as3910CalibrateModulationDepth(result);
DEBUG_PRINT("<--iso14443BInitialize, End OK, result = 0x%02X ------\n\n", *result);
out:
return err;
}
相关的Debug流程如下:
-->as3910ExecuteCommand: cmd = 0x01
<--ReadRegister: reg = 0x07, val = 0x00
-->WriteRegister: reg = 0x07, val = 0xFF
<--ReadRegister: reg = 0x08, val = 0x00
<--ReadRegister: reg = 0x07, val = 0xFF
-->WriteRegister: reg = 0x07, val = 0x7F
<--ReadRegister: reg = 0x02, val = 0x00
-->WriteRegister: reg = 0x02, val = 0x02
<--ReadRegister: reg = 0x05, val = 0x00
-->WriteRegister: reg = 0x05, val = 0x04
<--ReadRegister: reg = 0x01, val = 0x00
-->WriteRegister: reg = 0x01, val = 0x80
<--ReadRegister: reg = 0x08, val = 0x80
<--as3910Isr: irqStatus = 0x80, as3910InterruptStatus = 0x80, as3910InterruptMask = 0x80
<--ReadRegister: reg = 0x07, val = 0x7F
-->WriteRegister: reg = 0x07, val = 0xFF
<-----as3910Initialize: Ok Return, -------
<--ReadRegister: reg = 0x06, val = 0x00
-->WriteRegister: reg = 0x06, val = 0x00
<--ReadRegister: reg = 0x01, val = 0x80
-->WriteRegister: reg = 0x01, val = 0x80
-->as3910Write MultiReg: 00 40 D0
<--ReadRegister: reg = 0x06, val = 0x01
-->WriteRegister: reg = 0x06, val = 0x81
-->WriteRegister: reg = 0x10, val = 0x1C
-->as3910ExecuteCommand: cmd = 0x17
<--ReadRegister: reg = 0x11, val = 0x80
<--iso14443BInitialize, End OK, result = 0x80 ------
-->iso14443BSelect, Start, cmd = 0x00, slotCount = 0
<--ReadRegister: reg = 0x03, val = 0x00
-->WriteRegister: reg = 0x03, val = 0x00
-->as3910PrepareReceive: Start, exec CMD_CLEAR ---
-->as3910ExecuteCommand: cmd = 0x02
<--ReadRegister: reg = 0x07, val = 0xFF
-->WriteRegister: reg = 0x07, val = 0xCB
<--as3910PrepareReceive: OK Return ----
-->as3910TxNBytes: Start, numbytes = 3, numbits = 0, frame = 05 00 00 00 00 00
<--ReadRegister: reg = 0x07, val = 0xCB
-->WriteRegister: reg = 0x07, val = 0xC3
<--ReadRegister: reg = 0x05, val = 0x04
-->WriteRegister: reg = 0x05, val = 0x06
-->WriteRegister: reg = 0x0B, val = 0xC0
-->WriteRegister: reg = 0x0C, val = 0x00
-->as3910Write FIFO: 80 05 00 00
-->as3910ExecuteCommand: cmd = 0x04
<--ReadRegister: reg = 0x08, val = 0x08
<--as3910Isr: irqStatus = 0x08, as3910InterruptStatus = 0x08, as3910InterruptMask = 0x3C
<--as3910TxNBytes: OK, numbytes = 0, numbits = 0
<--ReadRegister: reg = 0x07, val = 0xC3
-->WriteRegister: reg = 0x07, val = 0xEB
-->as3910RxNBytes, start---
<-- ???? as3910RxNBytes: Error = FIFO waterlevel or end of receive interrupt
<--ReadRegister: reg = 0x08, val = 0x00
<--ReadRegister: reg = 0x07, val = 0xEB
-->WriteRegister: reg = 0x07, val = 0xFF
-->as3910ExecuteCommand: cmd = 0x02
<--as3910RxNBytes, err = 4, length = 0, buf =
<--iso14443BSelect, End OK, err = 52
-->as3910ExecuteCommand: cmd = 0x02
<--ReadRegister: reg = 0x06, val = 0x81
-->WriteRegister: reg = 0x06, val = 0x01
<--ReadRegister: reg = 0x01, val = 0xD0
-->WriteRegister: reg = 0x01, val = 0x80 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
“你必须好好活下去,任何时候都不要失去勇气。我们都会走过这个困难的时代。” ——《黄河绝恋》(1999)
|