微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > CC3100+STM32F103RC的SPI驱动相关问题

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在等待查询变量时能够切换出去,让其他任务运行,谢谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top