【SPI从机】使用官方例程,SPI_CPU_KIT 问题

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
cool0o0mark
Level 3
Level 3
10 replies posted 5 replies posted 10 questions asked
官方例程SPI3 配置为从机,我使用这个例程进行通讯,发现可以接收主机发送的数据,但是从机不能发送数据。主机接收到的全是0XFF,是不是从机要发送数据还需要什么配置?
0 点赞
4 回复数
cool0o0mark
Level 3
Level 3
10 replies posted 5 replies posted 10 questions asked
从机发送问题解决了,从机发送可以采用DMA的方式,但是又有新问题产生了。主机发送X035 从机接收到后,原样回复。主机接收到的确实0X9A 。我尝试修改了spiSlaveConfig.protocol 配置信息 也没有改变。
0 点赞
破案极品飞剑
Level 1
您配置的是TC275吗
0 点赞
DBC
Level 1
Level 1
第一个发送的全是0XFF,是由于TXFIFO产生了下溢错误,当数据开始传输时,TXFIFO为空,则会全部发送1。并且在如果在传输开始的同时对TXFIFO进行更新会导致数据出错,因此必须在传输开始前就填充TXFIFO。为了及时的填充TXFIFO,可以在RX中断中,在接收函数的后面,对QSPI状态进行判断,如果状态为空闲就开始填充TXFIFO。注意,此方法需要在初始化SPI后先调用一次exchange函数,之后就可以纯靠中断自动了。以下是我在学习QSPI作为从模式时的一个简要的流程总结: ILLD库QSP从模式下的数据传输 1.初始化QSPI模块 2.使用exchange 函数把存放接受数据和发送数据的数组首地址分别给txJob.data和RxJob.data,将需要发送(接受)的数据个数count传递给rxJob.remaining和txJob.remaining,接受个数和发送个数需一致。并置onTransfer=true 3.之后启动一次IfxQspi_SpiSlave_write函数,将需要发送的数据传入TXFIFO 4.之后依靠中断函数不断调用IfxQspi_SpiSlave_write和IfxQspi_SpiSlave_read函数不断读取和发送数据,当接收完最后一个数据后,onTransfer=flase
0 点赞
京畿提督
Level 1
Level 1
250 sign-ins 100 sign-ins 50 sign-ins
我有些疑问想要询问一下。我现在TC375通过SPI读取一个设备的数据,但是只需要初始化时拉低控制引脚让设备发送一组数据,此后不再需要,所以我想不使用中断操作。通过查看SPI的API,能知道其实主机读取数据其实就是用了IfxQspi_SpiMaster_read这个函数。那么我的逻辑就可以做成:取消所有中断----初始化时拉低控制引脚并调用exchange函数进行接收设置----设备发出数据给主机----调用IfxQspi_SpiMaster_read函数读取FIFO中的数据。我这样子操作后debug运行监控到接收buff里面的数值全是0x00,但是通过单步调试到IfxQspi_SpiMaster_read函数后,buff里面有我需要的数据。我推测是不是有什么状态位的存在,在我调用IfxQspi_SpiMaster_read之前就把FIFO中的数据清空了?我有看到它的移位功能,是不是我需要关闭移位,在我调用IfxQspi_SpiMaster_read函数后手动清除FIFO?还请指点一下,谢谢。
0 点赞