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.

[参考译文] RTOS/TRF7970A:在使用 SPI 和 TI-RTOS 时、无法从 TRF7970A 获取 UID 或中断。

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/782614/rtos-trf7970a-not-able-to-get-uid-or-interrupts-from-trf7970a-while-using-spi-and-ti-rtos

器件型号:TRF7970A

工具/软件:TI-RTOS

您好!

通过 SPI 发送命令后,读取 UID/从 TRF7970A 获取中断时出现问题。

我正在程序中使用两个线程。一个线程用于从 UART 读取数据/命令、并使用邮箱将同一接收到的命令/数据发送到另一个线程。

线程2用于使用 SPI 从 TFR7970发送接收命令/数据、还可通过同一邮箱将标签中存在的 uid 或数据发送回 UART 线程。

我在这里看到的问题是:  

我正在读取并成功将 UID 发送回 UART。 同时使用以下 SPI 代码调试代码。

void SPI_directCommand (uint8_t 命令)

SPI_Transaction masterTransaction;
bool transferOK;

//将地址/命令字位分配设置为命令
命令=(0x80 |命令);//命令
命令=(0x9f &命令);//命令代码

masterTransaction.count = 1;
masterTransaction.txBuf =( ptr )&command;
masterTransaction.rxBuf =空;

GPIO_WRITE (CC2640R2_LAUNCHXL_GPIO_SPI_CS、0);

transferOK = SPI_transfer (masterSpi、&masterTransaction);
while (false =bSpiComplete);
bSpiComplete =错误;
GPIO_WRITE (CC2640R2_LAUNCHXL_GPIO_SPI_CS、1);//停止 SPI 模式
if (!transferOK)

system_printf ("主器件 SPI_directCommand 传输失败\n"\};
system_flush();

其他

System_printf ("成功的主 SPI 传输\n"\n);
system_flush();

void SPI_readSingle (uint8_t * pbuf、uint8_t reg)

SPI_Transaction masterTransaction;
uint8_t DummyByte[2];
bool transferOK;
volatile uint8_t x;
uint8_t WriteData[3];

//地址/命令字位分布
//地址、写入、单个(前3位= 0)
reg =(0x1f & reg);//寄存器地址
reg =(0x40 | reg);//地址、读取、单个

WriteData[0]= reg;//地址
WriteData[1]= 0xff;//虚拟字节从从从从器件获取数据

masterTransaction.count = 2;
masterTransaction.txBuf =( ptr )WriteData;
masterTransaction.rxBuf =( ptr )&DummyByte;

GPIO_WRITE (CC2640R2_LAUNCHXL_GPIO_SPI_CS、0);
transferOK = SPI_transfer (masterSpi、&masterTransaction);
while (false =bSpiComplete);
bSpiComplete =错误;
GPIO_WRITE (CC2640R2_LAUNCHXL_GPIO_SPI_CS、1);
*pbuf = DummyByte[1];
if (!transferOK)

System_printf ("主器件 SPI 传输失败");

2.如果我在同一 SPI 代码中注释"System_printf"语句、则无法读取 UID/无法获取任何中断。

可能是什么问题...

System_printf 语句的问题--它们是否需要 RTOS 任务的时间(阻止任务)才能在控制台中打印它?

2.任务和邮箱问题。

SPI 问题。

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

    遗憾的是、团队中没有任何 RTOS 专家、因此这不是我们可以详细支持的问题。

    我建议查看此 TI 设计的 TI-RTOS 处理情况、以了解如何处理 NFC 通信: www.ti.com/.../TIDM-TM4C129XNFC

    我的回忆是、您需要在所有 NFC 任务期间阻止、但该示例将是您的最佳参考点、因为它使用带有 TI-RTOS 的 TRF7970A 成功实现了 NFC。