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.
CC3235MODSF开发板,SPI采用master模式,数据宽度两个字节,发射和接收通道都连接上DMA,双DMA通道,用的tirtos系统上跑WIFI-AP模式,调用sl_Recv接收上位机数据通过DMA到SPI发射出去,SPI DMA接收到的数据通过sl_Send发送到上位机。问题来了,当我发送和接收的数据包很小的时候没有问题,整个过程很流畅,当数据增大到1460字节一个包(DMA大小设置为1460字节),SPI发射没问题,但是SPI RX DMA接收了一包1460然后调用sl_Send发送过后就卡死了,程序卡死在等待第二包1460接收上,第二次触发SPI-RX-DMA没有反应,SPI没有工作卡死了,经过测试只要不调用sl_Send,SPI RX DMA 就能流畅工作,sl_Send函数是阻塞等待的,意思是我在保证sl_Send发送完1460字节后再启动调用SPI RX DMA ,结果还是卡死了。同样的代码放在CC3200开发板上就没问题,CC3200开发板上用的freertos系统,到底是什么原因呢?
经过我试验,验证了一个问题,SPI函数SPI_transfer();和sl_Send();函数不能同时工作,我把这两个函数放在两个线程调用就会卡死,spi就会没有原因的停止工作;如果把这两个函数放在一个线程,阻塞等待sl_Send();返回后再执行SPI_transfer();这样就完全没问题。这会不会是一个BUG啊,看文档秒速sl_Send();阻塞的时候是在通过内部的SPI与NWK通信,在这期间如果使用SPI_transfer();调用了DMA,就直接死了啊,系统线程没有死,就死在SPI一直不能启动了。能不能帮忙想想到底是为什么啊,你们也试试我上述操作。