OpenEdv-开源电子网

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

关于stm32 can模块FIFO问题

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2019-5-16
在线时间
4 小时
发表于 2020-3-16 16:16:06 | 显示全部楼层 |阅读模式
4金钱
目前在做can模块通讯,在中断内部进行ID以及数据的校验如下  static CanRxMsg RxMsg;
        CAN_Receive(CAN1, CAN_FIFO0, &RxMsg);

        if(RxMsg.Data[0]==0x4D&&RxMsg.Data[1]==0x04&&msg.cob_id==pSystem_ConfigData->Can_ID)
        {
        CAN_return_flag = 1;
        }

在工作时发现先发送 id数据都正确的数据帧可以正常工作 但在这之后发送id正确的远程帧同样可以触发。请问FIFO读取以后数据是不是不会清空继续保留?有没有比较好的解决方案(除了校验数据帧类型 最好可以清空FIFO)


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2020-3-16 18:18:35 | 显示全部楼层
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2020-3-16 19:20:16 | 显示全部楼层
CAN通信还需要再数据校验?
一分耕耘一分收获。
回复

使用道具 举报

2

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2019-8-29
在线时间
16 小时
发表于 2020-3-16 20:17:05 | 显示全部楼层
可以触发了can中断之后,在中断里把数据段读出来,放到另外一个数组里。不管fifo有没有清空,只要不触发中断,数据就不会改变,不知道你说的是不是这个意思。数据帧后面的crc段就是来检查帧错误的,所以在数据段 不加段头效验也应该没事。
回复

使用道具 举报

2

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2019-8-29
在线时间
16 小时
发表于 2020-3-16 20:17:54 | 显示全部楼层
可以触发了can中断之后,在中断里把数据段读出来,放到另外一个数组里。不管fifo有没有清空,只要不触发中断,数据就不会改变,不知道你说的是不是这个意思。数据帧后面的crc段就是来检查帧错误的,所以在数据段 不加段头效验也应该没事。
回复

使用道具 举报

2

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2019-8-29
在线时间
16 小时
发表于 2020-3-16 20:19:01 | 显示全部楼层
可以触发了can中断之后,在中断里把数据段读出来,放到另外一个数组里。不管fifo有没有清空,只要不触发中断,数据就不会改变,不知道你说的是不是这个意思。数据帧后面的crc段就是来检查帧错误的,所以在数据段 不加段头效验也应该没事。
回复

使用道具 举报

2

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2019-8-29
在线时间
16 小时
发表于 2020-3-16 20:19:22 | 显示全部楼层
可以触发了can中断之后,在中断里把数据段读出来,放到另外一个数组里。不管fifo有没有清空,只要不触发中断,数据就不会改变,不知道你说的是不是这个意思。数据帧后面的crc段就是来检查帧错误的,所以在数据段 不加段头效验也应该没事。
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2019-5-16
在线时间
4 小时
 楼主| 发表于 2020-3-17 10:02:02 | 显示全部楼层
yklstudent 发表于 2020-3-16 19:20
CAN通信还需要再数据校验?

是的检测 到对应的地址 以及对应的数据说明收到正确的数据帧
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2019-5-16
在线时间
4 小时
 楼主| 发表于 2020-3-17 10:03:48 | 显示全部楼层
的地方地方 发表于 2020-3-16 20:17
可以触发了can中断之后,在中断里把数据段读出来,放到另外一个数组里。不管fifo有没有清空,只要不触发中 ...

数据已经拿出来了 我的疑问在于 第一次发送数据帧 第二次发送远程帧 发现发送远程帧后读取FIFO还是有数据帧的数据 没有更新。
回复

使用道具 举报

2

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2019-8-29
在线时间
16 小时
发表于 2020-3-17 15:59:56 | 显示全部楼层
我卡了。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 18:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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