This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TRF7970A:通过 F28388D controlCARD 的 TRF7970A 初始化序列

Guru**** 2538955 points
Other Parts Discussed in Thread: TRF7970A

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/870256/trf7970a-trf7970a-initialization-sequence-via-f28388d-controlcard

器件型号:TRF7970A

您好!

我正在使用 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    您能否发布示波器快照?

    我建议尝试保持这种简单、并执行以下操作:

    根据您从数据表中确定的时序来增加 EN 和 SS 线路、然后读取寄存器0x0F RSSI 水平和振荡器状态寄存器来查看晶振稳定位是否等于1。 这是位6、因此读取的值应为0x40。

    这是在不进入器件初始化的其余部分的情况下测试 SPI 接口的最佳方法。

    使用示波器时、您还应检查 SPI 时钟频率。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    拉尔夫

    我还无法发布示波器图像、但我很快会尝试获取它们。

    我已经根据数据表初始化了模块。 但它看起来仍然是芯片出现错误的。

    至于发生的情况、我可以说现在 MISO 线路一直大约为3V。 SPI 传输开始时略有下降、但 MISO 线路上的所有内容读取为高电平。 因此、响应始终读回为0xFF。 无论我发送什么命令。

    我已验证在 MOSI 上发送的命令是否正确。 但我无法从模块中获得有效的响应。

    SPI 时钟频率恢复为2MHz、正如我在代码中配置的那样。

    Charlie

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    您使用的是 BoosterPack 吗? 您能否仔细检查连接? 我讨厌询问这一点、但有一次我和另一位客户在这里花了一周时间、发现他在将 BP 连接到某些非 LaunchPad 开发套件时将其中一条 SPI 线路放置在接头上的一个引脚错误。 )

    您是否还检查了时钟的正确极性和相位? 该器件仅适用于一种 SPI 模式、即模式1 (极性= 0、相位= 1)。