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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版