Thread 中讨论的其他器件:SysConfig
大家好、
以下是客户的请求:
使用 SPI_TRANSFCTION 进行传输并使用块模式时、将调用 SPICC26X2DMA_TRANSFCTION、并最终停留在 spiPollingTransfer 中。 然后调试该函数并发现它卡在 SSIDataGet 中。 应该是 SSIDataGet 在轮询状态时被高优先级任务中断。
如何处理?
您可以帮助检查此案例吗? 谢谢。
此致、
Nick
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.
大家好、
以下是客户的请求:
使用 SPI_TRANSFCTION 进行传输并使用块模式时、将调用 SPICC26X2DMA_TRANSFCTION、并最终停留在 spiPollingTransfer 中。 然后调试该函数并发现它卡在 SSIDataGet 中。 应该是 SSIDataGet 在轮询状态时被高优先级任务中断。
如何处理?
您可以帮助检查此案例吗? 谢谢。
此致、
Nick
这是 SPI 初始化
static void stamp_SpiInit(void)
{
GPIO_write(CONFIG_GPIO_SPI_0_CS, 0);
CPUdelay(480);
GPIO_write(CONFIG_GPIO_SPI_0_CS, 1);
SPI_Params spiParam;
SPI_Params_init(&spiParam);
SPI_init();
spiHandle = SPI_open(SPI_0, &spiParam);
}
这是 SPI 的工作状态
bool xpt2046_StampXYZZ(xpt2046_data_t *pData)
{
bool ret;
uint8_t wBuf[9] = {ADC_REG_X,0x00,ADC_REG_Y,0x00,ADC_REG_Z1,0x00,ADC_REG_Z2,0x00,0x00};
uint8_t rBuf[9] = {0,0,0,0,0,0,0,0,0};
uint16_t tmp;
SPI_Transaction masterTransaction;
memset(&masterTransaction, 0, sizeof(SPI_Transaction));
masterTransaction.rxBuf = rBuf;
masterTransaction.txBuf = wBuf;
masterTransaction.count = 9;
GPIO_write(CONFIG_GPIO_SPI_0_CS, 0);
ret = SPI_transfer(spiHandle, &masterTransaction);
GPIO_write(CONFIG_GPIO_SPI_0_CS, 1);
tmp = BUILD_UINT16(rBuf[2], rBuf[1]);
tmp >>= 3;
pData->x = tmp;
tmp = BUILD_UINT16(rBuf[4], rBuf[3]);
tmp >>= 3;
pData->y = tmp;
tmp = BUILD_UINT16(rBuf[6], rBuf[5]);
tmp >>= 3;
pData->z1 = tmp;
tmp = BUILD_UINT16(rBuf[8], rBuf[7]);
tmp >>= 3;
pData->z2 = tmp;
return ret;
}
static void stamp_loop(void)
{
while(1)
{
StampTick ++;
Task_sleep(100);
xpt2046_data_t xptData;
xpt2046_StampXYZZ(&xptData);
if((xptData.x != 0) && (xptData.y != 0x0FFF))
{
.....
}
}
}
这是 SPI SysConfig

谢谢 Aries。 下面是 SPI TI 驱动程序运行时 API 和 spimaster 示例。 您是否还在该项目中使用射频堆栈? SPI 函数在错误发生前多久挂起一次、您是否能够成功发送/接收任何字节? 以下是一些建议:
此致、
Ryan
您是否能够在 spimaster 示例项目中重现此问题? 每次调用 SPI_transfer 时是否都会发生此行为、如果不是、则是否可以使用 SPI_Params.transferTimeout 退出 以恢复?
此致、
Ryan