查看: 8273|回复: 33

[其他] CAN的测试

[复制链接]

该用户从未签到

57

主题

531

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1356
最后登录
2016-12-5
发表于 2016-4-27 13:18:40 | 显示全部楼层 |阅读模式
小弟调的CAN分析仪自收发模式已经搞定,现在想连接到指定的设备上进行测试,对于这个测试过程不是很明白。
1.设备上的CAN报文是怎么产生的,比如机器动作,是进行一个动作,就会产生相应的CAN报文吗?然后CAN网络上有CAN报文,我这个CAN分析仪相当于一个节点,不进行过滤的话就会接收进来?
2.通过上位给CAN网络发送报文的作用是根据具体的指令来控制操作吗?比如说一个报文对应着不同的动作,发送下去就会机器就会来实现整个动作?是这样吗?


我知道答案 目前已有33人回答
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24903
最后登录
2025-7-22
发表于 2016-4-27 14:43:38 | 显示全部楼层
楼主你好!
1. 设备报文是通过你配置MCU实现报文在CAN总线上的发送,具体你只需要配置相关MCU的寄存器就可以,MCU会自行发送的。具体你可以参考下官方的代码,其实过程和自发收模式一样,只是一个自己发送,自己接受,另外一个是发送到总线上,等待总线上数据返回,并接受。
2. 上位机给CAN网络发送,同样也分为ID和报文,ID就是你下位机MCU的ID, 这样当相应ID的MCU收到报文的时候,就会接受下来。具体接受也是一样,你配置好MCU的寄存器,等待接收,代码就参考你自发自收的代码就行了,去掉loopback功能。
回复 支持 反对

使用道具 举报

该用户从未签到

57

主题

531

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1356
最后登录
2016-12-5
 楼主| 发表于 2016-4-28 09:09:08 | 显示全部楼层
小恩GG 发表于 2016-4-27 14:43
楼主你好!
1. 设备报文是通过你配置MCU实现报文在CAN总线上的发送,具体你只需要配置相关MCU的寄存器就可 ...

斑竹,“另外一个是发送到总线上,等待总线上数据返回,并接受。” 如果我给总线发送 数据帧,总线是不是不用给我返回呀,我现在测试使用了另外一个can分析仪,和我自己的MCU,两个节点之间进行通信。遇到俩个问题:
1.用CAN分析仪发过来的数据我这边只能接收到10帧,之后的就接收不到了。

2.我用自己做的给CAN分析仪发,只可以发过去1帧,之后就卡死掉了。

看现象应该是虚拟串口程序的问题吧,因为调用了OS,操作系统里边具体怎么运行的,我是不清楚的......

斑竹,求助~
回复 支持 反对

使用道具 举报

该用户从未签到

57

主题

531

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1356
最后登录
2016-12-5
 楼主| 发表于 2016-4-28 09:09:50 | 显示全部楼层
小恩GG 发表于 2016-4-27 14:43
楼主你好!
1. 设备报文是通过你配置MCU实现报文在CAN总线上的发送,具体你只需要配置相关MCU的寄存器就可 ...

接收到10帧
1.jpg
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24903
最后登录
2025-7-22
发表于 2016-4-28 09:46:30 | 显示全部楼层
LuoR 发表于 2016-4-28 09:09
斑竹,“另外一个是发送到总线上,等待总线上数据返回,并接受。” 如果我给总线发送 数据帧,总线是不是 ...

你是说,你用can分析仪,发送数据给你的MCU, 然后你的MCU再把接到的数据转给虚拟串口,并且上传到自己做的上位机,是吗?
你debug看下,10帧之后,看看代码死在什么地方了。
回复 支持 反对

使用道具 举报

该用户从未签到

57

主题

531

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1356
最后登录
2016-12-5
 楼主| 发表于 2016-4-28 10:09:15 | 显示全部楼层
小恩GG 发表于 2016-4-28 09:46
你是说,你用can分析仪,发送数据给你的MCU, 然后你的MCU再把接到的数据转给虚拟串口,并且上传到自己做 ...

对的,是这么个过程,有人说是OS配置的问题,等下我debug一下看看
回复 支持 反对

使用道具 举报

该用户从未签到

57

主题

531

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1356
最后登录
2016-12-5
 楼主| 发表于 2016-4-29 10:45:25 | 显示全部楼层
小恩GG 发表于 2016-4-28 09:46
你是说,你用can分析仪,发送数据给你的MCU, 然后你的MCU再把接到的数据转给虚拟串口,并且上传到自己做 ...

斑竹,我debug发现,前9帧都收到之后,第10帧也可以进入函数,但是在发送到串口的时候,OS里边还有我自己写的几个函数之间一直在循环着跳转,一直循环出不来,这应该是问题的关键,所以串口就卡死掉了,一直没有响应。但是这个问题为什么会出现在第10帧呢,因为调用的OS,里边的具体工作我不是很明白,是OS操作系统哪里出了问题吗?
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24903
最后登录
2025-7-22
发表于 2016-4-29 10:59:14 | 显示全部楼层
LuoR 发表于 2016-4-29 10:45
斑竹,我debug发现,前9帧都收到之后,第10帧也可以进入函数,但是在发送到串口的时候,OS里边还有我自己 ...

你现在用的是什么OS呢?
把你死掉地方的代码截个图出来看看。
回复 支持 反对

使用道具 举报

该用户从未签到

57

主题

531

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1356
最后登录
2016-12-5
 楼主| 发表于 2016-4-29 11:03:02 | 显示全部楼层
小恩GG 发表于 2016-4-28 09:46
你是说,你用can分析仪,发送数据给你的MCU, 然后你的MCU再把接到的数据转给虚拟串口,并且上传到自己做 ...

但是自收发不会出现这种问题,可以连续发几万帧给上位,但是两节点通信,上位机只负责接收部分,没有向下发任何数据,是不是会导致串口不能一直接收数据上来呢?    系统一直在Task_start  OSA_Start这边循环跳
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24903
最后登录
2025-7-22
发表于 2016-4-29 11:09:48 | 显示全部楼层
LuoR 发表于 2016-4-29 11:03
但是自收发不会出现这种问题,可以连续发几万帧给上位,但是两节点通信,上位机只负责接收部分,没有向下 ...

你用的是什么OS呢?
MQX还是其他的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-22 19:00 , Processed in 0.107286 second(s), 31 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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