你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
大家下午好,我是用的逻辑分析仪来分析这个SPI传输
设备极性是:【哪个沿取数据,空闲电平】 【0,0】 【0,1】 【1,1】
正常的数据,是有8个沿,不正常的数据,只有7个。
不正常的数据,只有7个SCLK。一字节8个,每个字节之间的空隙比正常的clk间隔大一些,所以第一个字节是少了一个SCLK,而且MOSI上发送的数据的也不对
请问这是什么原因导致的?大家有遇到类似的吗?或者有什么排查是思路吗
举报
xmshao 发表于 2023-7-7 16:05 你所说的少一个时钟是偶尔还是确定的?</p> <p>
谢谢回复
程序跑的裸机,没有操作系统。
少一个时钟和发送的数据异常是每次都这样的。程序主要是会在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外设。再配置一遍极性和相位。最后发送数据)
目前这样看的话,是可以使用,但是不确定是否可靠,我想知道具体的原因是什么,为什么在切换的时候会有这个问题
butterflyspring 发表于 2023-7-7 17:01 从逻辑上讲,第一次发出数据后,数据正常,那么修改配置再发送也应该正常,不应该缺失个数。 那么很大的可 ...
是在重新配置之前,检查数据寄存器是否为空吗?上一次数据发送完成之后,为空,在来做重新配置?
电脑hdmi连接显示器无信号
夜深了,睡不着
晚上好啊,兄弟们
请问hal库的硬件spi,该怎么修改spi时钟的占空比呀?
第三季度啦,兄弟们
STM32G070RBT6TR ADC采集定点电压误差较大,有没有优化方向
LIS2MDL X轴数据读取问题
无法完全整片擦除 STM32H Nucleo
周末卡点打卡
使用touchgfx控件modalWindow,显示会有条纹
发生在哪种模式下或情形下? 你目前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外设。再配置一遍极性和相位。最后发送数据)
目前这样看的话,是可以使用,但是不确定是否可靠,我想知道具体的原因是什么,为什么在切换的时候会有这个问题
是在重新配置之前,检查数据寄存器是否为空吗?上一次数据发送完成之后,为空,在来做重新配置?