归纳总结:
首先,在Can网络中,每个ECU相当于一个Can的网络节点,如果ECU有多个核,那就可能存在多个节点。Can通信是基于高低电平两条线传输数据,如果节点在这组高低电平线上,就归属于这个网络。在一个Can网络中的所有节点通信速度是相同的,不同网络通信速度可以不同。在一组Can网络中,各个节点通过Can报文进行通信,首先,Can报文是通过广播的形式在总线上传输到各个节点,这帧传输的数据包含了源地址的节点地址,通过解析Can报文的ID字段获取。也就是说所有节点都是通过分析接收和发送的报文,来判断自己和其他ECU在网络中的地址,可以联想到手机的电话通讯,我拨打号码给我的朋友,我知道我要拨打的号码,肯定是我的朋友,我的朋友看见打过来的电话号码可以确定是我打过去的,但是我们互不知道我们现在的地理位置。
第二,在广播的条件下,各个ECU节点都会收到这帧报文,但是ECU在内部通过寄存器配置Can Controller的MailBox(MessageRAM),会确定哪些Can报文可以通过各个ECU控制器的MailBox的筛选机制(Filter),也就是说,虽然源节点广播了报文到所有节点,但是因为其他ECU都配有筛选机制,导致其他节点只会回收自己想要的报文,其他报文都会拒掉,比较类似与手机中的黑白名单。
第三,如果在一个原本稳定的Can网络中,新加入一个Can节点,一般情况下,只要新节点ID与网络中的其他节点不冲突,就可以正常加入,但考虑到网络安全,比如某个黑客把自己伪装成给车辆转向发送信号的节点,并且把原本应该给车辆转向发送信号的节点给破坏了,那么此刻,黑客就接管了车辆的安全驾驶。所以可以通过Can Transceiver TJA1145,对收到其他节点加入请求后,实施节点身份合法性验证,消息过滤和异常检测。
什么是CAN的网络节点
网络节点是指连接到CAN总线上的设备或模块,每个网络节点都具有唯一的标识符,称为节点ID,用于在CAN总线上进行通信和识别。在一个MCU 中,CAN通道的数量决定了它支持的CAN节点数量。每个CAN通道相当于一个独立的CAN控制器,可以与一个CAN节点进行通信。
各个单元通过 CAN 总线连接在一起,每个单元都是独立的 CAN 节点。同一个 CAN 网络中所有单元的通信速度必须一致,不同的网络之间通信速度可以不同。
可以根据DBC来定义查看。
以ADCU为例,域控作为主节点,一般外部的像雷达,camera的数据都是向域控发送的,0x26节点向0x40节点发送报文。
MCU如何检测和识别CAN网络中有哪些节点?
在CAN网络中,每个节点都可以发送和接收消息,但是并没有一个直接的方法让MCU知道网络中有哪些节点。这是因为CAN网络是一种多主机系统,每个节点都可以同时发送和接收数据。
有一些间接的方法可以帮助MCU了解网络中的节点:
通过消息交换:如果一个节点在网络上发送了消息,那么其他的节点就可以通过接收这个消息来知道发送节点的存在。这种方法需要节点定期发送消息,或者在加入网络时发送一条特殊的消息。
通过网络管理:在某些CAN网络中,可能会有一个网络管理协议,这个协议可以用来发现和监控网络中的节点。例如,AUTOSAR CAN网络管理就是一种无中心式的网络管理,网络中的每个节点都依赖于自己和别人的网络管理报文(NM PDU)来实现通信的睡眠和唤醒。
通过错误管理:当网络中的一个节点出现错误时,它会发送一个错误标志。其他节点可以通过接收这个错误标志来知道出错节点的存在
MCU可以通过监听CAN总线上的报文来检测网络中的活动节点。当其他节点发送报文时,MCU可以接收到报文并解析其中的节点ID。根据CAN 2.0A和CAN 2.0B标准,CAN网络支持最多 1 至 2047 个节点。对于CAN 2.0A,节点ID为 0 至 127。对于CAN 2.0B,节点ID为 0 至 2047。
发送节点探测报文:MCU可以发送特定的节点探测报文来主动探测网络中的其他节点。探测报文可以包含特定的节点ID或标识符,其他节点可以对这些报文进行回应。通过接收到的回应报文,MCU可以确定哪些节点是活动的。
通过读取CAN消息中的节点ID字段,您可以确定消息来自哪个节点。
对于11位标识符(CAN 2.0A),前5位通常用于设备类型和网络地址,后6位用于节点ID。
对于29位标识符(CAN 2.0B),前11位通常用于设备类型和网络地址,后18位用于节点ID。通过解析标识符字段的后18位,您可以确定CAN消息是来自哪个节点。
广播的can报文,可以发到所有的can网络节点,但是通过can控制器的MailBox机制筛选出想要的报文。除此之外,Can_Trcv可以用于过滤特定类型的报文,配置为仅接收特定标识符的CAN报文。
广播类型的总线意味着所有节点都可以侦听到所有传输的报文,无法将报文一对一发送给指定节点。所有节点都将始终捕获所有报文。但是,CAN硬件能够提供本地过滤功能,让每个节点对报文有选择性地做出响应。
CAN的筛选机制:
消息 RAM 实现了过滤器、接收 FIFO、接收 buffer、 发送事件 FIFO 和发送 buffer。
通过配置寄存器,确定接收过滤器用于定义节点接收哪些报文,过滤器的定义是通过设置报文标识符(ID)参数来实现的还有屏蔽寄存器(Mask Registers),可以与AUTOSAR中的Basic Can一起用。
如何确保网络中的节点能够正确地加入和离开网络?
节点插入CAN网络的过程:
加入网络:节点会发送加入网络的请求或广播消息,通知其他节点它的存在并请求加入网络。节点的加入请求可能会包含节点ID和其他必要的信息。
网络确认:其他节点收到加入请求后,会验证节点的身份和合法性。如果节点ID与网络中的其他节点不冲突,并且节点满足网络的要求和策略,则可以接受该节点的加入请求。
网络配置:一旦节点成功加入CAN网络,它可能会接收到网络的配置信息,包括通信参数(如波特率)和过滤器设置等。节点需要根据配置信息进行相应的参数设置。
节点拔出CAN网络的过程:
离开网络:节点发送离开网络的通知或广播消息,通知其他节点它即将离开网络。该消息可能包含节点ID或其他标识。
网络确认:其他节点收到离开通知后,会从网络中移除该节点的信息。其他节点可能会相应地调整网络配置和拓扑结构。
本文来源于网络,原文链接:https://blog.csdn.net/xiandang8023/article/details/137838100
End
「汽车电子嵌入式在CSDN上同步推出AUTOSAR精进之路专栏,本专栏每个模块完全按实际项目中开发及维护过程来详细介绍。模块核心概念介绍、实际需求描述、实际工程配置、特殊需求介绍及背后原理、实际工程使用经验总结。目的是让读者看完每一个章节后能理解原理后根据需求完成一个模块的配置或者解决一个问题。」
点击文章最后左下角的阅读原文可以获取更多信息
或者复制如下链接到浏览器获取更多信息
https://blog.csdn.net/qq_36056498/article/details/132125693
文末福利
2.为便于技术交流,创建了汽车电子嵌入式技术交流群,可尽情探讨AP,CP,DDS,SOME/IP等前沿热点话题,后台回复“加群”即可加入;
注:本文引用了一些第三方工具和文档,若有侵权,请联系作者删除!
推荐阅读
汽车电子嵌入式精彩文章汇总第一期:20210530-20230703
汽车电子嵌入式精彩文章汇总第2期
TC3xx芯片GTM模块-CMU,CCM,TBU详解
TC3xx芯片GTM模块-TOM详解
AUTOSAR架构下PWM模块配置实践
TC3xx芯片GTM模块-TIM详解
AUTOSAR架构下ICU模块配置实践
TC3xx芯片电源管理系统PMS详解
TC3xx DMA模块详解
TC3xx芯片SMU模块详解
如何监控TC3xx芯片PFlash的ECC错误
TC3xx芯片RAM的错误检测
TC3xx芯片的总线内存保护
AUTOSAR架构下MCAL Modules软件分区问题分析
AUTOSAR架构下内部看门狗复位检测
嵌入式基础:环形缓冲区ring buffer
编译链接专题第1篇-make和makefile介绍
编译链接专题第2篇-初识makefile结构
编译链接专题第3篇-初识makefile中的伪目标
编译链接专题第4篇-变量和变量的不同赋值方式
编译链接专题第5篇-预定义变量的使用
编译链接专题第6篇-变量的高级主题(上)
编译链接专题第7篇-变量的高级主题(下)
编译链接专题第8篇-条件判断语句
End
欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!
汽车电子嵌入式
微信扫描二维码,关注我的公众号