您好!
我正在使用 DLP 设计销售的 BoosterPack 来集成 TRF7970A 芯片。 我已经使用示波器来验证命令是否正确地发送到器件、但我正在遇到可能与初始化相关的问题。 初始化后、每当我尝试传输用于寄存器操作的命令或地址时、我都会在示波器上观察到以下行为(为草图道歉、这只是一个表示):
我认为我按照第49页数据表中的步骤正确初始化了 NFC 模块。 以下函数初始化 NFC 模块:
void 初始化 NfcModule (void)
{
SpiTimerActive = false;
setSpiSlaveSelectHigh();
//根据 TRF7970A 数据表将 SS 设置为高电平然后将 EN 设置为高电平之间的4毫秒延迟
DEVICE_DELAY_US (4000);
//将 TRF 使能引脚(EN)置为高电平
setEnHigh();
//等待 TRD 系统时钟启动
DEVICE_DELAY_US (5000);
// TODO:设置 TRF 初始设置
TRF7970A_initialSettings();
TRF7970A_setTrfPowerSetting (TRF7970A_3V_FULL_POWER);
}
//使用命令初始化 TRF7970A
void TRF7970A_initialSettings (void)
{
G_ui8碰撞位置= 0;
G_ui8FifoOffset = 0;
G_ui8FifoRxLength = 0;
G_sTrfStatus = TRF_IDLE;
G_eTrfGeneralSettings.eTrfPowerSetting = TRF7970A_3V_FULL_POWER;
G_eTrfGeneralSettings.bRfFieldOn = false;
G_eTrfGeneralSettings.ui8IsoControl = 0x02;// TRF7970A 默认值
G_ui8IrqFlag = 0x00;
G_ui8TimeoutFlag = 0x00;
//将 SOFT SOLE_INIT + IDLE 初始序列发送到软复位
TRF7970A_sendDirectCommand (TRF7970A_SOFT_INIT_CMD);
DEVICE_DELAY_US (1000);
TRF7970A_sendDirectCommand (TRF7970A_IDLE_CMD);
//延迟以确保处理软复位
DEVICE_DELAY_US (1000);
G_eTrfGeneralSettings.ui8IsoControl = 0x21;
TRF7970A_resetFIFO ();//重置 FIFO
//为系统配置 ISO14443A 卡
TRF7970A_writeRegister (TRF7970A_ISO_CONTROL、0x08); //对于 Iso14443a 卡
TRF7970A_writeRegister (TRF7970A_MODEG_CONTROL、0x01);// ASK 100%、无 SYS_CLK 输出
TRF7970A_writeRegister (TRF7970A_reguler_control、0x01);
TRF7970A_writeRegister (TRF7970A_NFC_TARGET_LEVEL、0x00);//查看 TRF7970A 勘误表
}
遗憾的是、通信期间从 MISO 线路中提取的所有数据始终返回0xFF、因为 MISO 线路始终处于高电平(请参阅上图)。
我的问题:我的初始化序列是否有任何错误? 我看不到任何问题。
Charlie
