使用官方的SPI_Demo例子 Master模式 可以正常发数据出去,但是怎么接受数据啊?
还有就是论坛TI员工提供SPI DMA模式的例子(spi_demo_DMA.zip),但是这个例子在while( !(MAP_SPIIntStatus(GSPI_BASE,false) & SPI_INT_EOW) );就卡死了。。。。有没有什么解决方案?
da qin zheng sheng:
1.接收数据可以用示波器来观测。
2.建议先用普通的中断方式来接收!使能相关中断以及设置断点,如果有数据一定会进入中断服务程序的!
3.while( !(MAP_SPIIntStatus(GSPI_BASE,false) & SPI_INT_EOW) );可以换成软件延时1毫秒再进行后续处理。
user4187796:
回复 da qin zheng sheng:
楼主是接收处理中这句话出现卡死吗?
这应该是判断数据状态的,再说demo中肯定会给出中断的收发例程的。可以好好找找查找下原因。
不行自己写程序进行轮训接收中断FLAG位
user4441475:
使能SPI接收中断,在中断读出FIFO的数据到变量就行,具体的寄存器,要参考demo去修改,另外就是你何时使用这些数据了
zhirui zheng:
接收完会有触发中断,缓冲区里是接收到的数据,这个demo应该是用的外设,所以很多工作硬件都完成了,你直接在中断处理程序里做处理,把数据传出来就好了、、
zrk787:
SPI通信需要四个引脚,分别定义为输入MISO,输出MOSI,时钟CLK和片选端CS.按照SPI的时序对对传感器里面的寄存器进行读写就行了.
Shiwei Sun:
每次接收到的数据都必须在下一次数据传输之前被采样。如果之前接收到的数据没有被读取,这些已经接收完成的数据有可能被丢弃,导致SPI物理模块最终失效。所以程序里一般都会在SPI传输完数据后,去读SPI设备里的数据
user1604881:
回复 Shiwei Sun:
什么意思?
user4254532:
可以使用接受标志位,一旦接收到,标志位置1,读取数据寄存器即可
yang li19:
如果想要接收数据,楼主要修改Demo的代码,楼主可以仔细阅读官网给出的手册,里面给出了接收数据的过程。楼主只要自己修改一下代码就可以。
循环问题,楼主可以通过断点调试的方式查看是那个地方的变量出问题,或者换一种判断方式。
Yonghua Pan:
官方的例程里面应该是master会接收到数据在g_ucRxBuff里面,你有看到SLAVE传过来的数据吗?