CC3200 SPI收发数据
使用官方的SPI_Demo例子 Master模式 可以正常发数据出去,但是怎么接受数据啊?
还有就是论坛TI员工提供SPI DMA模式的例子(spi_demo_DMA.zip),但是这个例子在while( !(MAP_SPIIntStatus(GSPI_BASE,false) & SPI_INT_EOW) );就卡死了。。。。有没有什么解决方案?
1.接收数据可以用示波器来观测。
2.建议先用普通的中断方式来接收!使能相关中断以及设置断点,如果有数据一定会进入中断服务程序的!
3.while( !(MAP_SPIIntStatus(GSPI_BASE,false) & SPI_INT_EOW) );可以换成软件延时1毫秒再进行后续处理。
楼主是接收处理中这句话出现卡死吗?
这应该是判断数据状态的,再说demo中肯定会给出中断的收发例程的。可以好好找找查找下原因。
不行自己写程序进行轮训接收中断FLAG位
使能SPI接收中断,在中断读出FIFO的数据到变量就行,具体的寄存器,要参考demo去修改,另外就是你何时使用这些数据了
接收完会有触发中断,缓冲区里是接收到的数据,这个demo应该是用的外设,所以很多工作硬件都完成了,你直接在中断处理程序里做处理,把数据传出来就好了、、
SPI通信需要四个引脚,分别定义为输入MISO,输出MOSI,时钟CLK和片选端CS.按照SPI的时序对对传感器里面的寄存器进行读写就行了.
每次接收到的数据都必须在下一次数据传输之前被采样。如果之前接收到的数据没有被读取,这些已经接收完成的数据有可能被丢弃,导致SPI物理模块最终失效。所以程序里一般都会在SPI传输完数据后,去读SPI设备里的数据
什么意思?
可以使用接受标志位,一旦接收到,标志位置1,读取数据寄存器即可
如果想要接收数据,楼主要修改Demo的代码,楼主可以仔细阅读官网给出的手册,里面给出了接收数据的过程。楼主只要自己修改一下代码就可以。
循环问题,楼主可以通过断点调试的方式查看是那个地方的变量出问题,或者换一种判断方式。
官方的例程里面应该是master会接收到数据在g_ucRxBuff里面,你有看到SLAVE传过来的数据吗?
换个浏览器试试!
既然可以master发送数据了,那么接收你就直接读寄存器的数据就好了啊。有中断的话就在中断里面读,没有中断的话 ,你就查询的读。
像第二个问题的话,你最好使用调试器跟着走,看一看各个寄存器的值来进行判断。看看是不是还有那个关键的寄存器没有配置正确。
设个数据接收标志位试试,在SPI中断中读标志位。
问题已解决,前几天都回复结贴了,发了几次,邮件提醒审核通过了,但是看不见
具体参考的 https://github.com/severin-kacianka/cc3200_dma_spi_example
只要带链接的好像都看不见,应该是被官方和谐了。
呵呵呵呵呵 有一种功能叫仿真,单步调试可以直接清晰的看到所有的问题。
以前调试SI4432的时候你可能收到了数据芯片也产生中断了,但是是单片机没有处理好中断导致的问题。
记住:单步调试
你好,想问一下在哪里能够找到官方提供的历程?
您好,官网手册哪里有提到SPI?
CC3200SDK里就有SPI的例程
看这边 http://processors.wiki.ti.com/index.php/CC32xx_SPI_Demo
Yonghua Pan
官方的例程里面应该是master会接收到数据在g_ucRxBuff里面,你有看到SLAVE传过来的数据吗?
您好,g_ucRxBuff里的数据一直是“\”,怎么回事?