OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2610|回复: 3

CAN中断接收,主循环数据解析偶尔出现失真

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2022-10-10
在线时间
16 小时
发表于 2023-8-19 18:06:49 | 显示全部楼层 |阅读模式
在STM32F103芯片做CAN通信,在中断里面通过全局变量接收CAN消息,放到主函数里面循环解析代码,CAN帧消息比较多。目前出现的问题是:在主循环解析得到的数据偶尔出现失真,即数据突然间变得很大,但一般情况下解析得到的数据是正常的。
检查了接收到的CAN的消息是正确的,这是不是读写出现冲突?

也有做过在中断里接收数据时候加标志位,解析完后标志位清零,但还是会出现数据失真
请问这问题要怎么处理,或者大家是怎么解析CAN的数据不会失真的。

主函数.png
CAN.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8462
金钱
8462
注册时间
2020-5-11
在线时间
3904 小时
发表于 2023-8-21 18:54:42 | 显示全部楼层
本帖最后由 LcwSwust 于 2023-8-21 19:04 编辑

你那些数组是什么类型
监测一下CAN数据就知道问题在哪边了
傲游截图20230821185327.jpg
专治疑难杂症
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2022-10-10
在线时间
16 小时
 楼主| 发表于 2023-8-22 16:06:46 | 显示全部楼层
LcwSwust 发表于 2023-8-21 18:54
你那些数组是什么类型
监测一下CAN数据就知道问题在哪边了

有用CAN分析仪监测,接收到的CAN帧是没问题;可能是读写冲突,现在的方案是将接收到的CAN帧丢到队列里面,主函数循环解析,但还是会出现数据失真,再对每个数据进行范围限定,目前是靠着这样解决了
回复 支持 反对

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8462
金钱
8462
注册时间
2020-5-11
在线时间
3904 小时
发表于 2023-8-22 17:30:08 | 显示全部楼层
zhangxs32 发表于 2023-8-22 16:06
有用CAN分析仪监测,接收到的CAN帧是没问题;可能是读写冲突,现在的方案是将接收到的CAN帧丢到队列里面 ...

你的意思是正在解析数据计算电压电流时,新的一帧数据到来改变了数据?
比如,
此次收到:01FF
下次收到:0200
你可能得到的是:0100或者02FF?
应该是可以通过标志位解决的,比如,正在解析数据时就置忙标志(或关CAN中断),CAN中断检测到"忙"标志就不保存数据.
专治疑难杂症
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 18:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表