CAN总线收发器(TJA1145)介绍

汽车ECU休眠唤醒概念:三种场景

1. 冷启动式休眠唤醒:

MCU 处于掉电状态;
CAN 发器处于供电状态 ( 汽车电瓶 供电 )
唤醒事件能够被 CAN 收发器识别;
CAN 收发器能够根据唤醒源决定是否唤醒 MCU ,给到 MCU 供电;

2. CAN休眠唤醒

MCU 始终处于正常供电状态;
CAN 收发器处于供电状态;
CAN 收发器处于 Standby 状态;
唤醒事件能够被 CAN 收发器识别;
CAN 收发器识别到有效唤醒源后能够产生一个中断唤醒 MCU 或者 MCU 周期性的去检查是否存在有效唤醒源;

3. CANMCU休眠唤醒

MCU 处于低功耗状态;
CAN 收发器处于供电状态;
CAN 收发器处于 Standby 状态;
唤醒事件能够被 CAN 收发器识别;

CAN收发器识别到有效唤醒源后能够产生一个中断唤醒MCU

CAN干扰问题

一般CAN收发器的抗共模干扰能力是-12~7V,超过这个差值则出现错误,如果共模差超过±36V,烧毁收发器或者电路板。增加隔离模块后,隔绝了地回流,限制了干扰幅度

CAN的应用场合,由于距离一般都较远,所以大部分采用屏蔽层单点接地的原则,在干线上找一点将屏蔽层用导线直接接地,该点应是所受干扰最小的点,同时该点位于网络中心附近

CAN收发器TJA1145介绍:

TJA1145特点:

Standby Sleep 状态下能保持极低功耗,其中 Sleep 状态下功耗比 Standy 状态下更低;
可通过选择性唤醒功能支持高速 CAN 网络;
TJA1145 提供接口与 3.3V 或者 5V 微控制器相连,通过 SPI 可用来控制 CAN 收发器以及状态获取;

Wake pin是上升沿还是下降沿唤醒寄存器可配,不使用时接地

TJA1145内部电细节:

BAT : 该电源用于给 TJA1145 系统状态维护进行供电,只要 BAT 一直有电,那么 TJA1145 相关状态寄存器值就不会丢失 , CAN 接收器由 BAT 供电;
VCC: 该电源一方面作为 5V 电源输入给到 TJA1145 系统模块进行监控是否过压或欠压,另一方面则给到 CAN 总线供电,且 CAN 发送器由 VCC 供电;
VIO: 该电源一方面作为电源输入到 TJA1145 系统模块进行监控是否过压或欠压,另一方面则作为 SPI 通信的电平转换;

TJA1145唤醒方式

1. MCU 满足休眠条件时,通过发送 SPI 相应指令 TJA1145 进入 Sleep 状态
2. TJA1145 进入到 Sleep 状态后, INH 引脚就会拉低,控制 5V 或者 3V 关闭电源输出,间接导致 MCU 整个系统处理掉电状态 ,此时 TJA1145 始终处于供电状态(由于 BAT 始终有电),整个 ECU 成功进入到休眠状态
3. TJA1145 虽然处于 Sleep 状态,属于极低功耗状态, 同步也检测着网络是否存在有效唤醒源
4. TJA1145 发现有效唤醒源之后, 就会自动从 Sleep 状态切换成 Standby 状态 ,在 Standby 状态下 INH 引脚拉高,此时 5V 3V 便会正常输出,从而 MCU 被正常供电,程序开启正常运行

TJA1145的控制过程

TJA1145 Mode的控制

针对TJA1145的控制过程可分为TJA1145 Mode的控制以及内部CAN Mode两种类型。

TJA1145 Mode,在TJA1145内部存在一系统控制器包含如下五种运行状态机:Normal,StandbySleepOvertempOff状态

1.Normal: 该模式下TJA1145处于全功能模式下,所有功能均可用,可通过MC=111Standby或者Sleep状态切换至Normal状态;

2.Standby: 该模式下TJA1145处于低功耗状态,不能够正常收发数据,但是INH引脚可以始终保持拉高状态;如果此时寄存器CWE=1,那么此时会持续监控总线电平状态,如果寄存器CPNC=PNCOK=1,那么就开启了特定帧唤醒,否则就是标准CAN唤醒

3. Sleep: 该模式下TJA1145处于最低功耗状态下,且不能正常收发数据,同时INH引脚处于高阻状态,电源供电一般会通过该引脚进行拉低关闭输出。其状态变化存在如下几种可能

        3.1)一个有效唤醒源或者中断事件(除去SPI故障事件)或者SPI指令(SPI通讯速率不能过高)可以唤醒TJA1145Sleep状态切换至Standby状态

        3.2)在Normal或者Standby状态下通过发送MC=001便可以进入到Sleep状态,确保至少存在一个唤醒源使能(CAN唤醒或者Wake pin唤醒)且没有pending状态下的唤醒源

        3.3)如果VCC或者VIO持续一段事件低于某个阈值,那么该低电压事件将会强制让TJA1145进入到Sleep状态,与此同时所有的Pending的唤醒源将会被清除,同时特定帧唤醒功能将会被关闭;

4. Overtemp该状态是由于TJA1145防止温度过高导致被损坏的一个功能,一旦在Normal状态下温度超出一定阈值就会自动切换至OverTemp保护状态;

        4.1)在该模式下,CAN收发器将不能正常工作,pin脚始终处于高阻状态,唤醒源将不会被检测,但是如果存在Pending的唤醒源,那么RXD引脚就会被拉低

        4.2)当温度低于特定阈值时,那么该状态便会自动切换至Standby状态

        4.3)如果Bat电压引脚低于某个特定阈值,则会自动从该状态切换至OFF状态

5. Off: 在该状态下电压由于低于特定阈值导致供电不足,当Bat首次连接时这是TJA1145的初始状态,只要Bat电压低于某特定阈值,那么TJA1145将会从任意状态直接切换至Off状态。在Off状态下,CAN pin脚以及INH引脚始终处于高阻状态;

当电压高于某个特定阈值时,TJA1145便会重新启动触发初始化过程,从而经历特定时候后进入到Standby状态;

        5.1)Standby状态下INH引脚可以拉高控制MCU各级电源,CAN无法正常收发通信;

        5.2)Normal状态下SPI可正常通信,INH引脚可以拉高,CAN模块的状态取决于CMC寄存器值,仅在Active状态下才能够开启正常通信,且仅在CMC寄存器=01/10/11下才能够正常工作;

        5.3)Sleep状态下INH引脚处于高阻状态,此时MCU各级电源可关闭,CAN始终处于Offline状态,无法正常收发通信;

        5.4)在Off状态与Overtemp状态下SPI都无法正常通信,在Sleep状态仅在VIO供电正常的情况下才可以通信,且通信速率不能太高;

        5.5)仅在StandbySleep状态下才检测唤醒事件,即仅在CAN处于Offline模式下才能够开启唤醒事件的检测;

内部CAN Mode两种类型

TJA1145内部集成的CAN收发器存在四种状态:ActiveListen-OnlyOfflineOffile Bias状态。存在如下两种基本组合:

TJA1145 处于 Normal 状态时, CAN 收发器状态取决于 CMC 寄存器值,如进入 Offline 或者 Active 或者 Listen-only 等;
TJA1145 处于 Standby 或者 Sleep 状态,则 CAN 收发器始终处于 Offline 状态;

CAN Active Mode

CAN 收发器在此模式下能够正常发送或接收数据;
CMC=0x01 时, CAN 收发器处于 Active 状态, VCC 低压检测使能,如果出现 VCC 电压异常,就会直接切换到 CAN Offline 或者 Offline Bias 状态;
CMC=0x10 时, CAN 收发器处于 Active 状态,且 VCC 电压检测被抑制,如果出现 VCC 电压异常,不会影响到 CAN Active 正常切换; ( 实际应用过程中优先统一配置成 CMC=0x10 ,以降低状态不断反复切换 )

CAN Listen-only Mode

该模式下 CAN 发送器被关闭,当 TJA1145 处于 Normal 状态且 CMC=0x11 时, CAN 收发器状态就会处于 Listen-only 状态;
在该模式下如果 TJA1145 处于 Normal 状态且 CMC=0x1 ,同时 VCC 电压低于 90% ,那么就会始终在这个 Listen-Only 状态

CAN OfflineOffline Bias Mode

CAN Offline 模式下 CAN 收发器便会检测 CAN 总线以查看是否存在唤醒事件,同时 CWE=1 CAN H CAN L 始终偏置接地;
CAN Offline Bias Mode 下也会检测 CAN 总线是否存在唤醒事件,只不过 CAN H CAN L 会偏置 2.5V ,当超过一段事件总线没有活动,便会回归至 CAN Offline 模式下;
TJA1145 切换至 Standby 或者 Sleep 状态则会直接切换成此状态;
TJA1145 状态为 Normal CMC=0x0 ,则会将状态切换成 CAN Offline 模式;
TJA1145 状态为 Normal CMC=01 同时 VCC<90%, 则也会将状态切换成 CAN Offline 模式;

CAN Off Mode

TJA1145 状态为 Off 状态或者 Overtemp 状态时;
Bat 电压低于 CAN 接收器某个特定阈值电压时,当 BAT 电压回升至某个特定阈值时,便会进入到 CAN Offline 模式下

CAN总线波特率以及位同步

首先了解一下 CAN 总线系统中的两个时钟: 晶振时钟周期 CAN 时钟周期

晶振时钟周期:是由单片机振荡器的晶振频率决定的,指的是振荡器每振荡一次所消耗的时间长度,也是整个系统中最小的时间单位。

CAN 时钟周期 CAN 时钟是由系统时钟分频而来的时间长度值,实际上就是一个时间份额 Tq

CAN每一位数据位宽都由CAN控制器的N个时钟周期组成,该时钟周期则为最小的时间单位Tq (Time Quantum) NTq被分为四段:同步段(SS)、传播时间段(PTS)、相位缓冲段1PBS1)、相位缓冲段2PBS2,而采样点位置处于PBS1PBS2的交界处。

同步段SS:Synchronization Segment):CAN网络中的所有节点,在接收一位数据时,以此段作为位起始的参考点,进行下降沿的检测,统计下降沿基于SS段的偏移,然后进行位时序的调整,使接收趋于同步(下降沿在理想情况下应出现在SS段)。注意,进行位时序调整的条件是检测到下降沿,若无下降沿则不进行调整

传播时间段PTS:Propagation Time Segment):CAN总线上数据的传输会受到物理延迟,比如发送单元的发送延迟、总线上信号的传播延迟、接收单元的输入延迟等,PTS段就是用来补偿这些因素产生的时间延迟。而PTS段长度至少应为这些因素产生的时间延时的2倍,PTS段长度至少为1Tq

相位缓冲段1PBS1:Phase Buffer Segment 1):若下降沿延后NTq,且延迟不大于同步跳转宽度,使得原本位时序中采样点位置提前NTq,则需要对PBS1段增加NTq数(使采样点位置延后NTq),吸收这段误差。PBS1段长度至少为1Tq

相位缓冲段 2 PBS2:Phase Buffer Segment 2 ):若跳变边沿提前 N Tq , 且不大于同步跳转宽度,使得原本位时序中采样点位置延后 N Tq , 则需要对上一个位时序的 PBS2 段减少 N Tq 数(使采样点位置提前 N Tq ),吸收这段误差。 PBS2 段长度至少为 2 Tq

同步跳跃宽度SJW: reSynchronization Jump Width):SJWPBS1增加或PBS2减少的最大Tq数。只能为1~4Tq

CAN同步的策略:CAN同步是以位为单位,每接收一个下降沿,则进行一次同步。发送单元以约定好的位时序进行数据发送。接收单元根据总线上接收到的下降沿进行位时序同步。

发送节点和接收节点作为互相独立的硬件个体,时钟频率误差、传输路径上的(电缆、驱动器等)相位延迟等都会引起时序偏差。因此接收单元需通过硬同步或者重同步的方法进行位时序调整。

硬同步接收单元在总线空闲状态检测出第一个下降沿时(对应报文的SOF下降沿)进行的同步调整。在检测到SOF的下降沿时,直接将此下降沿的位置认为是SS段,然后按照位时序对信号进行采样,达到同步的效果

重同步只是在总线空闲时检测出下降沿(帧起始)时进行。在接收过程中检测出总线上的下降沿来临时,根据SJW设置值通过加长PBS1段,或缩短PBS2段,以调整同步。但如果发生了超出SJW值的误差时,最大调整量不能超过SJW值。

同步前下降沿延后2Tq

同步后PBS1增加2Tq

  • 29
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值