|
大家下午好,我是用的逻辑分析仪来分析这个SPI传输 设备极性是:【哪个沿取数据,空闲电平】 【0,0】 【0,1】 【1,1】 正常的数据,是有8个沿,不正常的数据,只有7个。
不正常的数据,只有7个SCLK。一字节8个,每个字节之间的空隙比正常的clk间隔大一些,所以第一个字节是少了一个SCLK,而且MOSI上发送的数据的也不对
请问这是什么原因导致的?大家有遇到类似的吗?或者有什么排查是思路吗 |
L9663驱动开发
STM32G071C8的ADC问题,测量6路交流信号,端口使用PA2-PA7,信号来自电流互感器次级用20欧电阻转为电压信号,并联T4,通过1K,104滤波后到ADC引脚,个别芯片出现PA3结果是固定值,即使直接把引脚对地短短接,结果也是2000多个数,可能是什么原因
STM32G030F6P6TR 48MHz下Flash擦写必HardFault?官方库疑似有坑,求勘误或替代方案
STM32F1 SPI2 无法通信
stm32g071的rtc初始化后会直接进入中断怎么办?
STM32H563的QSPI接口不能读取W25Q256的后128MB数据
STM32C5 HAL SPI CRC 错误无法触发错误回调
HAL 库建议支持GPIO 同时配置为AF 与外部中断 EXTI
STM32G030死机问题
SPI 发送数据需要等待哪些状态标志位?
微信公众号
手机版
发生在哪种模式下或情形下? 你目前4个SPI器件的配置不一样?
在切换不同器件的通信时,稍做下延时先让时钟空闲一会,然后开启通信会怎么样?
那么很大的可能来自于中间切换。 SPI重新配置时或者停止时需要注意当前状态,不要在数据没发送完时去停止或修改SPI。 楼主可以注意一下这点。
谢谢回复
程序跑的裸机,没有操作系统。
少一个时钟和发送的数据异常是每次都这样的。程序主要是会在2中SPI模式中切换,例如每个9秒和FPGA通信【0,0】,设置DAC的时候,这个控制一次的时间大概4ms执行一次【0,1】,每一次都会进行SPI的极性切换。其他的极性【1,1】切换不经常执行,有需要才会执行一次。
例如我每次执行设置DAC,就会去切换一次极性,函数封装为:(切换极性,发送数据)。所以极性一直在被重新配置。
数据异常的情况:
因为DAC使用频率更高,所以大部分是从DAC【0,1】切换成FPGA【0,0】,按照逻辑分析仪抓出来的波形,极性切换时序(cs,SCLK是符合SPI对应的模式要求的)没有问题。
数据正常:
如果上一次的极性就是配置为【0,0】,那么我和FPGA通信的时候,再次把极性配置成【0,0】,那数据发送也是正常的。
如果单纯的配置完极性和相位,延时10ms,问题还是存在,
我现在的处理方式:
函数封装:(先关闭spi外设使能,延时10us,配置极性和相位,延时10us,使能SPI外设。再配置一遍极性和相位。最后发送数据)
目前这样看的话,是可以使用,但是不确定是否可靠,我想知道具体的原因是什么,为什么在切换的时候会有这个问题
是在重新配置之前,检查数据寄存器是否为空吗?上一次数据发送完成之后,为空,在来做重新配置?