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/AWR1642BOOST:SPI 回调模式作为从器件

Guru**** 2587365 points


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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/652150/rtos-awr1642boost-spi-callback-mode-as-slave

器件型号:AWR1642BOOST

工具/软件:TI-RTOS

因为我没有收到另一个线程的查询部分的响应、所以重新过帐。  

我设法将处于阻塞模式的 SPI 作为从设备工作、但当我将其配置为在非阻塞模式下工作时、我面临着一些问题。  
所发生的情况是、回调模式下的 SPI_Transfer 不会在传输完成时触发回调、也不会接收/传输数据。

在 msInitTask 内、我初始化 DMA 和 SPI

dma_params_init (&dmaParams);
gDmaHandle = dma_open (0、&dmaParams、&errCode);
if (gDmaHandle = NULL)
{
printf ("打开 DMA 驱动程序失败,错误=%d\n",错误代码);
返回;
} 
SPI_PARAMS_INIT (params);
params.mode = SPI_SLAVE;
params.dataSize = 8;
params.dmaEnable = 1;
params.dmaHandle = gDmaHandle;
Params.U.slaveParams.dmaCfg.txDmaChanNum =1U;
Params.U.slaveParams.dmaCfg.rxDmaChanNum =0U;
params.frameFormat = SPI_POL0_PHA1;
Params.ShiftFormat = SPI_MSB_FIRST;
Params.pinMode = SPI_PINMODE_4PIN_CS;
params.transferMode = SPI_MODE_CALLACK;
params.eccEnable = 1;
params.csHold = 1;
params.transferCallbackFxn = spiCallback; 

然后启动任务

Task_Params_init (&spiTaskParams);
spiTaskParams.priority = 4;
spiTaskParams.STACKSIZE = 3*1024;
Task_create (SPITASK、&spiTaskParams、NULL);

Semaphore_post (SPISem); 

我定义我的回调

void spiCallback (SPI_Handle handle、SPI_Transaction *事务)
{
if (事务->状态=SPI_TRANSFER_Completed)
{
Semaphore_post (SPISem);
}
return;
} 

我创建一个任务来执行 SPI 相关的任务

空 SPITASK (UARg arg0、UARg arg1)
{

char *msg ="1abcdefghijklmnopqrstuvwxyzDONE2abcdefghijklmnopqrstuvwxyzDONE";
字符 Rx[63];
System_printf ("SPI 任务已启动\n");
spiTransaction.count =(size_t) 62;
spiTransaction.txBuf =(void*) msg;
spiTransaction.rxBuf =(void *) rx;
spiTransaction.arg =空;
spiTransaction.slaveIndex = 0U;
while (1){
Semaphore_pend (SPISem、BIOS_wait_forever);
System_printf ("立即传输\n");
SPI_transfer (handle、&spiTransaction);
}
} 

在事务计数超过50个字节之前、处于阻塞模式的 SPI 工作正常、因此 SPI_Transfer 停止阻塞。  
在非阻塞模式下、在 SPI 传输完成后永远不会调用我的回调。 我看不到来自 MISO 线路的信号。  

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

    该帖子似乎与以下查询重复:
    e2e.ti.com/.../649505

    让我们在上一个主题中跟踪它并关闭这个新主题。

    谢谢、
    Raghu
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然可以。 我之前的主题中有一个问题得到了解答、但我没有得到回复、因此我想重新发布。
    请继续在我的另一个主题上为我提供帮助。
    谢谢、此致、
    Rakshit