你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G070挂载4个设备,切换SPI极性和相位之后,发现第一个字节SCLK,只有7个,MOSI数据也不对

[复制链接]
feiling4 提问时间:2023-7-7 15:29 / 未解决

大家下午好,我是用的逻辑分析仪来分析这个SPI传输

设备极性是:【哪个沿取数据,空闲电平】 【0,0】 【0,1】 【1,1】

正常的数据,是有8个沿,不正常的数据,只有7个。

2023-06-30_11-33-04正常数据.jpg

不正常的数据,只有7个SCLK。一字节8个,每个字节之间的空隙比正常的clk间隔大一些,所以第一个字节是少了一个SCLK,而且MOSI上发送的数据的也不对

2023-06-30_11-33-14异常数据,7个clk.jpg

image.png

请问这是什么原因导致的?大家有遇到类似的吗?或者有什么排查是思路吗

赞 收藏 评论4 发布时间:2023-7-7 15:29

举报

4个回答
xmshao 回答时间:2023-7-7 16:05:49
你所说的少一个时钟是偶尔还是确定的?


发生在哪种模式下或情形下? 你目前4个SPI器件的配置不一样?


在切换不同器件的通信时,稍做下延时先让时钟空闲一会,然后开启通信会怎么样?
butterflyspring 回答时间:2023-7-7 17:01:40
从逻辑上讲,第一次发出数据后,数据正常,那么修改配置再发送也应该正常,不应该缺失个数。
那么很大的可能来自于中间切换。 SPI重新配置时或者停止时需要注意当前状态,不要在数据没发送完时去停止或修改SPI。 楼主可以注意一下这点。
feiling4 回答时间:2023-7-7 17:11:40

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对应的模式要求的)没有问题。

数据异常且备注说明.jpg

数据正常:

如果上一次的极性就是配置为【0,0】,那么我和FPGA通信的时候,再次把极性配置成【0,0】,那数据发送也是正常的。

正常的数据且加了说明.jpg

如果单纯的配置完极性和相位,延时10ms,问题还是存在,

我现在的处理方式:

函数封装:(先关闭spi外设使能,延时10us,配置极性和相位,延时10us,使能SPI外设。再配置一遍极性和相位。最后发送数据)

目前这样看的话,是可以使用,但是不确定是否可靠,我想知道具体的原因是什么,为什么在切换的时候会有这个问题

feiling4 回答时间:2023-7-10 11:06:18

butterflyspring 发表于 2023-7-7 17:01
从逻辑上讲,第一次发出数据后,数据正常,那么修改配置再发送也应该正常,不应该缺失个数。
那么很大的可 ...

是在重新配置之前,检查数据寄存器是否为空吗?上一次数据发送完成之后,为空,在来做重新配置?

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版