主题中讨论的其他器件:MSP430FR5969、 MSP430G2553、 MSP-EXP430G2ET、 DLP-7970ABP、
工具/软件:TI-RTOS
大家好、
MSP430FR5969 - TRF79790 - NTAG213
1)这里、我使用 MSP 从使用 TRF7970 IC 的 NTAG213读取数据。 我有 TI 库、这些库对读取数据非常有用
void Iso14443aLoop (u08_t 级联_level、u08_t NVB、u08_t * uid) { u08_tI = 0; u08_tnvbytes = 0、nvbits = 0、xbits = 0、found = 0; u08_t new_uid[4]; u08_t select、new_uid1[4]、coll_at1、nvbits1; u08_t 级联_level1; #ifdef enable_host u08_t RSSI[2]; #endif while (级联_level < 4) { 开关(级联电平) { 案例1: SELECT = 0x93; 中断; 案例2: SELECT = 0x95; 中断; 案例3: SELECT = 0x97; 中断; 默认值: 中断; } if ((NVB & 0x0F)!= 0x00) { nvbytes =(NVB >> 4)- 2;//已知有效字节的数量 Xbits = NVB & 0x07;//已知有效位的数量 //在 UID 计算中都使用这两种方法 对于(i = 0;i < xbits;i++) { nvbits =(nvbits << 1)+ 1; } } RX_ERROR_FLAG = 0; coll_poss = 0x21; RxTx_state = 1;//响应将向上存储在 buf[1]中 Iso14443a SelectCommand (SELECT、NVB、uid); //while (coll_poss < 0x20){ //if (i_reg =0x00){ //中断; //} //}; 如果(coll_poss = 0x20) I_reg = 0x02;//在 coll_poss=0x20的情况下意味着没有接收到响应 for (i = 0;i < 5;i++) ... (笑声) (笑声) (笑声) 。}
我评论了这么粗体的代码、因为代码总是在那里存根、即使我使用看门狗计时器来解决问题、但我也使用 IR 传感器来检查障碍物、因此由于存根代码、IR 也无法正常工作。
2) 2) MSP 能够正确读取数据、但有时会读取另一个数据、例如、不是"a"读取"e"。 我也无法进行滤波。 我在那里使用了这样的条件:在读取数据后、我正在进行数据验证、但我仍然面临着人的问题。
对于(ui8BlockNumber = 0x04;ui8BlockNumber < 0x28;ui8BlockNumber = ui8BlockNumber + 4)
{
NFC_Type2_Read_4_Blocks (ui8BlockNumber);
_DELAY_CYCLES (400);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
if (Column_Ctr = 2)////设置密码
{
if (Rx_Data[3]= tag_1)///选择作为 NFC 标签
{
TX_Uart1_String (VALLED_CHECKSUM); 接收到具有有效校验和的//MSG
strlen_read_Data = strlen (dummy_read_array);
if ((addr1 <= 0)||(length_of _Read1 <= 0))
{
TX_Uart1_String ("*h;33#_R");
返回;
}
否则、如果(strlen_read_Data < 108) //如果 UID 和 TAG 无法完全读取
{
TX_Uart1_String ("*h;33#_L");
返回;
}
for (read_Count=0;read_Count<108;read_Count++)//如果读取数据无效
{
if ((伪读取数组[Read_Count]< 0x21)||(虚拟读取数组[Read_Count]> 0x7A)||(虚拟读取数组[Read_Count]> 0x5A &&虚拟读取数组[Read_Count]< 0x61)
{
TX_Uart1_String ("*h;33#_D");
返回;
}
}
for (;Read_Count<112;Read_Count++) //表示下一个 NULL 字符
{
if (dummy_read_array[read_Count]!= 0x00)
{
TX_Uart1_String ("*h;33#_N");
返回;
}
}
因此、即使经过大量验证、我也无法获取正确的数据。
问题出在哪里?
此致、
Anil。


