接上篇ADN8810的STM32硬件SPI驱动时钟极性问题

遇到的问题beij

  • 背景:时钟极性(Clock Polarity)CPOL,默认为LOW。

  • 遇到的问题,首先我是直接给了一个CODE让AND8810能够输出电流,然后按照数据手册给的公式把电流转为CODE的时候出现了自认为玄学的问题,更改预设电流值,输出经常会跳为0。我一直是以为通信出现了问题,一直没有准确复现这个问题。然后按照公式预设100毫安左右时输出只有50毫安,这我一开始没注意,以为是公式解错了。直到学长让我测一下输出的分辨率等参数。我用CODE++惊奇的发现CODE为奇数全没有输出。
    请添加图片描述

  • 解决问题的过程,我看了一下逻辑分析仪,发现硬件SPI的数据线在每一次传输完数据后会一直保持最后一位的状态,结合ADN8810首位必须为低电平的特性判断应该是ADN8810把上一次 的高电平判断为了本次通信的数据。请添加图片描述
    那么首先想到的是直接下拉数据线,然后发现硬件SPI不支持。
    在这里插入图片描述

  • 再想下一个解决方案,我想明明通信时有CLK才能读取数据啊,为什么会先读到上一次还没变化的数据。我就想到了肯定是数据的判决时刻问题。有可能ADN8810是检测时钟的上升沿开始写入数据,时钟为低的时候,时钟开始就是上升沿,这个时候读取数据很容易造成数据线还没跳变数据就已经开始传输的情况了。 在这里插入图片描述

  • 如果我们把时钟的极性调为高,时钟一开始跳变就是下降沿,半个周期后才有上升沿,这样数据线就有足够的时间稳定。修改了这一个参数解决了玄学问题。最大值小了一半的原因也肯定是把上一个数据没有改变的0当成了这一次的第一个数据,相当于整个十六位数据右移了一位。
    -在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜的抠jio?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值