OpenEdv-开源电子网

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

多节点can通信

[复制链接]

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
发表于 2016-11-28 11:27:21 | 显示全部楼层 |阅读模式
1金钱
原子哥  有没有多节点can通信的事例程序呀 三个以上的 我现在想做一个节点可以接收其他所有的节点发生的内容 怎么对程序进行设置?

最佳答案

查看完整内容[请看2#楼]

这个不应该吧 ,id越小优先级越高啊 是不是相同数据帧类型哦?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2016-10-27
在线时间
76 小时
发表于 2016-11-28 11:27:22 | 显示全部楼层
lyz864512 发表于 2016-12-1 16:56
两个ID 一个是1234 一个是4321 同时向一个节点发生 为什么先接受4321后结束1234

这个不应该吧 ,id越小优先级越高啊 是不是相同数据帧类型哦?
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-11-28
在线时间
0 小时
发表于 2016-11-28 13:47:16 | 显示全部楼层
我有个 can 主机和从机 的例子 需要么
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-11-28
在线时间
0 小时
发表于 2016-11-28 13:55:27 | 显示全部楼层
yangwenmou8 发表于 2016-11-28 13:47
我有个 can 主机和从机 的例子 需要么

http://pan.baidu.com/s/1o8yIdj8
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-11-28 13:55:55 | 显示全部楼层
yangwenmou8 发表于 2016-11-28 13:47
我有个 can 主机和从机 的例子 需要么

没有三个节点的吗??我这有两个的通信 但是三个的通信有点问题
回复

使用道具 举报

36

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2016-3-26
在线时间
83 小时
发表于 2016-11-28 14:33:14 | 显示全部楼层
lyz864512 发表于 2016-11-28 13:55
没有三个节点的吗??我这有两个的通信 但是三个的通信有点问题

can就是多对多的,既然你2个通信正常,说明3个也正常,如不正常,检查下线路,板子,
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-11-28 15:18:34 | 显示全部楼层
li13158 发表于 2016-11-28 14:33
can就是多对多的,既然你2个通信正常,说明3个也正常,如不正常,检查下线路,板子,

不是我的意思是 两个的有 但是我需要一个 一个接收所有的程序 但是有的部分不知道怎么设置 让一个节点可以接收所有的节点的内容
回复

使用道具 举报

36

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2016-3-26
在线时间
83 小时
发表于 2016-11-29 18:01:31 | 显示全部楼层
lyz864512 发表于 2016-11-28 15:18
不是我的意思是 两个的有 但是我需要一个 一个接收所有的程序 但是有的部分不知道怎么设置 让一个节点可 ...

所有节点都可以接受所有的内容
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-11-30 09:41:07 | 显示全部楼层
li13158 发表于 2016-11-29 18:01
所有节点都可以接受所有的内容

是可以接收就是具体一个节点怎么接收多个ID具体怎么处理的 是将ID分别赋值给一个变量吗?
回复

使用道具 举报

36

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2016-3-26
在线时间
83 小时
发表于 2016-11-30 10:25:20 | 显示全部楼层
lyz864512 发表于 2016-11-30 09:41
是可以接收就是具体一个节点怎么接收多个ID具体怎么处理的 是将ID分别赋值给一个变量吗?

你可以设置ID不过滤,你接收的数据是CanRxMsg类型的,ID只是结构体中一个变量。具体可以看例程
typedef struct
{
  uint32_t StdId;  /*!< Specifies the standard identifier.
                        This parameter can be a value between 0 to 0x7FF. */

  uint32_t ExtId;  /*!< Specifies the extended identifier.
                        This parameter can be a value between 0 to 0x1FFFFFFF. */

  uint8_t IDE;     /*!< Specifies the type of identifier for the message that
                        will be received. This parameter can be a value of
                        @ref CAN_identifier_type */

  uint8_t RTR;     /*!< Specifies the type of frame for the received message.
                        This parameter can be a value of
                        @ref CAN_remote_transmission_request */

  uint8_t DLC;     /*!< Specifies the length of the frame that will be received.
                        This parameter can be a value between 0 to 8 */

  uint8_t Data[8]; /*!< Contains the data to be received. It ranges from 0 to
                        0xFF. */

  uint8_t FMI;     /*!< Specifies the index of the filter the message stored in
                        the mailbox passes through. This parameter can be a
                        value between 0 to 0xFF */
} CanRxMsg;
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-11-30 16:40:21 | 显示全部楼层
li13158 发表于 2016-11-30 10:25
你可以设置ID不过滤,你接收的数据是CanRxMsg类型的,ID只是结构体中一个变量。具体可以看例程
typedef  ...

不过滤的话不就没有各个节点的优先级的区分了吗  三个ID怎么过滤
回复

使用道具 举报

5

主题

121

帖子

0

精华

高级会员

Rank: 4

积分
620
金钱
620
注册时间
2016-1-26
在线时间
150 小时
发表于 2016-12-1 09:59:36 | 显示全部楼层
lyz864512 发表于 2016-11-30 16:40
不过滤的话不就没有各个节点的优先级的区分了吗  三个ID怎么过滤

需要接受所有数据的那个节点,不用位屏蔽,其余用为屏蔽就好了
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-12-1 10:56:44 | 显示全部楼层
无休 发表于 2016-12-1 09:59
需要接受所有数据的那个节点,不用位屏蔽,其余用为屏蔽就好了

但是 为什么不能够同时处理两个呢??[mw_shl_code=c,true]CAN_FilterInitStructure.CAN_FilterIdHigh= (((u32)0x1234<<3)&0xFFFF0000)>>16;                                //òa1y&#194;&#203;μ&#196;ID&#184;&#223;&#206;&#187;
    CAN_FilterInitStructure.CAN_FilterIdLow= (((u32)0x1234<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òa1y&#194;&#203;μ&#196;IDμí&#206;&#187;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh= (((u32)0x4321<<3)&0xFFFF0000)>>16;                //1y&#194;&#203;&#198;÷&#184;&#223;16&#206;&#187;&#195;&#191;&#206;&#187;±&#216;D&#235;&#198;¥&#197;&#228;
  CAN_FilterInitStructure.CAN_FilterMaskIdLow= (((u32)0x4321<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF;                        //1y&#194;&#203;&#198;÷μí16&#206;&#187;&#195;&#191;&#206;&#187;±&#216;D&#235;&#198;¥&#197;&#228;[/mw_shl_code]
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-12-1 10:56:58 | 显示全部楼层
无休 发表于 2016-12-1 09:59
需要接受所有数据的那个节点,不用位屏蔽,其余用为屏蔽就好了

是这样的吧??
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-12-1 10:59:08 | 显示全部楼层
无休 发表于 2016-12-1 09:59
需要接受所有数据的那个节点,不用位屏蔽,其余用为屏蔽就好了

对了 这个为什么只过滤屏蔽的ID 不屏蔽的为什么没有打印出来
回复

使用道具 举报

5

主题

121

帖子

0

精华

高级会员

Rank: 4

积分
620
金钱
620
注册时间
2016-1-26
在线时间
150 小时
发表于 2016-12-1 11:31:09 | 显示全部楼层
lyz864512 发表于 2016-12-1 10:59
对了 这个为什么只过滤屏蔽的ID 不屏蔽的为什么没有打印出来

你没看懂什么事屏蔽ID怎么用的,屏蔽ID是只接受你设置ID的数据,其余的处于屏蔽状态,建议网上看看相关资料
回复

使用道具 举报

5

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2016-10-27
在线时间
76 小时
发表于 2016-12-1 11:33:26 | 显示全部楼层
can数据只要发到总线上,所有节点都可以接受的,没有2节点,还是3节点的问题
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-12-1 16:55:21 | 显示全部楼层
无休 发表于 2016-12-1 11:31
你没看懂什么事屏蔽ID怎么用的,屏蔽ID是只接受你设置ID的数据,其余的处于屏蔽状态,建议网上看看相关资 ...

你说的和我说的补一个东西
CAN_FilterInitStructure.CAN_FilterIdHigh=
CAN_FilterInitStructure.CAN_FilterMaskIdHigh
我说的是这两个语句
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-12-1 16:56:31 | 显示全部楼层
ljz1987cj 发表于 2016-12-1 11:33
can数据只要发到总线上,所有节点都可以接受的,没有2节点,还是3节点的问题

两个ID 一个是1234 一个是4321 同时向一个节点发生 为什么先接受4321后结束1234
回复

使用道具 举报

5

主题

121

帖子

0

精华

高级会员

Rank: 4

积分
620
金钱
620
注册时间
2016-1-26
在线时间
150 小时
发表于 2016-12-1 17:20:23 | 显示全部楼层
lyz864512 发表于 2016-12-1 16:55
你说的和我说的补一个东西
CAN_FilterInitStructure.CAN_FilterIdHigh=
CAN_FilterInitStructure.CAN_F ...

就是这两个寄存器,分16位,32位,列表模式,屏蔽模式
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-12-2 13:25:25 | 显示全部楼层
ljz1987cj 发表于 2016-12-1 17:15
这个不应该吧 ,id越小优先级越高啊 是不是相同数据帧类型哦?

数据类型相同的 就是一个ID是4321 一个是1234 不知道为什么总是先打印出来4321 后打印1234
回复

使用道具 举报

5

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2016-10-27
在线时间
76 小时
发表于 2016-12-5 12:00:58 | 显示全部楼层
lyz864512 发表于 2016-12-2 13:25
数据类型相同的 就是一个ID是4321 一个是1234 不知道为什么总是先打印出来4321 后打印1234

那你要检查一下你的驱动了  按理说不同id仲裁的结果肯定是id小的
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-12-5 16:43:03 | 显示全部楼层
ljz1987cj 发表于 2016-12-5 12:00
那你要检查一下你的驱动了  按理说不同id仲裁的结果肯定是id小的

是呀  所以不知怎么解决了
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-12-5
在线时间
4 小时
发表于 2016-12-5 21:34:36 | 显示全部楼层
现在解决了吗我也弄几天了?
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-12-6 09:33:00 | 显示全部楼层
xusijie 发表于 2016-12-5 21:34
现在解决了吗我也弄几天了?

暂时没有  但是有点头绪 正在尝试 加个联系方式1269788605
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-12-5
在线时间
4 小时
发表于 2016-12-6 21:07:40 | 显示全部楼层
lyz864512 发表于 2016-12-6 09:33
暂时没有  但是有点头绪 正在尝试 加个联系方式1269788605

加你好友,有验证问题
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2016-7-11
在线时间
15 小时
 楼主| 发表于 2016-12-7 10:05:30 | 显示全部楼层
xusijie 发表于 2016-12-6 21:07
加你好友,有验证问题

我加你了
回复

使用道具 举报

14

主题

72

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
480
金钱
480
注册时间
2016-4-5
在线时间
148 小时
发表于 2016-12-7 10:11:20 | 显示全部楼层
你想接受多个ID可以多定义一些滤波器啊,原子的例程里只有滤波器0,你再加上滤波器1滤波器2不就行了?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 02:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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