1、收发器的主要功能
(1)CAN通讯(即报文收发)
MCU要CAN通讯:收发器模式切换至正常通讯模式(Normal),正常通讯模式收发器能收能发。
MCU不要CAN通讯:把收发器切换至其它模式,其它模式收发器收发报文受限。
(2)MCU的休眠唤醒(即远程唤醒MCU)
MCU唤醒有两种情况:主动唤醒、被动唤醒。
MCU的主动唤醒(由SBC实现,不通过CAN收发器):通过使能SBC的ENA Pin脚,SBC使能V_LDO_Com和V_LDO_uC电压输出,给Trcv和uC等外围器件提供工作电压,使MCU唤醒。
MCU的被动唤醒(需要用到CAN收发器,且需要收发器有INH PIN):
收发器有INH Pin:这意味着此类型的Lin/CAN Trcv可以唤醒uC。(因为INH的使能会激活SBC给uC输出工作电压,进而激活uC,之后uC控制Trcv的工作状态。)硬件或SBC可通过检测INH脚为高电平时才给MCU供电,为低电平时则切断MCU的供电,即可实现MCU的休眠。
MCU休眠时,当Trcv收到特定的唤醒时序或者指定的报文时,Trcv将INH Pin拉高,进而拉高SBC的WAK Pin,使能SBC,之后,SBC给MCU、Trcv等器件输出工作电压,这样,MCU被唤醒。
MCU唤醒的本质就是给MCU供电(供工作电压)。MCU唤醒不等于MCU网络唤醒,MCU唤醒是网络唤醒的前提。
被动唤醒MCU网络:
分为无硬件过滤的收发器、有硬件过滤的收发器。具体见我写的【网络管理-总结】。
1、有硬件过滤的收发器:特定报文才能拉高Trcv的INH Pin,直接唤醒MCU和MCU网络(MCU不必再检查唤醒源)。此时1帧特定报文就能唤醒网络。
2、无硬件过滤的收发器:一帧任意报文(包括错误帧)唤醒ECU,ECU唤醒后执行软件检查序列,这时候再来第二帧报文ECU会检查报文是否为有效唤醒源,若有效则唤醒网络(如AUTOSAR网络管理的有效唤醒源是NM报文)。若无效则ECU走下电流程。总共至少需要2帧报文来实现网络唤醒,1帧用于唤醒ECU,1帧用于唤醒后的ECU检查唤醒源的有效性。
2、收发器(差分电平<->逻辑值)
把CAN高和CAN低两根线的(电压)差分数据转换成如0、1、0、1这样的逻辑数据。
3、收发器常用引脚
以TJA1145为例:
①收发器有INH Pin:
这意味着此类型的Lin/CAN Trcv可以唤醒uC。(因为INH的使能会激活SBC给uC输出工作电压,进而激活uC,之后uC控制Trcv的工作状态——uC通过控Trcv的STB PIN。)即支持远程唤醒ECU。硬件或SBC可通过检测INH脚为高电平时才给MCU供电,为低电平时则切断MCU的供电,即可实现MCU的休眠。
②收发器的STB PIN(控制收发器的工作模式):
STB全称:Standby mode control input。STB引脚的状态决定了收发器是否从待机模式切换到正常操作模式。MCU控制收发器的STB PIN拉高/拉低,进而控制收发器的工作模式。
STB PIN拉低:收发器进入Normal正常通信模式。能正常收发报文。
STB PIN拉高:收发器进入Standby待机模式。用于MCU休眠唤醒。
TJA1145内部三大供电细节详解:
- BAT: 该电源用于给TJA1145系统状态维护进行供电,只要BAT一直有点,那么TJA1145相关状态寄存器值就不会丢失,且CAN接收器由BAT供电;
- VCC: 该电源一方面作为5V电源输入给到TJA1145系统模块进行监控是否过压或欠压,另一方面则给到CAN总线供电,且CAN发送器由VCC供电;
- VIO: 该电源一方面作为电源输入到TJA1145系统模块进行监控是否过压或欠压,另一方面则作为SPI通信的电平转换;
4、CAN(FD)收发器供应商
NXP是领头羊,也是其他做CAN收发器的芯片厂家模仿的对象,NXP是这个领域的第一。
供应商 | 国家 | CAN收发器型号名 |
恩智浦(NXP) | 荷兰 | TJAxxx |
德州仪器(TI) | 美国 | TCANxxx |
英飞凌(Infenion) | 德国 | TLExxx |
安森美(ON) | 美国 | NCVxxx |
4.1 恩智浦收发器(NXP)
① 基础CAN(FD)收发器Basic CAN(FD)(不支持报文唤醒,很少用)
1、 一个控制引脚用来切换Normal mode(能收能发)和Silent mode(能收不发)(MCU来控收发器的这个引脚),不带有低功耗模式。
Normal mode正常模式(能收能发):CAN报文能收能发。
Silent mode只听模式(只收不发):CAN驱动器被禁用,接收器正常,可继续将CANH和CANL定的差分信号转换为RXD段子上的数字输出。只听模式电流为mA级别。
理解:Normal正常通信时用此模式,进入busoff后用Slient模式。
2、根据CANH和CANL的耐压不同分为两类:
1)支持12V系统的,用在乘用车上,耐压<42V;
2)12V和24V系统都支持的,也可以用在商用车上,耐压58V
3、适用场景
用在不需要待机休眠(理解:因为不带低功耗模式)的产品上,如发动机ECU,变速箱TCU,底盘控制模块CCM,电子助力转向EPS等。
4、主要型号
1)12V系统:
TJA1050:老产品,性能偏弱且不支持CAN FD,不推荐使用。
TJA1441、TJA1057:有一个子系列TJR1441达到AEC-Q100 Grade 0等级,支持150℃的环境温度。
2)12/24V系统:
TJA1051。
乘用车:推荐换成TJA1057,因为EMC性能做过优化,EMC要求不是特别高的情况下,可以省去共模电感。
② Standby mode CAN(FD) (支持任意帧唤醒,如TJA1042,收发器有INH引脚)
1、相比基础版本增加了standby的低功耗模式,此模式的功耗在10uA左右,如下图所示(以TJA1042为例)。同时CAN收发器处在standby模式时会开启CAN总线唤醒功能,当CAN总线上有数据时,RXD会产生从高到低的跳变沿(若检测到总线有CAN报文(任意报文)后,收发器的RXD引脚会从高电平拉低至低电平,MCU可通过检测收发器的RXD引脚低电平作为报文唤醒信号),此跳变沿可以被MCU用来做唤醒源。
Standby支持总线唤醒的低功耗模式:
通过检测RXD引脚得知是否CAN总线出现CAN报文,进而用于实现MCU的报文唤醒检测。(若检测到总线有CAN报文(任意报文,若是带PN功能的收发器则不能是任意报文必须是满足过滤条件的报文才行)后,收发器的RXD引脚会从高电平拉低至低电平,MCU可通过检测收发器的RXD引脚低电平作为报文唤醒信号)
RXD引脚拉低不会一直保持为低电平(如总线只发了一帧报文,RXD引脚拉低后会立即又变回高),因此MCU不能采用轮询检测的方式读取低电平作为唤醒信号,必须使用中断捕获RXD引脚下降沿才能确保MCU能立即捕获到唤醒信号。
2、增加了一个split引脚(TJA1040和TJA1042),主要是解决CAN总线信号对称性不好的情况。如果是终端节点,建议120Ω的终端电阻分成两个60Ω串联,并接上split引脚,如果不是终端节点,换成两个1.3kΩ的电阻串联,或者使用车厂指定的值。如下是TJA1042T的推荐电路图。TJA1044因为内部做了优化,不在需要split引脚。
split引脚:解决CAN总线信号对称性不好的问题。
3、适用场景
一般用在KL30(长电)和KL15同时供电的产品上,如仪表,中控,导航等产品
(理解:因为带Standby模式支持总线唤醒的低功耗模式)
4、主要型号
1)12V系统:
TJA1040:不推荐新项目使用,
TJA1442:新产品,子系列TJR1442支持150℃环境温度。
TJA1044。
2)12/24V系统:
TJA1049:很少有客户使用,
TJA1042:目前市场上用的最多CAN收发器之一,如果目标应用是12V系统的,建议切换到TJA1044,尤其是TJA1044G版本,可以裸板过class 5。TJA1042_高速CAN收发器 | NXP 半导体
TJA1042和TJA1049全系列支持最高5Mbit/s的CAN FD。
例子:基础版CAN收发器:TJA1059(TJA1049)收发器
TJA1059其实就是两个TJA1049合在了一块。
收发器模式及各模式切换方法
收发器的STB PIN(控制收发器的工作模式):
STB全称:Standby mode control input。STB引脚的状态决定了收发器是否从待机模式切换到正常操作模式。MCU控制收发器的STB PIN拉高/拉低,进而控制收发器的工作模式。
STB PIN拉低:收发器进入Normal正常通信模式。能正常收发报文。
STB PIN拉高:收发器进入Standby待机模式。用于MCU休眠唤醒。
开启通信时MCU就把收发器切到Normal模式。关闭通信时MCU就把收发器切到Standby模式。
Normal模式(正常通信模式)
功能:只有该模式CAN报文能收能发。要正常收发报文就需要切到这个模式。
模式切换方法:把收发器的STB脚拉低就切换到Normal模式了
Standby模式(待机模式,MCU的远程唤醒)
功能:①该模式下CAN报文不能收不能发。②收发器处于Standby模式下,在总线上检测到报文,收发器的INH PIN使能SBC,进而SBC给MCU供工作电压,唤醒MCU,MCU唤醒后通过拉低STB引脚将收发器切换为Normal模式,此时收发器能正常收发报文。
模式切换方法:把收发器的STB脚拉高就切换到Standby模式了
据我目前所知,TJA1049只能用来做唤醒检测,无法用于作为MCU进入休眠低功耗检测的条件。因为TJA1049只有Normal、Standby两种模式。
唤醒检测过程(硬件设计无SBC的情况,收发器收到报文直接唤醒MCU):
TJA1049处于Standby模式。此时TJA1049若检测到总线有CAN报文(任意报文)后,TJA1049的RXD引脚会从高电平拉低至低电平,MCU可通过检测TJA1049的RXD引脚低电平作为报文唤醒信号。
但由于TJA1049处于Standby模式检测到总线有CAN报文后,RXD引脚拉低不会一直保持为低电平(如总线只发了一帧报文,RXD引脚拉低后会立即又变回高),因此MCU不能采用轮询检测的方式读取低电平作为唤醒信号,必须使用中断捕获RXD引脚下降沿才能确保MCU能立即捕获到唤醒信号。
③ Sleep mode CAN(FD)(支持功耗更低+本地唤醒+远程唤醒,如TJA1043)
1、Standby模式下的功耗已经很低了,如果车厂要求功耗做的更低,或者要求支持本地唤醒,此时就需要使用带sleep模式,INH引脚和wake引脚的收发器了。
INH引脚:用于使能或禁用TJA1042的CAN总线通信功能。当INH引脚处于高电平(通常为Vcc)时,TJA1042处于工作模式,可以进行CAN通信;当INH引脚处于低电平(通常为地)时,TJA1042进入禁用模式,停止CAN通信。通过控制INH引脚的电平状态,可以方便地控制TJA1042的工作状态。
以TJA1043为例,如下面应用电路图,
当MCU配置TJA1043进入sleep模式之后:
INH引脚拉低,LDO关闭输出,MCU关闭不消耗电流。
当CAN总线有唤醒信号,或者wake引脚有跳变沿:
INH引脚被拉高,LDO打开输出,MCU启动并配置TJA1043进入Normal模式接收CAN报文。
关于WAKE PIN
报文唤醒和WAKE引脚是分开的两个功能,两者没关系。
Wake引脚可以接一根唤醒信号线实现唤醒功能,当收发器在Standby或Sleep时,Wake脚检测到电平变化时,然后RXD和ERR会拉低。但是一般情况下我们用不上这个功能,我们用的是CANH和CANL检测到CAN报文时RXD和ERR会拉低这个功能。
而所谓的Wakeflag,它的意思是RXD和ERR拉低表示置起了Wakeflag。然后进入Normal状态后,会把RXD和ERR拉回高,即清掉了Wakeflag。
3、适用场景
要求功耗做的更低,或者要求支持本地唤醒。
4、主要型号
1)12V系统:
TJA1041(A):TJA1041产品较老,
TJA1443:推荐使用新产品,同样也有Ta=150℃的TJR1443A。
2)24V系统:
TJA1043(A):推荐使用TJA1043A,价格更好。
例子:升级版CAN收发器:TJA1043收发器
收发器模式及各个模式切换方法
TJA1043收发器有5个模式:Standby、Normal、Listen-Only、Go-To-Sleep、Sleep。
由于模式很多,所以光有STB PIN不行,还需要有EN引脚。
(1)Normal模式
功能:只有该模式CAN报文能收能发。要正常收发报文就需要切到这个模式。
模式切换方法:STB拉高、EN拉高
(2)Standby模式(唤醒监测)
功能:①该模式下CAN报文不能收不能发。②该模式下可通过检测ERR或RXD引脚得知是否CAN总线出现CAN报文,进而用于实现MCU的报文唤醒检测
模式切换方法:STB拉低、EN拉低
(3)Listen-Only模式
不管,一般不使用该模式。
(4)Go-To-Sleep模式和Sleep模式(休眠)
功能:①该模式下CAN报文不能收不能发。②该模式下可通过判断INH引脚进行下电休眠条件检测。③该模式下可通过检测ERR或RXD引脚得知是否CAN总线出现CAN报文,进而用于实现MCU的报文唤醒检测,手册说明如下图所示:
模式切换方法:把Go-To-Sleep模式和Sleep模式写一块的原因,是因为Sleep模式是没法直接通过控制STB和EN电平的方法进入的,而是通过控制STB和EN电平使收发器进入Go-To-Sleep模式后,等待20us-50us后收发器自行进入Sleep模式。
CAN(FD)收发器选型及替换指南(一)_can收发器-CSDN博客
Autosar CAN开发12(基于CAN收发器的休眠唤醒、CAN收发器模式讲解。详细讲解TJA1059(TJA1049)、TJA1043、TJA1145。)-CSDN博客
TJA1042的INH引脚作用 - CSDN文库
④ Sleep mode CAN(FD) + Partial networking局部网络唤醒(特定报文唤醒,如TJA1145)
1、像T-BOX这类应用,一般对低功耗的要求更严格,如果使用TJA1043这类收发器,一旦被和自己不相关的CAN报文唤醒之后,需要软件进行判断处理,尽快的再次进入休眠模式。此时就对CAN收发器提出了新的功能需求,既局部网络唤醒功能,相关标准为11898-6:2013。NXP支持该功能的收发器为TJA1145,可以通过SPI接口配置唤醒报文的速率,ID和数据,不满足条件的CAN报文无法唤醒TJA1145。
需要提醒的是,TJA1145不支持CAN FD的局部网络唤醒功能,如果TJA1145被用于CAN FD总线中,需要选用TJA1145T/FD and TJA1145TK/FD,其他型号接收到CAN FD的唤醒信号会识别为错误信号。
主要型号如下:目前只有1145支持。
12V系统:暂无
24V系统:TJA1145(A),TJA1145马上停产,建议使用TJA1145A。
例子:升级版CAN收发器:TJA1145(增加PN功能,特定报文才唤醒)
TJA1145只不过是在TJA1043的基础上增加了所谓的Partial Networking功能,这个功能是用来做唤醒检测的。
TJA1145收发器在Standby或Sleep模式的时候不但能监控是否CAN总线出现CAN报文,还能监控CAN报文的ID和DLC,如果CAN报文ID或DLC与配置的不匹配,那就认为没检测到唤醒报文。
TJA1145的模式切换
不再是像TJA1143那样通过改变EN和STB两个引脚电平取控制,而是直接通过SPI发一串数据到收发器,收发器就把模式切换了
TJA1145的唤醒检测
不像TJA1043那样通过读取ERR或RXD引脚的电平去检测唤醒信号了,而也是直接通过SPI发一串数据到收发器,收发器也通过SPI告诉你是否检测到唤醒报文。
⑤低速容错CAN(最高速率只有125kbps)
有些车厂对于一些安全性比较高的场合会使用低速容错CAN总线,要求供应商使用的CAN收发器满足标准11898-3。低速容错CAN和普通CAN不一样,最高速率只有125K bps,且CAN总线断了任意一根之后,仍可以使用另一个线继续通信。低速从错CAN的电平标准如下图(摘自NXP的应用笔记AH0801),和普通CAN的电平标准不一样。
主要型号如下:
12V系统:TJA1054(A),暂未遇到使用的客户。
12V/24V系统:TJA1055,有客户给车厂PSA做的中控项目用到过。
⑥其他NXP的CAN(FD)收发器类型见:
CAN(FD)收发器选型及替换指南(一)_can收发器-CSDN博客
4.2 TI的CAN(FD)收发器介绍(如TCAN开头的...)
a)5V CAN(FD)收发器(用的多)
TI的汽车级5V CAN(FD)收发器大概两种,一种是和NXP做引脚兼容的,一种是增加新特性的
b)3.3V CAN收发器
没怎么遇到使用3.3V CAN总线的车厂,一般现在MCU是3.3V供电的,也会选择带Vio引脚的5V CAN收发器,Vio引脚和MCU来自同一个供电源就可以了
4.3 Infenion的CAN(FD)收发器介绍(如TLE开头的...)
CAN收发器的主要目标是乘用车市场,所以它的CAN收发器基本都是±40V耐压的
他家的CAN SBC用的人很多。
分为带wake-up功能和不带wake-up功能两类收发器:
4.4 ON的CAN(FD)收发器(NCV开头的...)
ON的收发器种类相比NXP和TI不算太多,基本都是和NXP做引脚兼容,命令也比较相似。
基础类:NCV7351,NCV7357
支持Standby:NCV7340,NCV7342,NCV7344,NCV7349
双通道Standby:NCV7441,NCV7446
支持sleep:NCV7341,NCV7343
单线CAN:NCV7356
附录:Partial 网络管理(PN)
CAN收发器对远程唤醒分为三种,对应三种不同的唤醒需要外部的Trcv也是不同的。:
1、不支持唤醒的收发器(TJA1040):
一般不要特殊的IO控制,供电后就可以工作。
2、支持任意帧唤醒的收发器(TJA1043):
需要使用IO控制其状态转换,将其INH相关的引脚在电路设置的时候关联到MCU的唤醒引脚或者SBC的唤醒引脚。在系统进入到休眠前将TJA1043通过IO设置成Trcv进入休眠,然后MCU休眠后,当CAN总线上有任意报文的时候就可以将MCU唤醒。如果使用TJA1043这类收发器,一旦被和自己不相关的CAN报文唤醒之后,需要软件进行判断处理,尽快的再次进入休眠模式。
3、支持特定帧唤醒的收发器(TJA1145):
TJA1145这种支持PN唤醒的Trcv一般需要借助其他的通信总线(SPI等)进行设置,在下电的时候设置唤醒该ECU的特定ID以及特定的Data域,这样在MCU休眠前将特定唤醒报文的信息通过SPI写到TJA1145寄存器中,当MCU休眠后,TJA1145 Trcv检测到配置好的ID和Data就可以将MCU唤醒。