论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
程序人生
›
CAN总线简介
CAN总线简介
徐锦洪
金牌会员
|
2022-10-29 00:20:51
|
显示全部楼层
|
阅读模式
楼主
主题
620
|
帖子
620
|
积分
1860
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CAN信号表示
CAN总线采用不归零码位填充技术,也就是说CAN总线上的信号有两种不同的信号状态,分别是显性的(Dominant)逻辑0和隐形的(recessive)逻辑1,信号每一次传输完后不需要返回到逻辑0(显性)的电平。
显性与隐性电平的解释:
CAN的数据总线有两条,一条是黄色的CAN_High,一条是绿色的CAN_Low。
当没有数据发送时,两条线的电平一样都为2.5V,称为静电平,也就是隐性电平。当有信号发送时,CAN_High的电平升高1V,即3.5V,CAN_Low的电平降低1V,即1.5V。
CAN_H-CAN_L < 0.5V 时候为隐性的,逻辑信号表现为"逻辑1"- 高电平。
CAN_H-CAN_L > 0.9V 时候为显性的,逻辑信号表现为"逻辑0"- 低电平。
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CAN的报文格式
CAN的通信帧分成五种,分别为数据帧、远程帧、错误帧、过载帧、帧间隔。
数据帧根据仲裁段长度不同分为标准帧(2.0A)和扩展帧(2.0B),
帧起始(SOF) + 仲裁场(ID+RTR) + 控制场 (IDE+r0+DLC) + 数据段(DATA) + CRC段(CRC+del) + ACK段(ACK+del ) + 帧结束(EOF)
帧起始:
报文的起始位,由1个显性位组成。总线空闲时,发送节点发送帧起始,其他接收节点同步于该帧起始位。
仲裁场:
由 11位标识符(ID) + 1位远程发送请求位(RTR)组成的。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。
控制场:
由 1个标识符扩展位(IDE) + 1个保留位 (ro) + 4位数据长度(DLC)组成的。标识符扩展位指出是标准帧还是扩展帧。保留位为将来扩展使用。四位的数据长度位用来指明数据场中数据的长度,数据场范围为0~8个字节。
数据段:
由 最高8字节(64bit )组成的,长度取决于控制场的DLC位。
CRC段:
由 15位的CRC校验码 + 1位CRC界定符(del) 组成的。在CRC校验码之后有一个CRC界定符,它为隐性位,主要作用是把CRC校验码与后面的ACK段隔开。
ACK段:
由 确认位(ACK) + 1位ACK界定符(del) 组成的。ACK在发送节点发送时,为隐性位。当接收节点正确接收到报文时,对其用显性位覆盖。DEL界定符同样为隐性位,用于把ACK段与后面的帧结束隔开。
帧结束:
由7个连续的隐形位组成。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CAN的报文规则
1、多路载波侦听,网络上所有节点以多点接入的方式连接在同一根总线上,且发送数据是广播式。网络上各个节点在发送数据前都要检测总线上是否有数据传输:若网络上有数据,暂时不发送数据,待网络空闲时再发;若网络上无数据,立即发送准备好的数据。
2、冲突检测,节点在发送数据时,要不停的检测发送的数据,确定是否与其他节点数据发送冲突,如果有冲突,则保证优先级高的报文先发送。
3、非破坏性仲裁机制,通过ID仲裁,ID数值越小,报文优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。
4、发送低优先级报文的节点退出仲裁后,在下次总线空闲时自动重发报文。
5、高优先级的报文不能中断低优先级报文的发送。
6、报文接收过滤:CAN控制器大多具有根据ID过滤报文的功能,即只接收某些ID的报文。节点对接收到的报文进行过滤:比较消息ID与选择器(Accepter)中和接受过滤相关位是否相同。如果相同,接收;如果不相同,则过滤。
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CAN的错误帧
CAN-bus的错误类型共有5种:CRC错误、格式错误、应答错误、位发送错误、位填充错误。
CRC错误:发送节点计算的CRC校验值与接收到的CRC不同。
格式错误:传输的数据帧格式与任何一种合法的帧格式不符。
应答错误:发送节点在应答阶段没有收到应答信号。
位发送错误:发送节点在发送时发现总线电平与发送电平不同。
位填充错误。通信线缆上传输的信号不符合位填充规则。
当出现5种错误类型之一时,发送或接收节点将发送错误帧。
为防止自身由于某些原因导致无法正常接收的节点一直发送错误帧,干扰其他节点通信,CAN-bus规定了节点的3种状态及其行为
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CAN的过载帧与帧间隔
...
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CAN的同步
...
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
徐锦洪
金牌会员
这个人很懒什么都没写!
楼主热帖
彻底卸载SQL Server
马丽明:选择超融合架构的三个要素 ...
Oracle夺命连环25问,你能坚持第几问? ...
为什么MySQL单表不能超过2000万行? ...
【计算机网络】TCP为什么需要3次握手 ...
学了这么久的高并发编程,连Java中的并 ...
p6 BufferedInputStream 和 BufferedOu ...
Docker学习路线5:在 Docker 中实现数 ...
InnoDB与 MyISAM 的区别
IntelliJ IDEA一站式配置【全】(提高开 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表