某特种车辆的国产MCU 上电时IO 输出口失控问题分析

2024-02-01 17:23蔡小红付华芳
汽车电器 2024年1期
关键词:远光灯寄存器时钟

蔡小红,付华芳,杨 威

(东风越野车有限公司,湖北 武汉 430056)

1 背景

随着芯片慌的出现,汽车核心芯片的供货及产品数据安全等风险系数急剧加大,如何保障产品自主可控是国内厂商急需面对的问题。因此,在特种车辆电子产品开发过程中,需满足国产自主可控相关要求,降低卡脖子技术风险。作为特种车辆车身电子控制核心元器件的MCU必须满足国产化要求,且市面上已有相关国产化产品。基于此,本文对车身控制模块的MCU进行选型设计,并在应用过程中对MCU上电时IO口失控问题进行分析、处理、跟踪和试验验证。

2 国产化MCU

MCU模块是车身电子控制模块的关键器件,必须实现国产化,只有MCU模块国产化了,才能称得上真正的自主可控。

目前,国内设计/生产微处理器厂家主要有:南通国芯(STC)、四维图新、海尔东软载波、兆易创新、上海芯旺、新海科技、复旦微电子、北京君正、清华同方、海威华芯以及军工科研院所旗下部分公司(如长沙韶光、中电47所)等。

经过深入调研,在需要符合某型号项目特殊低温环境要求的条件下,MCU模块采用某国产芯片HHD32F107VCH,其性能参数有:处理器为ARM Cortex-M3内核,72MHz;最高1M Flash,128kB SRAM;ADC为16通道12位ADC;2路CAN,4路SPI;1路百兆以太网;工作电压为2.7~5.5V;工作温度为-55~125℃;开发环境为Keil uVision5。事实证明,该性能完全满足特种车辆某特殊型号项目车身控制模块需求。处理器模块如图1所示。

图1 处理器模块

3 国产MCU IO输出口失控故障分析

3.1 故障现象

在整车试验过程中,IGN-ON挡上电时,车身控制模块功能偶发异常且每次表现出不同功能异常,只有强制断电后重启,各项功能才能恢复正常。车身控制模块上电偶发异常现象见表1。

表1 车身控制模块上电偶发异常现象

通过试验现场跟踪问题现象,发现问题共性是:均出现在上电的时候,并且都是IO失控,且断电后重启均能恢复正常。

3.2 故障分析

重点对硬件电路、应用层软件、MCU内部IO寄存器机理进行分析。外部IO口输入检测和驱动电路如图2所示,开关量的输入电路包括低输入和高输入开关量信号采集电路。国产元器件无类似功能芯片,采用分立元件搭建采集电路来实现输入信号采集,实现开关量输入的模块化。

图2 IO口输入检测和驱动电路

1)对设计的硬件电路和PCB设计进行分析,控制逻辑正确,设计合理,并且对上电波形进行了测量,结果符合要求,未发现异常。

2)对应用层软件进行分析,应用层调用底层IO驱动函数合理,且台架试验一直未出现任何IO口失控的功能异常。

3)关于MCU内部出现的IO寄存器异常,再次上电仍然可以正常控制,说明芯片本身没有损坏,MCU内部IO寄存器正常。然后对MCU驱动能力进行测试,根据某国产芯片MCU手册要求,需按照表2进行测试。

表2 某国产MCU IO口参数

基于当前整车实际的应用需求,分别在供电为3.3V,且电源电流IDD限流为100mA情况下,分别对IO配置为弱驱和强驱两种模式下,同时驱动1mA或2mA,测试能够输出正常电平的IO引脚数量。经ATE测试机台测试,测试结果如表3所示。根据测试结果表明IO本身的驱动能力没有问题。当前客户用作输出的IO为22个,驱动电流在1mA左右,完全能满足客户的应用需求。

表3 某国产MCU IO口同时驱动数量

由于故障现场出现时无法进行Debug跟踪调试(Debug调试导致MCU芯片复位,故障现象消失,无法跟踪调试),为了定位问题原因,增加调试代码通过串口将输入管脚IO寄存器值检测的变量和软件上设置输出的变量以及输出管脚实际的IO寄存器值打印出来,以便观察。如图3所示。

图3 打印IO状态和寄存器值调试代码

在上电远光灯开关闭合,但是远光灯未亮,其它控制功能均正常的故障现象时,通过调试打印信息,发现MCU检测远光灯开关(PE7)读取到的电平随着远光灯开关开启和闭合高低变化,并且应用软件定义的变量也随着高低变化,MCU的IO输入检测与实际情况相符合。同时根据远光灯开关开启和闭合,设置PC9的IO口输出来控制远光灯,进一步读取PC9的OUT寄存器,却发现该bit位一直为低,从未变高。

图4中定义变量就是检测到的16个输出管脚的状态值,其中BIT11定义为远光灯控制输出。从图5打印信息中,可见EI 读取的PE 管脚的PIN 寄存器,该值等于0XA894=1010100010010100,即PE7为高。根据远光灯控制策略,应用软件上设置PC9口OUT=0X0E82=111010000010,Print变量的BIT11bit位为高,即该位对应的GPIO_outStatus[11]变量也为高,用该变量去设置PC9管脚输出为高。但通过PC端口获取的PC9口寄存器值C0=0x3001=001_10000_0000_0001,可见应用软件上设置PC9口为1后,PC9口寄存器值仍然为0,说明IO口寄存器失控。在出现其它偶发故障时,采取同样的跟踪调试方法,均发现无法控制IO口寄存器。

图4 设置MCU PC9口输出高电平

图5 读取MCU PE7和PC9口输入输出寄存器值

3.3 故障解决方案

根据芯片设计原理,符合要求的电源电压是芯片内部各电路模块正常工作的前提。芯片内部通过电源网格为所有模块提供电源,电源网格会导致压降,因而芯片内部各电路模块所获得电压值各异。根据欧姆定律,电源网格所产生的压降值取决于电源通路的线性阻值、流经网格的电流值。如果电源网格所产生的压降过大,相应电路所获得的电源就不足以提供芯片内部晶体管正常工作所需的电平,那么该电路的逻辑功能将变得混乱和不受控,此时按正常的设计逻辑难以对其所呈现的实验现象进行分析、研究。

在芯片设计阶段,芯片厂商已经对电源网格压降进行模拟仿真、验证,保证所有电路模块能获得足够高的电压,但是这种仿真验证是以系统频率值、各种电路模块工作状况作为变量。不难想象,当系统频率固定时,开启的电路模块越多,则电源网格压降也就越大。结合本次特种车辆应用,MCU工作频率要求为不低于60MHz(芯片厂商建议的稳定工作频率),在此应用情况下,采取上电时减少开启MCU内部电路模块措施使芯片内部各电路模块功能稳定。

上电时为减少开启MCU内部电路模块,需对上电时的时钟初始化进行排查,发现默认初始化开启了大部分的外设时钟,并且未使用的时钟也被开启。同时开启较多的时钟意味着MCU内部开启的电路模块越多。先将底层驱动中默认开启的许多时钟,修改为上电时只打开MCU基本运行所需的SRAM、FLASH、AFIO这3个时钟,再根据具体应用需求打开相关模块的时钟。图6是新旧程序时钟设置部分代码对比,图6a是原时钟初始化程序,图6b是新修改时钟初始化程序。表4为新旧时钟初始化程序对比表。新修改的程序,在持续一周的实车测试中,未出现任何IO口失控问题。

表4 新旧时钟初始化程序对比

图6 新旧程序时钟设置修改对比

为了进一步验证新旧程序在时钟初始化设置后MCU内部工作电流的差异,在新旧程序的时钟初始化配置后,后续不开启任何时钟进行电流测试。将程序下载到车身控制器电路板上查看电流消耗的差异,并且在电源上串联5Ω的电阻,用于示波器测试该电阻上电瞬间的压降,以计算上电时新旧程序的瞬时电流值。示波器中刚开始很细的尖刺并不是MCU上电导致,因为在没有芯片的夹具测试板上也进行了同样的上电测试,同样有该尖刺,因此MCU自己不存在上电会产生很高的瞬时电流的情况。从表5中可以看出新旧程序MCU上电时的电流差异在6mA,芯片无程序时工作的电流为42.3mA。

表5 新旧时钟初始化程序MCU上电电流测试记录

虽然从芯片外的电流消耗来看差异只有6mA,但芯片内部通过电源网格为所有模块提供电源,电源网格会导致压降,因而芯片内部各电路模块所获得电压值各异且低于理论值。本项目采用的某国产107芯片所有IO口都被使用,且旧程序中107的外设模块时钟初始化时,同时基本都已经开启(特别是功耗大户以太网模块GMAC),且系统工作频率为60MHz,此时芯片功耗较大。如果在某个上电瞬间,外围连接器件对MCU电流的消耗增加,导致上电电流过大,从而造成芯片内部某些电源网格压降过大或者处于临界状态,从而导致芯片内部模块逻辑控制失效,IO输出端口输出寄存器不可控。这验证了文章前面出现的MCU上电偶发IO口失控现象。

4 试验验证

通过优化后的时钟配置,经过台架试验(图7)和长期的整车实验,尤其是整车试验从2022 年6 月28 号至今,进行的这一年多的试验验证,目前已经通过了整车三高试验验证,未出现MCU上电偶发IO口失控现象,充分证明了措施实施后产品运行的可靠性,解决了车辆领域在某型号项目上首次使用某国产MCU芯片的可靠性问题。

图7 台架测试

5 结束语

在同时使用某国产MCU资源比较多的情况下,系统初始化时,只需要打开AFIO、SRAM、FLASH模块的时钟,依据应用所需外设模块,初始化时阶梯式打开相关的外设时钟,并且不用的模块时钟保持关闭状态,以保证MCU上电时的正常运行。本文对某国产MCU使用中可靠性问题的分析与解决,为后续使用国产自主可控MCU奠定了坚实可靠的基础。只有完全真正做到自主可控,才能抵御外部环境变化带来的风险。同时在促进完全自主可控的国产化基础软硬件供应链良性发展方面起带头示范作用。

猜你喜欢
远光灯寄存器时钟
别样的“时钟”
基于CAN总线上远光灯的设计与实现
古代的时钟
Lite寄存器模型的设计与实现
分簇结构向量寄存器分配策略研究*
有趣的时钟
时钟会开“花”
远光灯性能测试与评价研究
正确使用你的“灯”
高速数模转换器AD9779/AD9788的应用