工具/软件: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 问题。