Host-to-Reader通信框架
| Header | Data Length | Command Code | Data | CRC-16 |
|---|---|---|---|---|
| 1字节,必须是 0xFF | 1字节, 数据字段的字节数 | 1字节 | 数据字段,高字节在前 | 2字节循环冗余码,高字节在前 |
Reader-to-Host通信框架
| Header | Data Length | Command Code | Status Code | Data | CRC-16 |
|---|---|---|---|---|---|
| 1字节,必须是 0xFF | 1字节, 数据字段的字节数 | 1字节 | 2个字节,状态码,0表示操作成功,非零值表示操作失败 | 数据字段,高字节在前 | 2字节循环冗余码,高字节在前 |
#define MSG_CRC_INIT 0xFFFF
#define MSG_CCITT_CRC_POLY 0x1021
void CRC_calcCrc8(uint16 *crcReg, uint16 poly, uint16 u8Data)
{
uint16 i;
uint16 xorFlag;
uint16 bit;
uint16 dcdBitMask = 0x80;
for(i=0; i<8; i++)
{
xorFlag = *crcReg & 0x8000;
*crcReg <<= 1;
bit = ((u8Data & dcdBitMask) == dcdBitMask);
*crcReg |= bit;
if(xorFlag)
{
*crcReg = *crcReg ^ poly;
}
dcdBitMask >>= 1;
}
}
uint16 CalcCRC(uint8 *msgbuf,uint8 msglen)
{
uint16 calcCrc = MSG_CRC_INIT;
uint8 i;
for (i = 1; i < msglen; ++i)
CRC_calcCrc8(&calcCrc, MSG_CCITT_CRC_POLY, msgbuf[i]);
return calcCrc;
}
命令分类和工作流程
| 命令集名称 | 描述 |
|---|---|
| Bootloader命令 | 读写器Bootloader阶段时可以执行的任何命令都称为Bootloader命令。 |
| 标签盘存命令 | 与盘存操作相关的命令 |
| 标签访问命令 | 与标签访问操作相关的命令 |
| 设置命令 | 设置相关的命令 |
| 获取命令 | 获取相关的命令 |
特别提示