CC3100+STM32F103RC的SPI驱动相关问题
时间:10-02
整理:3721RD
点击:
我们参考并移植官方SDK1.0的C:\TI\CC3100SDK_1.1.0\cc3100-sdk\examples\tcp_socket 程序到STM32F103RC上面,最高速度也能跑到每秒900KB+;调用函数sl_SendTo()或sl_Send()函数每次进行1024个字节发送,该函数会阻塞MCU主程序的执行,从而打乱主程序的时序。通过分析产生阻塞的问题,定位到底层发送函数,发现底层SPI也是使用DMA+查询寄存器的方式,因此阻塞相当长的时间。
如果想实现STM32的SPI接口DMA中断收发,就需要对sl_SendTo()或sl_Send()函数进行修改。将官方TCP例程和我们移植后的例程就行对比都使用了DMA进行数据收发,但是DMA都是等待查询寄存器的方式。对于我们修改sl_SendTo()或sl_Send()函数实现DMA的中断收发有一定的难度,因此,请相关技术人员能够帮忙解决这个问题,或提供能实现DMA中断收发的参考例程,谢谢!
如果把socket设置成为non-blocking可以达到你的要求吗?
使用non-blocking方式会导致丢包,使用blocking方式会在_SlNonOsSemGet函数中阻塞很长时间导致其他任务运行不了,我使用的是UCOS-II,
请问在TI库函数的基础上如何进行任务调度,使WIFI在等待查询变量时能够切换出去,让其他任务运行,谢谢!