菜单
本页目录

一.IoHwAb层代码的文件结构

IoHwAb/
├── ICs/ │ ├── PT2001_FullBridge_Cfg.h
│ ├── PT2001_FullBridge.c
│ ├── PT2001_FullBridge.h
│ ├── PT2001_FullBridge_PBCfg.c
│ └── ...
├── IoHwAb_Analog.c
├── IoHwAb_Analog.h
├── IoHwAb_Cfg.h
├── IoHwAb_Diag_Cfg.h
├── IoHwAb_Diag_PBCfg.c
├── IoHwAb_Diag.c
├── IoHwAb_Diag.h
├── IoHwAb_Discrete.c
├── IoHwAb_Discrete.h
├── IoHwAb_PBCfg.c
├── IoHwAb_Pwm.c
├── IoHwAb_Pwm.h
├── IoHwAb.c
└── IoHwAb.h

其中,以IoHwAb_Diag开头的四个文件就是诊断层的代码.

二.文件说明

1.IoHwAb_Diag.c

IoHwAb_Diag.c文件中存放着诊断层的各个变量定义与功能函数

2.IoHwAb_Diag.h

IoHwAb_Diag.h文件中存放着诊断层的各个变量与函数的声明,以及一些状态机的宏

3.IoHwAb_Diag_PBCfg.c

IoHwAb_Diag_PBCfg.c文件中存放着诊断层的通道配置,诊断层按照不同的驱动类型来分组,手动将相同类型的驱动分为一组,以便程序周期性得去遍历每一个驱动故障.

4.IoHwAb_Diag_Cfg.h

IoHwAb_Diag_Cfg.h文件中存放着诊断层的各种宏定义,枚举声明

三.移植过程

1.复制四个文件至项目的IoHwAb文件夹下.

2.核对地址段名称.

核对代码各个地址段的名字是否正确,若是跨平台项目,大概率各地址段的宏名称是不一样的,如若不修改,编译会报MEMMAP_ERROR错误.
67603dd620dc5.webp

由于段的划分基本在每个文件中都使用得到,故可以参考同项目其它文件对地址段的引用,来修正诊断层的地址段名称
例如:
676040b6c3685.webp 67604137a18f5.webp

3.修改100us中断使能.

函数:IoHwAb_Diag_Check()
在跨平台的移植中,不同平台100us的使能方式不一样,需要修改.
例如:
THA6平台:

...
	for(idxGrpUB=0;idxGrpUB<IOHWAB_DIAG_NUM_GROUP;idxGrpUB++)
	{
		if(1==IoHwAb_Diag_stGrpUA[idxGrpUB].Bits.bTimerTrigger)
		{
			/*触发100us*/
			//触发定时中断
			Gpt_SetPeriod(GPT_INDEX_CHAN_Diag100us, 100);
			Gpt_Enable(GPT_INDEX_CHAN_Diag100us);
			return;
		}
	}
...

TC387平台:

...
	for(idxGrpUB=0;idxGrpUB<IOHWAB_DIAG_NUM_GROUP;idxGrpUB++)
	{
		if(1==IoHwAb_Diag_stGrpUA[idxGrpUB].Bits.bTimerTrigger)
		{
			/*触发100us*/
			//触发定时中断
		    Fgtm=Gpt_lGetFgtm();			//100MHz
			Fgtm=((uint32)(Fgtm/10000));	//100us
			Gpt_StartTimer(GptConf_GptChannelConfiguration_GptChannelConfiguration_VarTimer,Fgtm);
			return;
		}
	}
...

4.修改各个驱动的数量.

a)修改.c文件数组的维数以及数组成员的数量.
b)修改代表各组驱动数量的宏的值.

5.修改IoHwAb_Diag_PBCfg.c中的通道配置.

如何从PCB配置到代码?

四.调试前环境的检查

1.基础驱动测试.

测试所有驱动芯片的驱动功能是否正常.

2.核对芯片故障重试策略

a)对于L9945或者HE9945

COMMAND1-8的bit8需要都设置为1,表示为SPI读故障后跟随驱动信号更新.

b)对于PT2001

由微码逻辑决定,易控PT2001的故障重试逻辑是在SPI读出故障后随驱动信号更新,与L9945类似.

3.核对过流阈值和过流滤波时间

a)对于L9945或者HE9945

eg:没有外接采样电阻的通道,过流阈值先设置为10档;有外置采样电阻的,电流给到18A左右
过流阈值通常设置在33A以下,具体还需根据实际驱动的负载来进行微调. 过流滤波时间需设置为11.1us.

4.核对诊断层和IC层交互函数是否缺失,形参定义和类型是否一致.

5.核对各个ic的异步/同步函数是否缺失,10ms更新函数是否缺失,获取通道故障函数是否缺失.

6.核实IC层的故障清除逻辑,须有明确的清除条件才能清除.

7.核实诊断层的10ms和100us周期和调用频率是否正确,100us是否为单次触发.

a)100us奇数次拉高测试管脚,偶数次拉低测试管脚,手动触发100us,示波器观测测试管脚电平,检查是否会出现连续拉高或拉低的情况.
b)测量每次电平转换的时间,务必每次都是100us.

8.核实诊断层故障重试间隔

若诊断层故障重试间隔大于诊断包的最小时常,则会出现诊断未完成就触发新诊断的情况.

9.保证IC默认控制周期小于10ms

诊断层会基于10ms等待并将其切换入50us高频控制 673eab9e9d7cd.png

10.准备开始测试.

确保电源功率足够大,先测试非过流故障,正确后再测试过流故障.