问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

TJA1145 CAN总线收发器详解:工作原理与应用指南

创作时间:
作者:
@小白创作中心

TJA1145 CAN总线收发器详解:工作原理与应用指南

引用
CSDN
1.
https://blog.csdn.net/weixin_43653748/article/details/136735897

TJA1145是NXP公司推出的一款高性能CAN收发器,广泛应用于汽车电子和工业控制领域。本文将详细介绍TJA1145的工作原理、休眠唤醒机制以及在CAN总线系统中的应用,帮助读者深入了解这款收发器的特性和使用方法。

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

在汽车电子控制系统中,ECU(电子控制单元)的休眠唤醒机制对于降低功耗和提高系统可靠性至关重要。以下是三种常见的休眠唤醒场景:

  1. 冷启动式休眠唤醒:
  • MCU处于掉电状态;
  • CAN收发器处于供电状态(汽车电瓶供电);
  • 唤醒事件能够被CAN收发器识别;
  • CAN收发器能够根据唤醒源决定是否唤醒MCU,给MCU供电;
  1. CAN休眠唤醒:
  • MCU始终处于正常供电状态;
  • CAN收发器处于供电状态;
  • CAN收发器处于Standby状态;
  • 唤醒事件能够被CAN收发器识别;
  • CAN收发器识别到有效唤醒源后能够产生一个中断唤醒MCU或者MCU周期性地去检查是否存在有效唤醒源;
  1. CAN与MCU休眠唤醒:
  • MCU处于低功耗状态;
  • CAN收发器处于供电状态;
  • CAN收发器处于Standby状态;
  • 唤醒事件能够被CAN收发器识别;
  • CAN收发器识别到有效唤醒源后能够产生一个中断唤醒MCU。

CAN干扰问题

在CAN总线系统中,抗干扰能力是确保通信可靠性的关键因素。TJA1145的抗共模干扰能力通常在-12V至7V之间,超过这个范围可能会导致通信错误。如果共模差超过±36V,可能会烧毁收发器或损坏电路板。为了增强系统的抗干扰能力,可以增加隔离模块,通过隔绝地回流来限制干扰幅度。

在实际应用中,由于CAN总线通常需要传输较长的距离,因此建议采用屏蔽层单点接地的原则。具体来说,应在网络中心附近选择一个干扰最小的点进行屏蔽层接地,以优化系统的电磁兼容性。

CAN收发器TJA1145介绍

TJA1145特点

TJA1145具有以下显著特点:

  • 在Standby与Sleep状态下能保持极低功耗,其中Sleep状态下功耗比Standby状态下更低;
  • 可通过选择性唤醒功能支持高速CAN网络;
  • TJA1145提供接口与3.3V或5V微控制器相连,通过SPI可用来控制CAN收发器以及状态获取;
  • Wake pin的上升沿或下降沿唤醒功能可通过寄存器配置,不使用时应接地。

TJA1145内部供电细节

TJA1145的内部供电机制如下:

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

TJA1145唤醒方式

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内部存在一个系统控制器,包含以下五种运行状态机:

  1. Normal:该模式下TJA1145处于全功能模式,所有功能均可用,可通过MC=111从Standby或Sleep状态切换至Normal状态;
  2. Standby:该模式下TJA1145处于低功耗状态,不能正常收发数据,但INH引脚可以始终保持拉高状态。如果此时寄存器CWE=1,那么会持续监控总线电平状态。如果寄存器CPNC=PNCOK=1,那么就开启了特定帧唤醒,否则就是标准CAN唤醒;
  3. Sleep:该模式下TJA1145处于最低功耗状态,不能正常收发数据,同时INH引脚处于高阻状态,电源供电一般会通过该引脚进行拉低关闭输出。其状态变化存在以下几种可能:
  • 一个有效唤醒源或中断事件(除去SPI故障事件)或SPI指令(SPI通讯速率不能过高)可以唤醒TJA1145从Sleep状态切换至Standby状态;
  • 在Normal或Standby状态下通过发送MC=001便可以进入到Sleep状态,确保至少存在一个唤醒源使能(如CAN唤醒或Wake pin唤醒)且没有pending状态下的唤醒源;
  • 如果VCC或VIO持续一段时间低于某个阈值,那么该低电压事件将会强制让TJA1145进入Sleep状态,与此同时所有的Pending的唤醒源将会被清除,同时特定帧唤醒功能将会被关闭;
  1. Overtemp:该状态是由于TJA1145防止温度过高导致被损坏的一个功能,一旦在Normal状态下温度超出一定阈值就会自动切换至OverTemp保护状态;
  • 在该模式下,CAN收发器将不能正常工作,pin脚始终处于高阻状态,唤醒源将不会被检测,但如果存在Pending的唤醒源,那么RXD引脚就会被拉低;
  • 当温度低于特定阈值时,该状态便会自动切换至Standby状态;
  • 如果Bat电压引脚低于某个特定阈值,则会自动从该状态切换至OFF状态;
  1. Off:在该状态下电压由于低于特定阈值导致供电不足,当Bat首次连接时这是TJA1145的初始状态,只要Bat电压低于某特定阈值,TJA1145将会从任意状态直接切换至Off状态。在Off状态下,CAN pin脚以及INH引脚始终处于高阻状态;
  • 当电压高于某个特定阈值时,TJA1145便会重新启动触发初始化过程,从而经历特定时间后进入Standby状态;
  • Standby状态下INH引脚可以拉高控制MCU各级电源,CAN无法正常收发通信;
  • Normal状态下SPI可正常通信,INH引脚可以拉高,CAN模块的状态取决于CMC寄存器值,仅在Active状态下才能够开启正常通信,且仅在CMC寄存器=01/10/11下才能够正常工作;
  • Sleep状态下INH引脚处于高阻状态,此时MCU各级电源可关闭,CAN始终处于Offline状态,无法正常收发通信;
  • 在Off状态与Overtemp状态下SPI都无法正常通信,在Sleep状态仅在VIO供电正常的情况下才可以通信,且通信速率不能太高;
  • 仅在Standby与Sleep状态下才检测唤醒事件,即仅在CAN处于Offline模式下才能够开启唤醒事件的检测。

内部CAN Mode两种类型

TJA1145内部集成的CAN收发器存在四种状态:Active、Listen-Only、Offline、Offline 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 Offline与Offline Bias Mode:

  • 在CAN Offline模式下CAN收发器便会检测CAN总线以查看是否存在唤醒事件,同时CWE=1,CAN H与CAN L始终偏置接地;
  • 在CAN Offline Bias模式下也会检测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(Time Quantum)。

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


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

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

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

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

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

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

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

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

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

同步前下降沿延后2个Tq
同步后PBS1增加2个Tq

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号