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

CAN通信点对点和广播方式学习

[复制链接]
mylovemcu 发布时间:2019-10-16 09:32
最近在使用CAN通信的时候需要用到广播的方式,以前都是点对点的通信方式,两者有一些差别,现将使用方式分享一下。
/ [0 B$ V% v1 k8 f- F应用场景:
( H9 O- p2 P* b: P现有5台设备,每台设备都有一个ID,点对点通信就是任意两台设备之间都可以通信,实现数据交换,广播方式就是任意一台设备发送数据,所有设备都可以接收到数据。
4 l+ U! d/ h0 @5 O/ `) j在点对点通信中,由于每个ID都不相同,任意一台向其中一个ID发送数据时,其他ID不相同的设备直接过滤掉了数据,所以不是该ID的设备是收不到数据的,那么在点对点通信的同时还想发送广播信息怎么办呢?
! l; Q) k* n- N% Y6 Q9 ^' vCAN通信对ID的过滤主要是设置过滤器,STM32的CAN过滤器有两种方式,一种是屏蔽位模式,一种是标识符列表模式。在屏蔽位模式下,标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位,应该按照“必须匹配”或“不用关心”处理。广播通信采用屏蔽位模式,每一个设备使用屏蔽位其中的一位作为当前ID,并且只对其中一位进行必须匹配,其他为不用关心,这样就可以实现点对点通信和广播通信。当需要点对点通信时直接发送设备ID即可,当需要广播通信时,其中一台设备要向其余几台设备同时发送,那么将其余几台的ID相或以后作为目标ID,直接发送即可。
; L+ M; k2 Q, J, J+ H3 X配置方式如下:  ^! w- c" J! K0 e4 v
        CAN_FilterInitStructure.CAN_FilterNumber         = 0;                              //选择CAN过滤器0. X7 f& f3 Z" g
        CAN_FilterInitStructure.CAN_FilterMode           = CAN_FilterMode_IdMask;          //初始化为屏蔽模式
9 |: @/ J0 i) q4 i8 h2 f/ C        CAN_FilterInitStructure.CAN_FilterScale          = CAN_FilterScale_32bit;          //选择过滤器为32位3 ?, W) \7 ]; _

+ I" X/ P+ m2 m3 V! ?$ ]9 t  H9 w6 k
$ M5 _6 `$ g# Y. u/ t: O) h        CAN_FilterInitStructure.CAN_FilterIdHigh         = 0;                              //高16位 置02 z+ o; Q  E2 L9 K; t
        CAN_FilterInitStructure.CAN_FilterIdLow          = ID << 3;                   //过滤器标识号低16位: \& v6 s) v' [
        CAN_FilterInitStructure.CAN_FilterMaskIdHigh     = 0;                              //高16位不关心
2 h9 ~0 t0 C( V$ O( v% q        CAN_FilterInitStructure.CAN_FilterMaskIdLow      = ID << 3;               //只对当前为必须关心9 N- \/ _$ M9 i4 S* Q7 g( x

8 S- B, t% q% d* Q
3 }6 ]$ L# Z4 ?9 ~该方法中ID的范围不是任意设置的,必须按位设置,设计中选用其中6位作为ID滤波,也即网络中最多6台设备,如果想增加更多设备,就需要增加更多ID位,最多不超过32位,这是最大劣势。
6 E/ e; v# y& ?+ P+ \& q4 B4 N  H: X& g, J5 Q$ r1 _
现在有5台设备,各设备ID分别是1<<0 , 1<<1 , 1<<2 , 1<<3, 1<<4, 1<<5。3 Z. [9 e3 w+ T$ g
广播地址是0x1f。: T. y6 }! w7 |, u+ t' Y) r
将以地址0x1f发送数据时,5台设备将同时接收到数据。
' i) X) c( }( `( N6 x' i1 \3 p6 ~6 W" v0 t  f

6 V8 B* l+ z3 F- g3 ?6 m- K
  M4 m; }3 n, G1 ^: p$ a! b$ s5 D& y+ U; C7 P: i) ^

5 ?; \4 M* g' r6 ?4 c3 I- X
, _9 G. U, n2 h- B8 F$ x

can入门教程.pdf

下载

1.82 MB, 下载次数: 40

赞 收藏 评论3 发布时间:2019-10-16 09:32

举报

3个回答
STM1024 回答时间:2019-10-16 17:30:05
这个只是报文过滤吧,对于CAN通讯,不存在真正意义上的点对点通讯吧
mylovemcu 回答时间:2019-10-17 08:10:34
stm1024 发表于 2019-10-16 17:30
- G+ x( ^6 l/ I0 H0 ~0 t& S* m这个只是报文过滤吧,对于CAN通讯,不存在真正意义上的点对点通讯吧
! }+ K+ ~) d2 X. ~4 S$ R1 Z
可以这么说
八五哥 回答时间:2023-5-12 10:28:20

下载错了。还合计你这个是个人所写文章呢

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版