Can 总线协议

CAN总线协议详解

CAN,全称为Controller Area Network,即控制器局域网络,是一种用于实时应用的串行通讯协议,广泛应用于汽车、工业自动化、航空航天等领域。它是用Bosch公司研发的,并首次使用在奔驰上

一,Can总线图

                                                            图1 Can总线闭环网络

Can总线上有很多节点,其中收发器是TJA1040构成,TJA1040是汽车电子产品中广泛使用的一种高性能CAN收发器,具有高可靠性、低功耗等特点,能够有效地抵抗电磁干扰和静电放电对网络的影响。因此,它在汽车控制系统、车身电子、发动机控制等领域得到了广泛应用。简单地说TJA1040收发器可以把can 发出和接收的信号同过收发器转化变成0,1这种高低电平

二, Can总线上挂载120欧姆电阻的原因

它有助于吸收电信号的反射和回波,从而避免因阻抗不连续或阻抗匹配不良而对传输的信号产生干扰。在CAN总线上,信号的传输是通过差分电压进行的。当总线上的节点发送信号时,这些信号将在总线上进行传播。然而,如果总线上的某个位置的阻抗不连续或阻抗不匹配,信号可能会出现反射和回波,这将对总线的信号传输产生干扰。挂载120欧姆电阻可以有效地吸收这些反射和回波,从而确保信号的稳定传输

挂载120欧姆电阻可以提高CAN总线的抗干扰能力。CAN总线是一种高速通信总线,其传输速率通常在1Mbps以上。在这样的高速传输过程中,总线上任何一个微小的干扰都可能导致通信失败或数据错误。通过在总线的两端挂载120欧姆电阻,可以有效地减少这些干扰的影响,提高总线的抗干扰能力,从而确保通信的稳定性和可靠性。总而言之,挂载120欧姆的电阻可以减小信号的干扰,确保信号的稳定传输。

三,Can信号的高低电平

差分信号是由多组双绞线缠绕而成,差分信号又称为差模信号。

 图2 双绞线作用

  图3 双绞线实物图

与传统的RS232逻辑电平信号有很大的差异(-3~-15V表示逻辑1 ,3~15V表示逻辑0)。Can总线的逻辑1与逻辑0 是用两根差分电压差来表示,当处于逻辑1 ,Can_High 和Can_low的电压小于0.5V时,称为隐形电平;当处于逻辑0,Can_High与Can_low电压差0.9v,称为显性电平。

                                                         图 4 Can 逻辑电平信号图

图5 逻辑电平数值表 

在 CAN 总线中,必须使它处于隐性电平 (逻辑 1) 或显性电平 (逻辑 0) 中的其中一个状态。假如有两个 CAN 通讯节点,在同一时间,一个输出隐性电平,另一个输出显性电平,类似 I2C 总线的“线与”特性将使它处于显性电平状态,(线与就是两个为1才为1 ,有0则0)

四 Can的通信速率与通信方式

Can的通信速率分两个版本,一种是高速的ISO11898,传输速率高属于闭环总线,可达到1Mbps,但速率快带来的是传输距离短,传输距离<=40米;

图6 闭环通信 

另一种的是低速ISO11519,属于开环总线,传输距离长可达到1000米以上,通信速率为10kbps~125kbps的通信标准 。

图7 开环总线

 五,Can的波特率与位同步

1,位时序分解

SS段(同步段)

若通讯节点检测到总线上信号的跳变沿被包含在 SS 段的范围之内,则表示节点与总线的时序是同步的,当节点与总线同步时,采样点采集到的总线电平即可被确定为该位的电平。SS 段的大小固定为 1Tq。它主要用来采集通讯节点是否同步

PTS段(传播段)

补偿网络的物理延时时间。是总线上输入比较器延时和输出驱动器延时总和的两倍。PTS 段的大小可以为 1~8Tq。简单地说就是延时

 PBS1 段 (PHASE SEG1 相位段1)

PBS1 译为相位缓冲段,主要用来补偿边沿阶段的误差,它的时间长度在重新同步的时候可以加长。PBS1 段的初始大小可以为 1~8Tq

 PBS2 段 (PHASE SEG2 相位段2)

PBS2 这是另一个相位缓冲段,也是用来补偿边沿阶段误差的,它的时间长度在重新同步时可以缩短。PBS2 段的初始大小可以为 2~8Tq

2,CAN波特率

由于Can的通信是异步半双工通信,每秒可传输的数据位即为波特率,假设1Tq=1us,有19个Tq组成,那么就有19个Tq ,每秒传输的数据位 :1*10^6/19=52631.6(1s=10^6us)

六 ,通信的整个过程

图8 通信整个过程 

  图9 帧的每段含义

帧的种类 

 数据帧和遥控帧有两种格式,分别是标准格式和扩展格式。标准格式有11位标识符,而扩展格式有29位标识符。

主控制寄存器 CAN_MCR

图10 Can主寄存器

 

(1) DBF 调试冻结功能

DBF(Debug freeze) 调试冻结,使用它可设置 CAN 处于工作状态或禁止收发的状态,禁止收发时仍可访问接收 FIFO 中的数据。这两种状态是当 STM32 芯片处于程序调试模式时才使用的,平时使用并不影响。

(2) TTCM 时间触发模式

TTCM(Time triggered communication mode) 时间触发模式,它用于配置 CAN 的时间触发通信模式,在此模式下,CAN 使用它内部定时器产生时间戳,并把它保存在CAN_RDTxR、CAN_TDTxR 寄存器中。内部定时器在每个 CAN 位时间累加,在接收和发送的帧起始位被采样,并生成时间戳。利用它可以实现 ISO 11898-4 CAN 标准的分时同步通信功能。

(3) ABOM 自动离线管理

ABOM (Automatic bus-off management) 自动离线管理,它用于设置是否使用自动离线管理功能。当节点检测到它发送错误或接收错误超过一定值时,会自动进入离线状态,在离线状态中, CAN 不能接收或发送报文。处于离线状态的时候,可以软件控制恢复或者直接使用这个自动离线管理功能,它会在适当的时候自动恢复。

(4) AWUM 自动唤醒

AWUM (Automatic bus-off management),自动唤醒功能,CAN 外设可以使用软件进入低功耗的睡眠模式,如果使能了这个自动唤醒功能,当 CAN 检测到总线活动的时候,会自动唤醒。

(5) NART 自动重传

NART(No automatic retransmission) 报文自动重传功能,设置这个功能后,当报文发送失败时会自动重传至成功为止。若不使用这个功能,无论发送结果如何,消息只发送一次。

(6) RFLM 锁定模式

RFLM(Receive FIFO locked mode)FIFO 锁定模式,该功能用于锁定接收 FIFO 。锁定后,当接收 FIFO 溢出时,会丢弃下一个接收的报文。若不锁定,则下一个接收到的报文会覆盖原报文。

(7) TXFP 报文发送优先级的判定方法

TXFP(Transmit FIFO priority) 报文发送优先级的判定方法,当 CAN 外设的发送邮箱中有多个待发送报文时,本功能可以控制它是根据报文的 ID 优先级还是报文存进邮箱的顺序来发送。

模式的选择

 位31 SILM模式(Slient mode):静默模式

 0:正常工作

1:静默模式

  • 正常模式

正常模式下就是Can节点发送和接收数据

  • 静默模式

当逻辑1的时候可以发送数据到总线(也就是可以对外传输数据),0的时候不能发送数据;但是它都能接收数据,输入端只能接收输出端的内容

位30 LBKM(Loop back mode):回环模式

0:禁止环回模式

1:使能环回模式

  •  回环模式

使用回环模式可以自检,接收不到总线的数据,但能发送数据到总线上

  • 回环静默模式

回环静默模式=回环+静默,只能发送1的数据到总线上,接收不了总线上的数据,输入端只能接收到发送端的内容。

以上说的各个模式,是不需要修改硬件接线的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值