测试:type A卡 读取代码没问题

This commit is contained in:
lmx
2025-12-22 15:40:19 +08:00
parent 482767064e
commit fe0348bd89
14 changed files with 55 additions and 30 deletions

View File

@ -21,7 +21,7 @@ struct CPU_CARD_STR CPU_CARD;
static unsigned char FM176XX_TPDU(transmission_struct *tpdu);
/**
* @brief CPU卡事件处理函数(示例)
* @brief CPU卡事件处理函数。
* @details
* 1. 发送RATS (Request for Answer to Select) 命令以激活卡片并获取ATS (Answer to Select)。
* 2. 解析ATS获取卡片能力信息如FSC, FWI等

View File

@ -67,9 +67,9 @@ void Mifare_Clear_Crypto(void)
}
/**
* @brief Mifare卡事件处理函数(示例)
* @brief Mifare卡事件处理函数。
* @details
* 这是一个示例函数,演示了对Mifare Classic卡进行读写操作的完整流程
* Mifare Classic卡进行读写操作的完整流程
* 1. 清除加密状态。
* 2. 对指定的扇区例如扇区1使用密钥A进行认证。
* 3. 如果认证成功则遍历该扇区的数据块块0到块2

View File

@ -19,9 +19,9 @@
unsigned char PAGE_DATA[16];
/**
* @brief NTAG卡事件处理函数(示例)
* @brief NTAG卡事件处理函数。
* @details
* 这是一个示例函数,演示了对NTAG系列卡片进行读写操作的流程
* 对NTAG系列卡片进行读写操作的流程
* 1. 准备要写入的数据4字节
* 2. 调用 `Write_Page()` 函数将数据写入第8页。
* 3. 调用 `Read_Page()` 函数从第8页读回数据并打印以进行验证。

View File

@ -591,7 +591,7 @@ unsigned char ReaderB_Get_SN(struct picc_b_struct *picc_b)
return SUCCESS;
}
extern void debug_command(u8 index);
/**
* @brief 向Type V (ISO15693) 卡片发送Inventory命令。
* @param picc_v [out] 指向存储卡片信息的结构体。
@ -600,8 +600,14 @@ unsigned char ReaderB_Get_SN(struct picc_b_struct *picc_b)
unsigned char ReaderV_Inventory(struct picc_v_struct *picc_v)
{
unsigned char reg_data, i, result; // 新增 result 变量
SetCommand(CMD_IDLE);
unsigned char command = 0;
// debug_command(0);
SetCommand(CMD_IDLE);
//对于command可以在发送第二条指令之前读取一次command寄存器判断是否回到idle再发送第二条,这里直接采用长延迟
rfid_delay_ms(100);
// debug_command(1);
SetReg(REG_TXDATANUM, 0x08);
ModifyReg(REG_FIFOCONTROL, BIT_FIFOFLUSH, FUN_ENABLE);
@ -613,7 +619,8 @@ unsigned char ReaderV_Inventory(struct picc_v_struct *picc_v)
ModifyReg(REG_RXCRCCON, BIT_CRCEN, FUN_ENABLE);
SetCommand(CMD_TRANSCEIVE);
rfid_delay_ms(50);
// debug_command(2);
rfid_delay_ms(100);
GetReg(REG_ERROR, &reg_data);
if ((reg_data & 0x0F) != 0){
@ -623,6 +630,7 @@ unsigned char ReaderV_Inventory(struct picc_v_struct *picc_v)
GetReg(REG_FIFOLENGTH, &reg_data);
if (reg_data != 10){
// debug_command(3);
xlog("FIFO Length is %d, expected 10.\n", reg_data);
return FAIL;
}