英飞凌最近推出了符合功能安全ASIL-B等级的LED多通道线性恒流源驱动,有许多客户已经投入资源在熟悉该芯片。笔者最近也在学习该芯片,并将学习过程记录下来,分享给大家。
本篇文档是学习笔记的第一篇,主要是对TLD7002-16ES的整体介绍,为后面的软件控制以及OTP烧录等做铺垫。
TLD7002-16ES的features如下:
TLD7002-16ES的引脚分布如下图:
其中,各引脚说明如下:
TLD7002-16ES的功能框图如下:
主要的功能在上面的features已经罗列,这里就不再赘述。
补充说明下OTP:
TLD7002-16ES内部有一块OTP区域(只能写一次),包含了44个寄存器,其中地址靠前的39个用于配置TLD7002-16ES的功能,地址靠后的第40个留给用户放置客制化信息,最后4个存放OTP烧录反馈。同时和前39个OTP寄存器对应的还有存在RAM区域的可变寄存器,上电之后会从对应的OTP寄存器获取配置值。
TLD7002-16ES有两种状态机,分别是指示正常工作和OTP烧录/仿真时的状态切换。
正常工作时的状态机如下图:
OTP烧录或者仿真时的状态机如下图:
GPIN0和GPIN1都可以配置为模拟输入或者数字输入引脚,需要通过OTP进行烧录配置。未进行过OTP烧录的芯片默认GPIN0为数字输入,GPIN1为模拟输入。
当作为数字输入引脚时,有如下几种用途:
当作为模拟输入引脚时,可以用来测量外部器件(如NTC、PTC)的电压,测量的数值会保存在对应的VGPIN0和VPIN1寄存器中。
进行如上功能配置的相关OTP寄存器为OTP_CUST_CFG0
,OTP_CUST_CFG5
,OTP_CUST_CFG6
,详情查看寄存器描述。
器件地址没法通过外部引脚进行配置,只能通过将地址(1-31)写入对应的OTP寄存器(OTP_SLAVE_ID
的高5位)进行配置。没有烧录过的TLD7002-16ES的地址默认为1。
在TLD7002-16ES的OTP烧录阶段,可以使用默认地址0x01或者广播地址0x00和芯片通讯从而进行烧录。
TLD7002-16ES的通道电流一共有64step(6-bit)可配,如下图所示:
用户可以通过对应的OTP寄存器(如OTP_CH_ISET_0
等)写入每个通道对应的默认电流值,同时也是fail-safe状态下的电流值,用户可以后续通过对应的RAM寄存器(如LD_PWM_DAC_CFG0
)进行电流值的修改。
TLD7002-16ES有两种开关模式,分别为Normal switch mode 和Fast switching mode,两种模式下电流上升下降的速度不一样,如下图:
TLD7002-16ES内部有一个PWM发生器,可通过对应的OTP寄存器(OTP_CUST_CFG0
的低4位)去配置PWM频率,范围从100Hz到2KHz,如下图所示:
配置完PWM的频率之后,就需要单独配置每个通道的PWM占空比,正常工作时通过对应的RAM寄存器(LD_PWM_DC_CFG
)进行配置,分辨率为14-bit;fail-safe模式时的PWM占空比通过对应的OTP寄存器(如OTP_PWM_DC_GPIN1_0
等)进行配置,分辨率为8-bit。
TLD7002-16ES还有PWM移相功能,通过对应的OTP寄存器(OTP_PWM_PHASE_EN
,OTP_CUST_CFG0
)进行配置。另外,PWM的移相参数OTP_CUST_CFG0[8:4]
需要在14bit占空比数值LD_PWM_DC_CFG
的bits[9:5]范围内,如下图寄存器所示:
为了降低单一通道输出负载过高的情况,TLD7002-16ES也提供了Power shift和 paralle1 output两种通道方式并联的方式。Power shift需要在对应的OTP寄存器(OTP_CUST_CFG7
,OTP_CUST_CFG8
)进行配置。大概示意图和可进行Power shift并联方式的通道如下所示:
热降额功能可以配合内部的温度传感器或者GPIN0上面的电压进行工作,当达到设定的开始降额温度( T J s t a r t T_{Jstart} TJstart)或者电压( V D E R _ s t a r t V_{DER\_start} VDER_start)时,开始线性地降低电流,直到达到设定的停止降额温度( T J s t o p T_Jstop TJstop)或者电压( V D E R _ s t o p V_{DER\_stop} VDER_stop)。
热降额功能开启时,Power shift功能不可用。
热过载保护的功能可以设置发生热过载事件之后选择直接关闭输出通道或者当温度低于一定值之后打开输出通道。
TLD7002-16ES具备的诊断功能有:
接下来进行详细描述。
VFWD可以是VLED-VOUT(诊断组1)或者VS-VOUT(诊断组0),具体看对应的OTP寄存器的配置(OTP_CUST_CFG4
).如果VFWD用于测量LED负载的正向电压,OTP的配置需要和LED阳极的供电引脚(可以选择VLED或者VS)一致。
如上图所示,VFWD的测量需要在PWM处于高电平时进行。从PWM的上升沿开始,经过 t d i a g _ d l y t_{diag\_dly} tdiag_dly 的时间开始采样,再经过 t d i a g _ o n t_{diag\_on} tdiag_on 的时间可以获得采样结果。其它的注意事项如下:
VGPIN、VLED和VS的测量结果会保存在对应的RAM寄存器中,这几个通道的采样时间的需求一致,如下表:
TLD7002-16ES可以在每个PWM周期采样一次所有通道的输出电压最小值。OUT0和OUT15不做恒流源输出功能时,无法采集VOUT的最小值。
OUT0可以连接到外部DCDC的FB引脚,调节DCDC的输出电压。此功能的开启需要设置对应的OTP寄存器(OTP_CUST_CFG0
的bit11)。
推荐的参考设计如下图:
TLD7002-16ES能够检测到开路故障,需要同时满足以下调节:
关于 V D E N _ t h r e s h o l d V_{DEN\_threshold} VDEN_threshold 和 n d e b o u n c e n_{debounce} ndebounce 的配置,后面章节会有说明。
单颗LED的短路检测依赖于VFWD测量结果,当以下条件成立时,认为TLD7002-16ES发生了短路故障。
警告VFWD_WRN基于VFWD的测量,可以通过对应的OTP寄存器设置阈值(OTP_CUST_CFG7
)。当VFWD的结果低于阈值超过 n d e b o u n c e n_{debounce} ndebounce 个PWM周期,VFWD_WRN对应的标志就会置位。
警告OUT_SHORT_WRN对应的标志置位表示相邻的输出通道短路。该功能可以通过对应的OTP寄存器进行使能(OTP_CUST_CFG2
)。因为这个警告是一个安全特性,所以更多的操作细节需要去翻阅芯片的安全手册。
警告CUR_WRN对应的标志置位表示通道实际输出的电流比OTP设置(OTP_CH_ISET
)的电流值小15mA(最大值,实际在5.5mA到9mA)的时间超过 n d e b o u n c e n_{debounce} ndebounce 个PWM周期。为了避免报非预期的电流警告,推荐在OTP_CH_ISET
烧录的电流值取实际用到的最小值。
警告DC_WRN对应的标志置位表示通道实际的PWM占空比值比OTP预设值的PWM占空比值高20%超过 n d e b o u n c e n_{debounce} ndebounce 个PWM周期。DC_WRN警告在使用8-bit的DC_UPDATE会误报,建议在使用14bit的DC_UPDATE命令时查询该状态位。
当发生LED负载错误时(开路、单颗LED短路、热过载),或者ERR引脚的错误反馈,TLD7002-16ES可以通过对应的OTP寄存器(OTP_CUST_CFG7
的DIAG_mgnt_SET
位)配置芯片是否进入init mode。如果使能了该功能,芯片会关闭所有输出通道,并准备好进入重复确认的周期。
重复确认周期包含两部分,
如上图所示,在HSLI控制情况下,
另外,也可以通过拉高GPIN引脚使芯片从INIT phase进入ACTIVE phase,然后芯片会自动打开错误通道进行错误检测。
TLD7002-16ES需要在VS或者VLED大于 V D E N _ t h r e s h o l d V_{DEN\_threshold} VDEN_threshold 时才会开启诊断功能,该阈值可以通过OTP对应的寄存器(OTP_CUST_CFG1
)进行设置,阈值的所有选项如下图:
该芯片的采样延时 t d i a g _ d l y t_{diag\_dly} tdiag_dly 也可以通过对应的OTP寄存器(OTP_CUST_CFG1
)进行配置,可选的延迟如下表:
诊断的去抖动时间也可以通过对应的OTP寄存器(OTP_CH_ISET_7_DEV_CFG
)设置,可选的数字如下:
OUT15可以通过对应的OTP寄存器(OTP_CUST_CFG1
)进行配置,用作错误反馈引脚,即ERRN引脚,推荐的使用电路如下图,当检测到错误时,ERR引脚会拉低(VERR电压低于2V)。
ERRN引脚可以反馈的错误如下:
当芯片诊断到错误并置位相应的标志位,建议通过HSLI总线命令清除标志位,从而可以检测到新的错误。
TLD7002-16ES和MCU之间通信使用的接口称之为HSLI,即High-speed Lighting Interface。
下面从物理层、数据链路层、传输层分别介绍HSLI。
TLD7002-16ES内部集成了符合11898-2:2016标准的CAN FD收发器,支持的最高传输速率为2Mbit/s。
其数据链路层为标准的UART接口配置(如下图所示),即8bit数据位,无奇偶校验,1bit停止位。通信速率的范围为200Kbit/s到2Mbit/s(init模式下为100Kbit/s到500Kbit/s)。因为协议层有同步字段,所以通信速率不需要特定值,在指定范围即可。
HSLI的时序如下图所示:
简化后的帧结构如下图:
另外,两帧直接的最小间隔时间(HSLI interframe delay)和最大间隔时间(HSLI watchdog timeout),分别可以通过OTP_CUST_CFG9
的bit[6:4]和OTP_CUST_CFG7
的bit[2:0]进行配置。
HSLI帧主要分两部分,一部分是MCU发送的,下文称为主机请求帧;一部分是TLD7002-16ES回复的,下文称为从机响应帧。
主机请求帧有帧头段和数据段组成,其中数据段并不是所有的主机请求帧都有。帧头段的组成如下图:
关于上述字节段的详细解释如下:
- CRC[7:5] 使用CRC-3算法,初始值为5,详细计算流程图如下:
Address[4:0] 包含5bit的从机地址,也即TLD7002-16ES的地址,所有没有烧录过的芯片的地址都为0x01,没有办法通过pin strapping功能进行地址配置,需要通过OTP编程方式烧录需要的地址。
MRC[7:6] 需要每次发数据时都增加,初始值为0x00。TLD7002-16ES每次收到主机发过来的MRC值,会和内部的保存MRC值进行比较。如果不同,会认为产生了MRC错误,同时,TLD7002的内部MRC值会更新为主机发送过来的MRC值。
DLC[5:3] 的数值和数据段数据长度的对应关系如下:
- FUN[2:0] 不同数值代表的功能如下表:
从机响应帧的终端段的组成如下图:
从机响应字节的CRC算法使用CRC-3算法,初始值为5,详细计算流程图如下:
不同类型的帧,数据段差别较大,代表的意义也不一样。主要有如下几种:
主机请求帧主要有如下几种类型:
5.5.1 DC_SYNC
DC_SYNC帧用于同步连接到同一个HSLI总线上的所有TLD7002-16ES的PWM占空比变化时间。
DC_SYNC帧如下三个字段的值是固定的:
DC_SYNC帧内容如下:
5.5.2 DC_UPDATE
DC_UPDATE帧用于更新输出通道的占空比。
DC_UPDATE帧相关的字段设置如下:
DC_UPDATE帧的内容如下:
因为更新的寄存器是14bit的,如果使用8bit的值更新,换算关系以及对应的实际占空比值如下图:
5.5.3 PM_CHANGE
PM_CHANGE帧用于切换芯片的模式。
PM_CHANGE帧如下两个字段的值是固定的:
PM_CHANGE帧的内容如下:
5.5.4 HWCR
HWCR帧用于清除诊断错误标志。
HWCR帧的如下两个字段的值是固定的:
HWCR帧的内容如下:
5.5.5 READ_OST
READ_OST帧用于读取16个通道状态。
READ_OST帧的如下两个字段的值是固定的:
READ_OST帧的内容如下:
5.5.6 WRITE_REG
WRITE_REG帧用于向目标寄存器写值。
WRITE_REG帧相关的字段设置如下:
WRITE_REG帧的内容如下(以DLC=0x01为例):
5.5.7 READ_REG
READ_REG帧用于向目标寄存器读值。
READ_REG帧相关的字段设置如下:
READ_REG帧的内容如下(以DLC=0x01为例):
5.5.8 SYNC_BREAK
SYNC_BREAK帧用于重置HSLI的协议处理器,为一段时间的显性电平,然后再变成隐性电平,类似于LIN协议的同步间隔段。
显性电平的时间在对应的OTP寄存器(OTP_CUST_CFG9
)进行配置,参数有如下几种选择。
当TLD7003-26ES检测到SYNC_BREAK,内部的协议处理器会初始化,从而:
5.5.9 数据段的CRC算法
数据段的CRC-8算法依据CRC-8-AUTOSAR and SAE J1850,多项式为 x 8 + x 4 + x 3 + x 2 + 1 x^8+x^4+x^3+x^2+1 x8+x4+x3+x2+1,初始值为0xFF,包含的计算数据每个帧不一样,详细情况如下:
TLD7002-16ES Data Sheet
User Manual: Infineon-TLD7002-16ES-UM-v01_20-EN
TLD7002-16ES software design and device driver