深入浅出、通俗易懂的讲解CAN bus。

与时俱进,我也开始写博客了。
记忆自己历史的痕迹!
今天,分配到我手下的新来毕业生向我请教can bus问题,他表示canbus很难理解。我将讲解的部分内容放置到网上,也算方便不懂的新手朋友了解了解,当然大神看了,请勿见怪。
第一、can bus的历时、渊源,在这里我不讲述了。网上大把文章了。
第二、为什么要有can bus,它有优点?
can bus由传统的mod bus改版而来的,但跟mobus又不一样。
can bus 要求是 两条通信线;两根线都是通信线;并且通讯线没有TX/RX之分。只有两根线组合在一起,才是一条总线。既是TX线,也是RX线。
canbus必须采用双绞线(一般双绞线要求是20mm绞距)。如下图。
在这里插入图片描述
上面这要绞线有什么好处呢?为了减少外部电磁场对信息内部电平的干扰。
在这里插入图片描述
为什么在双线交互缠绕时,会减少外部干扰呢?上图中,电磁场不也是对两个信息线各自有干扰吗?
在讲到,必须要回转头跟大家讲讲can bus 总线的识别信号了。
我们遇到的大部分电子环境中,都是默认为+5V或者+3V为高电平,代表通信数值1;0V或者-5V为低电平,代表通信数值0。我想大部分有软件或者硬件功底的朋友估计都能轻易理解吧!(如果这句话都理解不了,证明你的技术水平实在太低了,建议你自己去看看的技术书籍)。
一般的串行总线,都有两根信号线(例如,比较好理解的I2C有一根SDA,一根SCL)。 但是can bus不一样了,虽然也有两根总线(can_H和can_L),但是它要两根总线组合在一起,才能区分逻辑信号。
can bus ,它的逻辑0,为两根总线的电压差=2V;它的逻辑1,为两根总线的电压差=0v。如下图,
在这里插入图片描述
当有外部磁场干扰时,因为can-H和can-L是紧密的缠绕在一起,所以干扰脉冲总是有规律的同时作用在两条线上,让传输的逻辑数值不会发生变化。 在这里插入图片描述
因此,看到这里我不由想到,金庸的名著,“他强由他强,清风拂山岗;他横由他横,明月照大江”。不管你外界环境多恶劣,通信信号不管历尽千辛万苦,数值依然保持忠贞不变,可谓惊叹绝伦。这种设定,会让can bus对外界的电磁干扰的抵抗力大大增强,是一个通信技术的突破(由衷

CANBus数据链路层协议采用对等式(Peer to peer)通信方式,即使主机出现故障,系统其余部分仍可运行(当然性能受一定影响)。当一个站点状态改变时,它可广播发送信息到所有站点。 CANBus的信息传输通过报文进行,报文帧有4种类型:数据帧、远程帧、出错帧和超载帧,其中数据帧格式如图8所示。CANBus帧的数据场较短,小于8B,数据长度在控制场中给出。短帧发送一方面降低了报文出错率,同时也有利于减少其他站点的发送延迟时间。帧发送的确认由发送站与接收站共同完成,发送站发出的ACK场包含两个“空闲”位(recessive bit),接收站在收到正确的CRC场后,立即发送一个“占有”位(dominant bit),给发送站一个确认的回答。CANBus还提供很强的错误处理能力,可区分位错误、填充错误、CRC错误、形式错误和应答错误等。 CANBus应用一种面向位型的损伤仲裁方法来解决媒体多路访问带来的冲突问题。其仲裁过程是:当总线空闲时,线路表现为“闲置”电平(recessive level),此时任何站均可发送报文。发送站发出的帧起始字段产生一个“占有”电平(dominant level),标志发送开始。所有站以首先开始发送站的帧起始前沿来同步。若有多个站同时发送,那么在发送的仲裁场进行逐位比较。仲裁场包含标识符ID(标准为llbit),对应其优先级。每个站在发送仲裁场时,将发送位与线路电平比较,若相同则发送;若不同则得知优先级低而退出仲裁, 不再发送。系统响应时间与站点数无关,只取决于安排的优先权。可以看出,这种媒体访问控制方式不像Ethetnet的CSMA/CDCA协议那样会造成数据与信道带宽受损。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值