BMS底软小白升级手册(3) 秒懂 HVIL (硬件电路+软件配置 原理 + 项目实例)[万字图解 含ADC PWM Port配置及原理详解]

小白手册1–BMS基础

高压互锁的原理

在AUTOSAR架构下,高压互锁(High Voltage Interlock, HVIL)是一种安全机制,用于检测高压系统中的电气连接状态,确保高压电路在断开或异常时能够及时切断电源,防止电击或设备损坏。

1.电气回路检测:

HVIL通过一个低电压的检测回路监控高压连接器的状态。该回路贯穿所有高压组件,形成一个闭合电路。

当所有连接器正常连接时,回路闭合,系统正常工作。

如果某个连接器断开或松动,回路断开,系统检测到异常并触发保护措施。

2.信号检测与处理:

HVIL回路中的信号由控制单元(如BMS)监控,实时检测回路状态。

如果检测到回路断开,控制单元会触发故障处理机制,如切断高压电源或报警。

高压互锁的作用

车辆上电前,检测电路完整性,如果检测到电路不完整,系统无法上电,避免因虚接等问题造成事故;
检测高压电路松动(会导致高压断电、车辆动力丧失、影响乘车安全),并在高压断电前向车辆控制器提供报警信息,预留车辆系统采取对策的时间。
在维修整车高压电路时,可通过MSD(手动维修开关)手动断开高压,高压互锁先断开,然后再断开高压互锁回路,防止误操作导致高压上电,威胁维修人员安全。

高压互锁的实现

在AUTOSAR架构下,HVIL的实现涉及以下模块:

  1. 硬件层:
    HVIL回路:贯穿所有高压组件,形成闭合电路。
    传感器与检测电路:用于检测回路状态,并将信号传递给控制单元。

  2. 微控制器抽象层(MCAL)
    ADC驱动:读取HVIL回路的电压信号。
    GPIO驱动:控制相关引脚状态,如切断高压电源。

  3. ECU抽象层:
    HVIL信号处理模块:将MCAL层读取的信号转换为逻辑状态,供上层使用。

  4. 服务层:
    诊断事件管理(DEM):记录HVIL相关故障。
    诊断通信管理(DCM):通过CAN或其他通信协议上报故障信息。

  5. 应用层:
    HVIL监控模块:实时监控HVIL回路状态,触发保护措施。
    故障处理模块:根据HVIL状态执行相应操作,如切断电源或报警。

实现步骤

硬件设计:

设计HVIL回路,确保其贯穿所有高压组件。
选择合适的传感器和检测电路。

高压互锁连接器实物图:
在这里插入图片描述

高压互锁硬件功能实质检测互锁端子两个PIN脚通断来实现。

如下图所示:
实现高压互锁结构的一般方法是将一对低压连接器和一对高压连接器固定在一对公端和母端上。

通过互锁端子与主电路(高压)端子的长度和位置差异,接口在插入或拔出时有时间先后;

在插入时,高压端子比低压端子(互锁端子)较长,所以高压端子连接;即:检测到低压端子连接时,高压端子一定连接;
在拨出时,低压端子断开时,高压端子可能断开也可能未断开(接触不良),但是此时是不安全的,所以当检测到低压端子断开时,就断开高压。

在这里插入图片描述

硬件原理概述:
在这里插入图片描述

硬件电路设计方案

高压连接器的HVIL检测电路有直流源PWM两种方案

动作说明:

IC对外输出恒定电流,并采集输出端电压(HVILn_OUT_AD);
接收端检测从外部流回的电流,并采集该电流在电阻上产生电压(HVILn_IN_AD)。
MCU通过AD采集到的电压判断输出状态。

直流源

检测高压互锁回路完整性,可以通过在BMS一端输出直流电流,在另一端输入形成回路,检测输出和输入点的电压,判断是否在一个阈值内,从而判断高压互锁回路是否开路或松动。

在这里插入图片描述

PWM

BMS发出PWM波,经过各个高压互锁连接器,最后再回到BMS;BMS检测接收到的信号,比如PWM波信号的占空比来判断高压互锁回路的完整性
在这里插入图片描述
电池厂商项目大多使用PWM实现HVIL方法,使用PWM方式则不会像直流源方法导致HVIL功能失效。

软件详解及配置:

1.配置MCAL的PWM、ADC和GPIO驱动

MCAL驱动主要分为IO类驱动(DIO等)、通讯类驱动(CAN等)、内存类驱动(EEP等)、微控制器驱动(GPT等),根据使用个人使用经验,MCU模块(需要结合具体芯片的硬件时钟配置个软件模块使用的时钟)和SPI模块(需要结合外围芯片的SPI通信振格式及时序要求来配置)的配置是难点,后面将详细讲解。
ADC驱动:Analog-to- Digital Converter Driver
CAN驱动:Controller Area Network Driver
DIO驱动:Digital Input/Output Driver
ETH驱动:Ethernet Driver
GPT驱动:General Purpose Timer Driver
ICU驱动:Input Capture Unit Driver
LIN驱动:Local Interconnect Network Driver
MCU 驱动:Microcontroller Unit Driver
PORT驱动:Port Driver
PWM驱动:Pulse Width Modulation Driver
SPI 驱动:Serial Peripheral Interface

详解PWM

2.PWM模块详解:
2.1PWM模块概念介绍

PWM驱动提供初始化和控制MCU内部PWM状态(脉冲宽度调制)的功能。PWM驱动模块可以产生可变的脉冲宽度。它允许选择占空比和信号周期时间。
在这里插入图片描述

图1:PWM信号描述
Polarity:极性,也就是PWM脉冲开始的电平状态,如果我们的空闲状态配置(Idle State)为低电平,则极性Polarity就为高电平。
Idle State:空闲状态,也就是没有PWM脉冲输出时的状态。
Duty Cycle:占空比周期,也就是一个PWM处于Polarity状态的时间。
Period:周期,Duty Cycle 加一个空闲状态的时间。
在这里插入图片描述

表1:PWM关键概念

2.2 PWM依赖的模块

PWM依赖于于系统时钟。因此,系统时钟的改变(PLL on --> PLL off)会影响PWM硬件的设置。
PWM驱动依赖以下的模块:
– PORT Driver: 设置Port pin的功能(port pin一般都是复用的)
– MCU Driver: 设置预分频器,系统时钟和锁相环
– DET: 默认的Error追踪
Note: 配置PWM模块前要保证MCU模式时钟及PORT模块的Pin脚属性配置正确,详见Mcu和Port配置介绍。

2.3 PWM频率

PWM模块的所有API服务都是使用Ticks数作为时间单元。Ticks使用的基准时钟由Mcu模块的配置(如PCLK),PWM模块可以对基准时钟进行再分频配置得到想到的Tick时钟。
Ticks数和时间的转换必须在应用层完成。
例如:如果项目使用的PWM通道的Tick需求都是1us,我们要得到1000Hz的频率,那么需要设置Period参数为1000(1/(1000 * 10^-6))。
void PWM_SetPeriodAndDuty(


   3.  PWM_ChannelType ChannelNumber,
    
   5.  PWM_PeriodType Period,
    
   7.  uint16 DutyCycle
    
   9. );
2.4 PWM占空比

在这里插入图片描述
在这里插入图片描述
0x00–0x8000表示占空比0%–100%,所以我们要配置占空比50%,则DutyCycle参数应配置为0x4000。

2.4 PWM重要数据类型
2.4.1 Pwm_EdgeNotificationType

在这里插入图片描述在这里插入图片描述

PWM_EdgeNotificationType配置是上升沿、下降沿还是双边沿调用通知函数(Notification,需要配置)。

2.4.2 Pwm_ChannelClassType在这里插入图片描述

PWM_ChannelClassType配置PWM输出的模式:
PWM_VARIABLE_PERIOD :周期(频率)和占空比都可改变
PWM_FIXED_PERIOD :固定周期(频率),占空比可改变
PWM_FIXED_PERIOD_SHIFTED :固定周期和占空比。

必要和可选的配置项:

PWM对应的硬件1通道2默认周期3默认Duty cycle4极性5空闲状态6通道类型是必须的配置项。
在这里插入图片描述

2.5 PWM重要API
2.5.1 Pwm_Init

在这里插入图片描述
Pwm_Init函数初始化PWM模块,将所有PWM通道设置为默认状态。

2.5.2 Pwm_SetPeriodAndDuty

Pwm_SetPeriodAndDuty函数设置PWM通道的周期和占空比。
在这里插入图片描述在这里插入图片描述
周期的参数也是Tick数,看配置给这一路PWM输出的时钟Revolution,如果revolution = 1us,则Period = Tick number * 1us。
如果将Period设置为0,则占空比的设置无效。在这种情况下输出的占空比为0。

2.5.3 Pwm_EnableNotification

Pwm_EnableNotification使能PWM的通知功能。如果我们配置PWM通道的Notification函数,同时在使用PWM功能的模块调用了Pwm_EnableNotification使能PWM的通知功能,则PWM的配置边沿(上升沿、下降沿、双边沿)产生中断调用我们配置的Notification函数,一般在需要知道边沿变化的场景下使用。
在这里插入图片描述

3.基于英飞凌TC3xx芯片的PWM配置实践

3.1.配置Port引脚

需求 : 配置P11.14为PWM输出
在这里插入图片描述

查看<<T********C37xAB_EXT_DS_v1.1.pdf >>文档,找到P11.14引脚的多路复用选项为O1(Output alternative 1)。
在这里插入图片描述在这里插入图片描述

3.2 配置TOM通道

技术手册扫盲时间^ , ^


英飞凌Aurix系列的文档:【GTM_TOUT126】
GTM代表Generic Timer Module,Infineon常见模块,用于复杂时间控制如定时PWM生成
TOM代表Timer Output Module,是GTM中的一个子模块,负责生成输出信号,如PWM波形。TOUT是Timer Output的缩写,具体指某个输出通道
GTM_TOUT 通常指 TOM通道的输出信号。

以英飞凌Aurix系列为例,配置TOM通道需要操作以下寄存器:

TOM通道的关键寄存器

(1) TOM通道控制寄存器(TOMx_CHy_CTRL)
功能:配置通道的工作模式、时钟源、触发条件等。

关键字段:

SL:选择时钟源(如分频后的系统时钟)。

TRIGOUT:触发输出模式(如上升沿触发)。

CLK_SRC:时钟源选择(如GPT120定时器时钟)。

(2) TOM通道周期寄存器(TOMx_CHy_SR0)
功能:设置PWM的周期(频率)。

例如,SR0 = (System Clock Frequency) / (PWM Frequency) - 1。

(3) TOM通道占空比寄存器(TOMx_CHy_SR1)
功能:设置PWM的占空比。

例如,占空比 = (SR1 + 1) / (SR0 + 1) * 100%。

(4) TOM通道输出控制寄存器(TOMx_TGCy_GLB_CTRL)
功能:全局控制通道的输出使能、同步等。

配置示例:生成PWM信号

假设需要通过 TOM0通道1 生成一个频率为1kHz、占空比50%的PWM信号(系统时钟为100MHz)。

步骤1:计算寄存器值
周期(SR0):

SR0 = (100MHz / 1kHz) - 1 = 99999

占空比(SR1):

SR1 = SR0 * 50% = 49999

步骤2:配置寄存器

// 选择TOM0通道1
volatile uint32* TOM0_CH1_CTRL = (uint32*)0xF0002004;  // 假设地址为示例
volatile uint32* TOM0_CH1_SR0   = (uint32*)0xF0002008;
volatile uint32* TOM0_CH1_SR1   = (uint32*)0xF000200C;

// 配置时钟源和模式
*TOM0_CH1_CTRL = (0x1 << 8);  // SL=1(选择分频后的时钟)
*TOM0_CH1_SR0  = 99999;       // 设置周期
*TOM0_CH1_SR1  = 49999;       // 设置占空比

// 使能通道输出
volatile uint32* TOM0_TGC0_GLB_CTRL = (uint32*)0xF0001000;
*TOM0_TGC0_GLB_CTRL |= (0x1 << 1);  // 使能通道1

步骤3:映射到物理引脚
在微控制器的引脚复用配置中,将 TOM0_CH1_TOUT 映射到目标物理引脚(如P11.14)。


回到主题 包看懂的^ , ^
查看文档<<T********C37x_appx_um_v2.0.pdf >>找到GTM_TOUT126对应的TOM unit及channel number.
在这里插入图片描述在这里插入图片描述

也就是我们需要配置TOM2_7映射关系.
MCAL->MCU->GtmGlobalConfiguration->GtmTomGlobalConf-> GtmTomGlobalConf_2->GtmTomChannelConf下配置TOM Channel和Port pin的映射关系,TOM2_7为PORT11_PIN14.
在这里插入图片描述

MCAL->MCU-> McuHardwareResourceAllocationConf-> McuGtmAllocationConf-> McuGtmTomAllocationConf-> McuGtmTomAllocationConf_2->McuGtmTomChannelAllocationConf配置Channel功能.
在这里插入图片描述

3.3 配置PWM模块
3.3.1PWM引用GTM通道配置

在这里插入图片描述

通过上文知道,该PWM Channel引用GTM TOM2_7,使用Fixed Clock 0,也就是200MHz.

3.3.2PwmNotification

PWM一般不用配置PwmNotification.

3.3.3PwmChannelClass

在这里插入图片描述

既想改变周期,又想改占空比,就配置为PWM_VARIABLE_PERIOD.
在这里插入图片描述

3.3.4 General

在这里插入图片描述

PwmChannelID : 自动分配,标识当前Pwm Channel.
PwmAssignedHwUnit : PWM Channel使用的硬件模块,可以选GTM和CCU6,我们配置使用GTM.
PwmIdleState : 空闲电平。
PwmPolarity : 极性,可Idle电平相反,也就是计算占空比的电平状态。
Note: 占空比Dutycycle和周期Period都是以ticks数来配置的,比如我们使用200MHz的时钟,则一个tick的时间=1/(200 * 10^6)秒,如果我们需要配置20KHz的PWM输出频率,50%的占空比,则:
1)20KHz的PWM的周期为:1/(20*10^3)s
2)20KHz的PWM周期需要的ticks数为:(1/(20 * 10^3) )/( 1/(200 * 10^6)) = 10000
3)50%的PWM的占空比需要的ticks数为:10000/2 = 5000.
PwmDutycycleDefault : 5000
PwmPeriodDefault : 10000

3.4配置ResourceM

使用EB工具,多核芯片需要配置硬件资源归属于哪一个Core.
在这里插入图片描述在这里插入图片描述

4. 基于RH850U2A芯片的PWM配置实践

需求: 需要配置基于RH850-U2A芯片的ECU的M_PO_PwmTest脚位PWM输出口,且频率和占空比可调,频率输出大概为1000Hz。
在这里插入图片描述

4.1 配置Port口

在这里插入图片描述

芯片的Port口一般是复用口,需要配置Port口的工具为PWM输出脚。

4.2 PWM通用项配置

在这里插入图片描述

配置PWM模块的通用(General)项,包括芯片类型,使用二类中断等。

4.3 配置可用服务

在这里插入图片描述

配置PWM模块需要使用的那些API服务,我们主要使用PWM的Set Period and Duty的功能。

4.4 配置PWM输出需要的时钟

在这里插入图片描述

PWM模块使用的时钟源是80MHz,我们想得到1us的Tick基准,使用PCLK分频后的Ck3作为PWM通道的时钟。

4.5 配置PWM通道

5. 总结

配置好PWM模块后,PWM功能的使用模块就可以分装PWM提供的标准接口来实现特定的需求。一般我们会在IoHwAb模块分装PWM模块的使用细节,让ASW直接使用IoHwAb模块分装后的接口。
在这里插入图片描述

ECU抽象层HVIL软件实现:

在ECU抽象层实现HVIL信号处理模块。该组件实现互锁信号的输出控制,检测输出互锁信号和输入信号。

1.明确软件需求

HVIL输出:
每xx ms接收ASW HVIL控制信号,当收到ASW请求为1时,输出xx %占空比以及xx hz频率的PWM并将占空比以及频率上传至RTE。
HVIL输入回检:
每xx ms回检输入的PWM信号,并将检测到的占空比以及频率上传至RTE。
HVIL输入输出电平检测
每xx ms对输出与输入的PWM进行电平检测,并对其进行诊断,上传相应的电平值至RTE。
HVIL故障诊断
当HVIL故障诊断使能的时候,xx ms检测HVIL回路是否存在对地短路/对电源短路或者开路故障。

2.软件设计

HVIL模块主要包含了以下几个功能:
1.HVIL初始化,初始化并配置所有ICU通道和ICU的参数。
2.当BSW收到ASW或UDS请求除输出PWM时,BSW应输出xx%占空比以及xxhz频率的PWM以及对输出的PWM进行回检,验证输出是否正确并且上传信号至RTE。
3.BSW应对输入的PWM进行回检,并计算出对应的占空比以及频率提供给RTE。
4.当HVIL诊断使能条件满足时,BSW应对HVIL回路进行故障诊断。
在这里插入图片描述

高压互锁故障

开路故障

开路前: R1 R2 和 R3 R4 并联
开路后:恒流源只通过 R1 R2,
电流是恒定的, HVIL_OUT_AD采集的电压要比正常连通时要高
HVIL_IN_AD采集电压接近 0
在这里插入图片描述

短电源故障

前提条件:Power 大于或等于 VIN-C1
由于前提条件可得,二极管无法导通,所以对于HVIL_OUT_AD采集的电压和开路时相同
而HVIL_IN_AD采集电压根据 Power 计算分担电压
在这里插入图片描述

短地故障

短地导致R1 R2基本没有电流经过,,所以对于HVIL_OUT_AD采集的电压较低或接近 0
而HVIL_IN_AD采集电压 接近 0
在这里插入图片描述

其他常见故障:

线束错误导致开路
互锁开关失效导致开路
端子退针导致开路
对地 / 电源短路
动力电池内部故障
MSD
MSD被称为手动维修保护开关,其内置高压保险丝,具有高压互锁功能,一般安装在主正回路上;MSD的主要功能是为了保护在高压环境下从事电动汽车维修人员的安全。

例如车辆外部高压线路出现短路情况时,MSD会立即断开内部保险丝,快速分离高压电路的连接。手动断开高压时,MSD高压互锁先断开,然后再断开高压回路,保证维修工作及人员出于一种较为安全的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚂蚁猩球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值