本文简要介绍了基于 S32K376 MCU 将 BMS 和 VCU 集成在一个 ECU 中的动力总成域控制器参考设计。 BMS系统监控电池电压、温度和故障状态等车辆参数。 VCU 示例模拟踏板位置、齿轮、传感器以及车辆的其他功能。软件是基于实时驱动程序(RTD)开发的。该参考设计旨在提供一种机制,方便客户评估 Arm Cortex -M7 @320MHz 四核 MCU,并促进 BMS 和 VCU 硬件和软件开发。该参考设计还集成了OTA和引导加载程序功能,使程序升级成为可能。图1所示为s32k376系统框图。
图1:S32K37x系统框图
解决方案概述
图2显示了系统框图。模拟前端 (AFE) MC33774 用于监控电池状态。网关MC33665用于将SPI信号传输到传输协议链路(TPL3)。 SBC FS2633为S32K376及外部设备供电。高边器件(HSD)、低边器件(LSD)和多开关检测接口(MSDI)用于车辆控制单元(VCU)功能。 CAN、LIN、UART用于与其他ECU通信。实时时钟(RTC)用于读取实时时间以进行 BMS 充电状态(SoC)计算。
图2:系统框图
图3 显示了整个硬件电池监控单元 (BMU) 板并列出了每种类型的设备。详细的连接器接口可以在原理图中找到。
图3:硬件BMU板
硬件设计
详细的硬件设计请参考文档 AN747202-S32K39_37 MCUs Hardware Design Guidance(0.2).pdf和S32K376 BMU and VCU Integration User Manual.pdf 。
MC33774: 18 通道锂离子电池控制器 IC ASIL D
MC33665: 通用 BMS 通信 TPL 收发器和 CAN FD 网关
软件设计
S32K376 BMS&VCU软件基于AUTOSAR驱动程序,包括SW32K3 RTD、MC33774 BCC、MC33665 TPL PHY和SBC。它提供了一系列AUTOSAR特定的API,以方便BMS应用设计者实现BMS应用。
图4显示了 S32k376 BMS&VCU 解决方案软件框图。 BMS功能运行在功能核心CM7_0上,VCU功能运行在锁步核心CM7_2上,并通过IPCF监控另外两个核心。 OTA和保留的OBC功能运行在功能核心CM7_1上。引导加载程序和硬件 OTA 更新应用程序固件。 GUI显示BMS和VCU信息。所有驱动程序均基于 AUTOSAR RTD。
图4:BMS和VCU软件框图
BMS、VCU和OTA运行在不同的内核上。 core0是启动核心,它比core1和core2先启动。 core0 初始化所有系统和外设时钟并设置 GPIO 状态。使用 IVT 启动配置字(BCW)的 CM7-x-ENABLE 字段禁用 core1 和 core2,以避免 core1 和 core2 执行任何未初始化的外设。 core0 将正确的地址写入 MC_ME 模块并启用时钟后,core1 和 core2 启动。
三个核心项目是完全独立的。每个内核都有自己的启动文件、链接器文件和内存布局。编译完成后,会生成三个核心的elf文件。一个elf文件三核项目是可行的,但我们这里不实现它。
平台间通信框架(IPCF)是一个子系统,它使运行在多个同构或异构处理核心上、位于同一芯片或不同芯片上、在不同操作系统(AUTOSAR、Linux、FreeRTOS、Zephyr等)上运行的应用程序,通过各种传输接口(共享内存等)进行通信
IPCF 专为 NXP 嵌入式系统而设计,具有低延迟和占用空间小的特点。它公开了一个零拷贝 API,可供客户直接使用,以实现最大性能、最小开销和低 CPU 负载。该驱动程序通过仅在本地内存域中执行所有写入操作来确保本地和远程共享内存之间不受干扰。 CPU到CPU和定向中断就是用来实现这个功能的。 BMS和VCU运行在不同的内核中,我们使用IPCF通过CAN发送它们的成帧数据。
图5显示了项目计划工作流程并列出了每个任务的调度时间。
图5 项目编程流程图
S32K396 安全软件框架 (S32K396 SAF) 是一款软件产品,其中包含软件组件,为客户的安全应用程序(符合 ISO 26262 功能安全)奠定了安全基础。 S32K396 SAF是一个实现设备安全概念系统解决方案的框架。由于SAF对客户不是免费的,详细信息请参考S32K396_SAF_Safety_Manual.pdf和软件包 S32K396_SAF_0.8.0 。图 6 列出了 SAF 的每个组件。
图6 SAF组件
这是适用于 S32K3 平台的 S32K3 BMS SL SDK DEMO AUTOSAR 4.4 版本 1.0.0 版本。此版本中包含的 Bcc_775a_SL、Bcc_774a_SL、Bcc_772c_SL 和 Bms_TPL3_SL_E2E 库在测试和质量文档方面具有 DEMO 质量状态。演示库不合格并且包含部分功能集。它不适合在生产中使用。此安全库的演示版本以二进制格式提供,仅用于评估目的。 由于BMS安全库(SL)不是免费提供给客户的,详细信息请参考 RTD_BCC_774A_SL_UM.pdf和软件包 SW32K3_BMS_SL_SDK_4.4_1.0.0_DEMO 。
S32k376 BMS&VCU 解决方案支持外部安全机制1、2、3、5 来监控电池状态。客户必须购买BMS SL安装包才能使用。详细设置步骤请参阅NXP.com 中的快速入门指南文档。
S32K376有6M闪存空间来存储二进制代码,由三个2MB闪存块组成。 Bootloader 放置在第一个 flash 块中,三个内核项目通过链接文件和 MPU 分为一个 flash 块。 HSE 用于块 1 和块 2 中的代码切换。要启用硬件 OTA 功能,需要 A/B 交换 HSE 固件和安全启动辅助闪存 (SBAF)。
图7 s32k376 BMS和VCU工程内存映射
该项目在Core1中集成了OTA,并使用FreeRTOS进行调度。低层驱动程序基于以太网。对于启用了 OTA 的 S32K376 器件的用户来说,被动区域是可以读写的,并且当执行 OTA 更新时,新的 APP 总是写入被动区域,但没有程序可以在该区域执行。 A/B交换的过程由硬件执行,没有内存复制。
图8:S32K376硬件OTA更新流程
- OTA更新代理-APP_V1首先通过调试器下载到活动块1(0x00600000),然后开始运行。
- 进行OTA更新时,PC发送新版本的OTA更新代理APP_V2,APP_V1接收APP_V2的二进制文件并将其写入处于被动状态的block2(0x0800000)。
- 分区交换和重置后,APP_V1 切换到被动区域,新的 APP_V2 切换到主动区域并运行。
如果没有工具可以直接下载应用程序,则提供引导加载程序通过 CAN 总线更新应用程序。 S32k396_Bootloader 是一个独立的项目,将在闪存 block0 上进行闪存,如图28所示 。IVT 信息出现在低地址上,因此代码始终从 block0 启动。应用程序由引导加载程序下载到闪存块 1 上。
图形用户界面
该GUI显示从BMS和VCU系统通过CAN总线传输的数据。下面列出了实际操作说明。详细介绍请参考 S32K376 BMU和VCU集成用户手册.pdf 。
图 9:S32K376 BMS 和 VCU GUI
S32K376 BMS和VCU演示平台
图 10 显示了 s32k376 BMS 和 VCU 演示平台。要查看详细的设置指南,请参阅 ***S32K376 ****BMSVCU_QSG.pdf ***和入门页面。
图10:S32K376 BMS演示平台