
大家下午好,我是用的逻辑分析仪来分析这个SPI传输 设备极性是:【哪个沿取数据,空闲电平】 【0,0】 【0,1】 【1,1】 正常的数据,是有8个沿,不正常的数据,只有7个。 不正常的数据,只有7个SCLK。一字节8个,每个字节之间的空隙比正常的clk间隔大一些,所以第一个字节是少了一个SCLK,而且MOSI上发送的数据的也不对 请问这是什么原因导致的?大家有遇到类似的吗?或者有什么排查是思路吗 |
STM32N6570-DK开发板,哪里还有卖的?
基于STM32U575的RFID信息审查系统?
SD卡初始化第一次初始化后再次初始化时会失败。
STM32CubeProgrammer 安装错误,请帮忙解决,谢谢
关于三轴陀螺仪 I3G4250D
STM32CubeMX 配置STM32G070RBT6TR时无法使能PVD中断
STM32G070RBT6TR STM32CubeMX ADC配置后使用的是内部参考电压且零点的读数太大了
测评在哪里发?
Group Study vs. Solo Study: What Works Best?
STM32U3 IIC通信后,SPI+GPDMA 进入循环发送,DMA无法使能 寄存器USEF=1
发生在哪种模式下或情形下? 你目前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外设。再配置一遍极性和相位。最后发送数据)
目前这样看的话,是可以使用,但是不确定是否可靠,我想知道具体的原因是什么,为什么在切换的时候会有这个问题
是在重新配置之前,检查数据寄存器是否为空吗?上一次数据发送完成之后,为空,在来做重新配置?