请选择 进入手机版 | 继续访问电脑版

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

SPI中断时读取会多接收多余的0Xff是什么原因?

[复制链接]
吃绿色菜 提问时间:2023-9-14 11:29 / 未解决

源代码,实现的是spi的写读(阻塞式)

image.png

改成中断时读取,代码如下

image.png这种情况会多接收多余的0Xff

image.png

是哪里有问题呢

收藏 评论6 发布时间:2023-9-14 11:29

举报

6个回答
butterflyspring 回答时间:2023-9-14 15:10:19
这个不容易猜出来,也许是从设备没有发或者数据就是0xff也有可能。

既然是第一个数据是0xff, 那不妨挂着示波器调试一下就知道了。
在收到一个数据前后看看就能找到方向了。
吃绿色菜 回答时间:2023-9-14 16:30:18

butterflyspring 发表于 2023-9-14 15:10
这个不容易猜出来,也许是从设备没有发或者数据就是0xff也有可能。</p>
<p>既然是第一个数据是0xff, 那不妨挂着 ...

感谢回复!前4个是0xff,后面数据正常。能看出代码有什么问题吗

yr 回答时间:2023-9-14 16:58:33

感觉这个写法有问题。阻塞式先是发送,这样写,发送的个数tx_len*tx_len,因为在for循环里,hal库里一句话就是发n个,接收也一样,不过接收每次一个,貌似总数是对的,不过不用for,在size填需要的个数即可。

中断式,没有一开始的发送环节,直接收和发。

吃绿色菜 回答时间:2023-9-14 20:04:12

yr 发表于 2023-9-14 16:58
感觉这个写法有问题。阻塞式先是发送,这样写,发送的个数tx_len*tx_len,因为在for循环里,hal库里一 ...

[md]感谢评论!请教一下,中断式最后需要return rslt吗

yr 回答时间:2023-9-14 20:41:11

从程序严谨性角度,建议return这个语句的结果,有时,它不一定成功,就算返回hal-ok,只是可以开始收发,传输完成的信息会在中断返回,通过回调函数处理。

butterflyspring 回答时间:2023-9-15 10:02:08

吃绿色菜 发表于 2023-9-14 16:30
感谢回复!前4个是0xff,后面数据正常。能看出代码有什么问题吗

这个目前从代码中还没看出来,所以用示波器加调试看最方便。 在接收第一个数据时打断点,看看总线上是什么信号就找到问题点了。

有可能从设备一开始的数据就是0xff或者没有准备好数据。 从设备或许是受到主设备信号才返回数据也有可能的。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版