Libnfc需要读写pn532 XRAM(有时是SFR)。 例如,我已经写了这个案子,但它不起作用:
case 0x08: { //WriteRegister Page 78
int address;
int value;
uint8_t dataSum = btDCS;
for (int i = 0; i < abtRxBuf[3] - 2; i += 3) { //number of address to write with value = 3 bytes
memcpy(&address, (int*) abtRxBuf + 7 + i, 2); // 2 bytes address
memcpy(&value, (int*) abtRxBuf + 9 + i, 1); // 1 byte value
pn532_packetbuffer[0/*1*/] = address >> 8;
pn532_packetbuffer[1/*2*/] = address & 0xff;
pn532_packetbuffer[2/*2*/] = value;
Wire.write(pn532_packetbuffer, 3);
Serial.write(pn532_packetbuffer, 3);
dataSum -= sum_array(pn532_packetbuffer, 3);
}
writePostStuff(dataSum);
break;
}
该命令由3个字节组成,2表示xram地址,1表示值。
以相同的方式阅读注册工作,读取n个地址并检索n个值。
我使用有线库,因为pn532处于i2c模式
这是参考部分:
输入: D4 08 ADR1H ADR1L VAL1 ... ADRnH ADRnL VALn
ADR1H ADR1L第一个地址(高字节和低字节), VAL1要写入的第一个值, ADRnH ADRnL第n个地址(高字节和低字节), 要写的第n个值。
输出: D5 09