关键词
嵌入式、C语言、autosar
平台说明
项目 | Value |
---|---|
OS | autosar OS |
芯片厂商 | Infineon ,TC234,TLF35584 |
编程语言 | C,C++ |
编译器 | tasking |
一、背景
描述了一款产品对TLF35584 功能安全芯片的一般需求。本文以EPS(electric power steering)为例。
二、需求
1.SPI
SPI在35584中用于与mcu的通信,需做到以下功能:
1.1能配置SPI的引脚,波特率,通道,周期,缓存,时钟等相关参数;
1.2能读写35584相关寄存器;
1.3能检测SPI自身的错误;
2. 故障监控和错误报警部分
本模块用于对35584各输出以及自身SPI通讯的监控和报警,需做到以下功能:
2.1 SPI状态监控。
通过SPI周期读取SPI状态寄存器,当发现状态错误的时 候停止助力并报故障;
2.2 LDO_μC电压监控。
通过SPI周期(T<tStG/2)读取LDO_μC 的寄存器,当监测到LDO_μC过压的时候电源芯片将进入FAILSAFE State状态,程序在进入FAILSAFE State状态前发出故障报警。当检测到LDO_μC欠压的的时候INIT状态,pin ROT被拉低,程序在ROT被拉低拉低前发出故障报警(ROT=reset ouput)。
2.3 LDO_Com电压监控。
通过SPI周期读取LDO_Com的寄存器,当LDO_Com过压的时候LDO_Com会自动关闭,并产生一个中断。这时在中断事件中如果通过SPI读取到LDO_Com的寄存器的值的确为过压,则系统将停止助力并发出故障报警。如果LDO_Com欠压,时间超过tStG, LDO_Com将会自动关闭并且产生一个中断的事件。这时如果在中断事件通过SPI读取到的LDO_Com寄存的状态为欠压,则系统将停止助力并发出故障报警。
2.4 Volt_Ref电压监控。
通过SPI周期(T<tStG/2)读取Volt_Ref 的寄存器,当监测到Volt_Ref过压的时候电源芯片将进入FAILSAFE State状态,程序在进入FAILSAFE State状态前发出故障报警当检测到Volt_Ref欠压,时间超过tStG, Volt_Ref将会自动关闭并且产生一个中断的事件。这时如果在中断事件通过SPI读取到的Volt_Ref寄存的状态为欠压,则系统将关闭Volt_Ref停止助力并发出故障报警。
2.5 Tracker1/2电压监控。
通过SPI周期读取Tracker1/2状态,当检测到了Tracker1/2过压时,关闭相应的跟踪器,产生中断,在中断事件中如果通过SPI读取到Tracker1/2状态为过压,则停止助力并报警。如果Tracker1/2欠压时间超过tStG,相应的跟踪器将被关闭,产生一个中断,在中断事件中通过SPI读取到的Tracker1/2状态为欠压,则停止助力并报警。
2.6 LDO_μC温度监控。
当LDO_μC的温度超过报警阈值时,会产生一个中断。在中断事件中读取LDO_μC的状态,如果为温度异常则确认为温度异常,此时发出报警。当温度超过关闭LDO_μC的阈值的时候,设备会进入错误安全状态,ROT被拉低,程序在断电之前发出报警。
2.7 LDO_Com温度监控。
当LDO_Com的温度超过报警阈值时,会产生一个中断。在中断事件中读取LDO_Com的状态,如果为温度异常则确认为温度异常,此时发出报警。当温度超过关闭LDO_μC的阈值的时候,LDO_Com被关闭,产生一个中断事件,在中断中通过spi读取LDO_Com的状态,如果为超过关闭阈值,则关闭输出。发出故障警报。
2.8 Volt_Ref温度监控。
通过SPI周期读取Volt_Ref的状态,当Volt_Ref的温度超过报警阈值时,会产生一个中断。在中断事件中读取Volt_Ref的状态,如果为温度异常则确认为温度异常,此时发出报警。当温度超过关闭Volt_Ref的阈值的时候,LDO_Com被关闭。通过spi读取Volt_Ref的状态,如果为超过关闭阈值,则关闭输出发出故障警报。
2.9 Tracker1/2温度监控。
通过SPI周期读取Tracker1/2的状态,当Tracker1/2的温度超过报警阈值时,会产生一个中断。在中断事件中读取Tracker1/2的状态,如果为温度异常则确认为温度异常,此时发出报警。当温度超过关闭Tracker1/2的阈值的时候,Tracker1/2被关闭。通过spi读取Tracker1/2的状态,如果为超过关闭阈值,则关闭输出发出故障警报。
3. 喂狗模块
能够实现对喂狗模式的选择和参数配置,例如开关窗时间,错误计数阈值,周期等。
4.工作模式跳转
35584具有的工作模式有:init,wake,standby,sleep,normal,在不同的工作模式下可以配置不同的工作状态。所有的输出和功能有:LDO_stby、error Monitoring、PreReg、LDO_uc、LDO_Com、Core_Sup adj、Volt_ref、Tr 1 & 2、Wakeup-T、WatchDogs、RESET、SSC, SS1&2。为了实现不同的功能,需要在不同工作模式间进行跳转。各个工作模式的输出和功能状态如下:
Init:开启的输出和功能有LDO_stby、error Monitoring、PreReg、LDO_uc、LDO_Com、Core_Sup adj、Volt_ref、Tr 1 & 2、WatchDogs、RESET(ACTIVE)。
Normal:开启的输出和功能有 LDO_stby、error Monitoring、PreReg、LDO_uc、LDO_Com、Core_Sup adj、Volt_ref、Tr 1 & 2、WatchDogs、RESET(HIGHT)、SSC, SS1&2。
Wake:开启的输出和功能有 LDO_stby、error Monitoring、PreReg、LDO_uc、LDO_Com、Core_Sup adj、Volt_ref、Tr 1 & 2、WatchDogs、RESET(HIGHT)。
SLEEP:开启的输出和功能有 LDO_stby、error Monitoring、PreReg、LDO_uc、LDO_Com、Core_Sup adj、Volt_ref、Tr 1 & 2、Wakeup-T、WatchDogs、RESET(HIGHT)。
4.1 init到normal的跳转
系统在上电之后,首先进入init工作模式。系统在init模式下完成对35584的初始化和自检,在没有出现故障的情况下跳转到normal;跳转通过SPI实现。
4.2 Normal到sleep的跳转
能够实现在掉点火且无锁存的时候跳转到sleep模式。在normal状态下,如果想要进入sleep状态,必须把mcu移动到低功耗状态,使LDO_uc的电流低于设定的阈值。否则会产进入陷阱并跳转到wake。再发送SPI命令跳转到sleep。
4.3 sleep到wake
能够实现在点火或锁存恢复的时候,通过SPI或者wakeT能够从sleep跳转到wake。
4.4 wake到normal
能够实现在wake模式下通过SPI命令跳转到normal。
4.5 normal(wake)到standby
能够实现在normal(wake)模式下,当掉点火且掉锁存的情况下通过spi跳转到standby模式。
4.6 能够实现35584的Analog Built In Self Test (ABIST)。
三、状态机
附1.简称说明:
ON /OFF:= Switched ON or OFF, not configurable by SPI command
• ON*:= Switched ON by entering the INIT state, then selectable via SPI
• SELECTED:= May be configured (switched ON or OFF) by SPI command in previous state or is selected by
the state transition request (DEVCTRL) in case of LDO configuration for SLEEP state.
• SELECTABLE:= May be switched ON or OFF by SPI command in this state
• SELECTABLE**:= Switched ON by default after POR, then selectable via SPI
• ADJUSTED:= Defined present or not present by configuration pin, not configurable by SPI command
• ACTIVE:= as described in INIT-State
• SSC, SS1&2:= Safe State Control signals 1 and 2
• LOW:= Signal is low
• HIGH:= Signal is high
• OV:= Over voltage
• UV:= Under voltage
• StG:= Short to ground
• TSD:= Thermal shut down
• OC:= Over current
• ABIST:= Analog built in self test
• Comp BG1 <-> BG2 > 4%: The difference between both band gaps 1 and 2 is more than 4%
附2 各工作状态说明
2.1 init state
2.2 normal state
2.3 sleep state
2.4 standby state
2.5 wake state
2.6 failsafe state
小结
Analog Built In Self Test (ABIST) 后续更新。