can总线、总线仲裁、总线电平、总线控制器

1、can电平与逻辑值:
显性Vh-Vl>0.9 逻辑0
隐性Vh-Vl<0.9 逻辑1
图片来源百度
接线方式1:闭环总线网络
CAN物理层的形式主要分为闭环总线及开环总线网络两种,一个适合于高速通信,一个适合于远距离通信。CAN闭环通信网络是一种遵循ISO11898标准的高速、短距离网络,它的总线最大长度为40m,通讯速度最高为1Mbps,总线的两端各要求有一个
“120欧”的电阻。来作阻抗匹配,以减小回波反射。
为何是120欧姆的:
按照ISO 11898规范,为了加强CAN-bus 通信的可靠性,CAN-bus 总线网络的两个端点一般要加入终端匹配电阻(120Ω)。终端匹配电阻的大小由传输电缆的特性阻抗所决定,例如,双绞线的特性阻抗为120Ω,则总线上的两个端点也应集成120Ω终端电阻。CAN总线在长距离通讯的状况下,120Ω的电阻也未必合适,此时就须要调整。以标准的1.5平方毫米线径的屏蔽双绞线为例:1KM~2KM终端电阻值120Ω;3KM—160Ω;4KM—220Ω;10KM—390Ω。用到CANscope的眼图分析,能够很直接的观察到因导线阻抗、干扰问题而致使的通讯电平幅值不标准,从而排查到总线错误缘由。web

在这里插入图片描述
接线方式2:CAN开环总线网络是遵循ISO11519-2标准的低速、远距离网络,它的最大传输距离为1km,最高通信速率为125kbps,两根总线是独立的、不造成闭环,要求每根总线上各串联有一个“2.2千欧”的电阻网络

在这里插入图片描述

2、数据帧、远程帧、错误帧、过载帧、帧间隔
数据帧:节点向节点发送数据
远程帧:接受节点向具备相同ID的节点请求数据帧
错误帧:检测到错误是向其余节点通知错误
过载帧:通知节点本身还没作好准备
间隔帧:用于将数据帧和远程帧分离的帧
3、can帧格式有两种,一种是标准帧一种是扩展帧
做用:扩展更多的CAN节点
标准帧2^11(ID 标识符)
扩展帧2^29(ID 标识符)
图片来自百度
关于仲裁机构(can总线显性能够覆盖隐性):全部节点共同遵循一个协议(造成一个仲裁机构),也就是在发送数据的同时监控数据的仲裁域,若是发送的是隐性检测到的是显性,本节点自动退出,具体以下:(来源于百度)
仲裁
只要总线空闲,总线上任何节点均可以发送报文,若是有两个或两个以上的节点开始传送报文,那么就会存在总线访问冲突的可能。可是CAN使用了标识符的逐位仲裁方法能够解决这个问题。svg

在这里插入图片描述

在仲裁期间,每个发送器都对发送的电平与被监控的总线电平进行比较。若是电平相同,则这个单元能够继续发送。若是发送的是一"隐性"电平而监视到的是一"显性"电平,那么这个节点失去了仲裁,必须退出发送状态。若是出现不匹配的位不是在仲裁期间则产生错误事件。学习

帧ID越小,优先级越高。因为数据帧的RTR位为显性电平,远程帧为隐性电平,因此帧格式和帧ID相同的状况下,数据帧优先于远程帧;因为标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前1位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。编码

can总线是基于广播的数据传播方式也就是每一个节点都能收到其余节点的数据,可是每一个节点都能设置相应过滤器(具体能够参考STM32相关CAN配置),能够不接收不须要的数据,
can系统中全部ID是不想同的,也能够说全部优先级没有相同的,
可是,can的远程数据请求(Remote Data Request) 经过发送远程帧,须要数据的节点请求另外一节点发送相应的数据。回应节点传送的数据帧与请求数据的远程帧由相同的标识符命名(也就是相同的ID)。同时仲裁会肯定数据帧优先级大于远程帧优先级(确保数据的实时性)xml

关于仲裁机构有一个本身的理解,如今尚未找到资料证明,也就是仲裁机构在仲裁过程当中,数据是同步进行的,一位都不能有差错,这样优先级(ID)才能起到优先级的做用,若是一个节点在发送数据的时候,有其余节点也在发数据,可是不是同步的进行的,这样仲裁机构就会出错,而后应该有相关的协议一直在检测can总线是不是在空闲状态,这种状态确定是检测必定的时间,
如下来源于百度:
判断总线状态能够监测总线电压,简单来讲CAN_H和CAN_L之间的差分电压大的(通常在2V左右)就是显性状态,差分电压小的(理论上是0V)就是隐性,固然容错CAN要复杂不少,就不是这样的。当你一值监测到总线都处于隐性状态(就是两根线电压值差很少)那就说明总线处于空闲状态,若是是显隐交替,那就是总线不处于空闲状态。CAN总线空闲的定义是连续11个位的隐性电平(逻辑为1),通常用于总线关闭时的自动恢复。而CAN的显性电平逻辑为0,一旦有显性就说明确定至少有1个节点在发送波形,那就不是空闲了。CAN的帧间隙是连续3个以上隐性电平。blog

关于can的数据填充连续5个逻辑之后须要填充一个数据,这样会形成可能和真是的数据相互冲突,这种放冲突的机制具体是什么后续查询资料。
位填充的做用是:
避免总线上出现太多的连续相同码时,收发双方失步,由于CAN总线是NRZ编码的。位填充能够确保至少每6个位时间就会产生跳变沿,这样的话才能让接收端的锁相环保持与发送端同步。事件

以上算是一个学习记录,有什么不对的望指出。图片