连接
针对串口UART连接方式,RST连单片机普通I/O口;TX连RXD;RX连TXD;输入电压必须是3.3V,可以通过AM1117进行5V到3.3V的转换;GND与地相连;其余如MX、DTRQ、IRQ可全部空置
写入问题
如果是按照网上现行的RC522驱动程序,写入数组的排布如下:
4字节金额(低字节在前)+4字节金额取反+4字节金额+1字节块地址+1字节块地址取反+1字节块地址+1字节块地址取反
可如下定义:
unsigned char idata data_send[16] = { //向卡片发送的16字节
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x01,0xFE,0x01,0xFE
};
金额的存入按照低位在前,无小数
如存入9999,则
unsigned char idata data_send[16] = { //向卡片发送的16字节
0x27,0x0F,0x00,0x00,0xD8,0xF0,0xFF,0xFF,
0x27,0x0F,0x00,0x00,0x01,0xFE,0x01,0xFE
};
以下是一种示例程序
void send_all_10to16()
{
data_send[12] = snr4+0;
data_send[13] = 256 - (snr4+0);
data_send[14] = data_send[12];
data_send[15] = data_send[13];
if (result >= 16777215)
{
data_send[0] = (result >> 24) & 0xFF;
data_send[1] = (result >> 16) & 0xFF;
data_send[2] = (result >> 8) & 0xFF;
data_send[3] = result & 0xFF;
data_send[4] = 256 - data_send[0];
data_send[5] = 256 - data_send[1];
data_send[6] = 256 - data_send[2];
data_send[7] = 256 - data_send[3];
data_send[8] = data_send[0];
data_send[9] = data_send[1];
data_send[10] = data_send[2];
data_send[11] = data_send[3];
}
else if (result >= 65536)
{
data_send[0] = (result >> 16) & 0xFF;
data_send[1] = (result >> 8) & 0xFF;
data_send[2] = result & 0xFF;
data_send[3] = 0x00;
data_send[4] = 256 - data_send[0];
data_send[5] = 256 - data_send[1];
data_send[6] = 256 - data_send[2];
data_send[7] = 256 - data_send[3];
data_send[8] = data_send[0];
data_send[9] = data_send[1];
data_send[10] = data_send[2];
data_send[11] = data_send[3];
}
else if (result >= 256)
{
data_send[0] = (result >> 8) & 0xFF;
data_send[1] = result & 0xFF;
data_send[2] = 0x00;
data_send[3] = 0x00;
data_send[4] = 256 - data_send[0];
data_send[5] = 256 - data_send[1];
data_send[6] = 256 - data_send[2];
data_send[7] = 256 - data_send[3];
data_send[8] = data_send[0];
data_send[9] = data_send[1];
data_send[10] = data_send[2];
data_send[11] = data_send[3];
}
else
{
data_send[0] = result;
data_send[1] = 0x00;
data_send[2] = 0x00;
data_send[3] = 0x00;
data_send[4] = 256 - data_send[0];
data_send[5] = 256 - data_send[1];
data_send[6] = 256 - data_send[2];
data_send[7] = 256 - data_send[3];
data_send[8] = data_send[0];
data_send[9] = data_send[1];
data_send[10] = data_send[2];
data_send[11] = data_send[3];
}
}