整车双核处理器底层驱动程序
谷子
|
2020.01.08
|
20000
+关注

1. MC_ME(Mode Entry Module)

1.1 主要功能

本模块驱动程序对晶振和外设进行基本的初始化,之后MCU进入DRUN模式(嵌入式软件的进入模式)。

1.2功能开发

1)启动外设:外设在每种模式下运行(除复位模式);

2)配置时钟:时钟源有三种途径:外部振荡器,外部晶振,内部RC振荡器。系统上 电时,内部RC振荡器作为默认的时钟。首先使能外部晶振并且作为系统时钟(40MHz),通过外部晶振作为时钟源配置双向锁相环。PLL0是主锁相环,提供非调频的时钟,并且为PLL1提供参考时钟,PLL1是一种典型的用于驱动系统的调频锁相环(FMPLL)时钟。通过配置锁相环得到系统时钟200MHz.之后,可以通过配置时钟产生模块(MC_CGM)为外设配置外设时钟。

3)启动内核:主核和检查核在每种模式下运行(除复位模式);

4)执行模式更改,重新进入DRUN模式以启动内核和时钟。

1.3与其他模块关系

为其他外设模块配置时钟。

2. FCCU模块

2.1主要功能

MPC5744P 使用故障收集和控制单元(FCCU),该单元提供了一条硬件通道,用于在检测到器件中发生错误时收集错误并将器件置于安全状态。本模块驱动程序主要为FCCU的安全输出引脚设置协议。

2.2功能开发

根据《MPC5744P Reference Manual》配置相关寄存器详见代码,不再赘述。

3. SIUL模块

3.1主要功能

该模块为通用的GPIO端口提供专用的控制,可以将其配置为输入或输出。SIUL2模块提供寄存器,使用户软件能够从配置为输入的GPIO pad读取值,并将值写入其中配置为输出的GPIO pad。

3.2功能开发

通过SIUL2_MSCRn、SIUL2_IMCRn寄存器配置GPIO口为不同的属性。SIUL2_MSCRn中OBE位使能输出,IBE位使能输入。SIUL2_IMCRn中SSS(Source Signal Select)位对于多复用选项的输入管脚选在信号源。以将具有不同复用选项的输入输出管脚配置为数字输入为例说明:

Pad为GPIO端口号,pad_in为IMCR号,config为MSCR寄存器中其他属性,config_in定义多路复用的配置。

例如:配置DSPI2的输入管脚

DSPI2的GPIO端口为GPIO2,IMCR号为47,SSS为0b0010,所以配置如下:

其中SIUL_PA2值为2,SIUL_IN_PA13值为47,SIUL_PULL_UP值为0x00030000,SIUL_SLEW_ENB值为0x00000000,SIUL_ALT2值为0x2.

3.3与其他模块关系

为其他外设模块所用到的管脚进行配置。

4. GPIO模块

4.1主要功能

本模块的主要功能是初始化GPIO端口。

4.2功能开发

1) 在GPIO.h头文件中,对所有模块的GPIO端口宏定义,比如设置为输入输出,电平拉高拉低,具体的实现由SIUL模块完成。例如:

2) 在GPIO.c文件中,初始化所有的GPIO端口。例如:

4.3与其他模块关系

调用SIUL模块中具体的端口配置函数。

5. FlexCAN模块

5.1主要功能

本模块主要实现CAN收发器的初始化,CAN报文的发送和接收。

5.2功能开发

1) 根据《MPC5744P Reference Manual》配置相关寄存器详见代码,不再赘述;

2) 根据硬件设计和应用软件需求确定CAN通道以及CAN消息的接收和发送。

3) CAN接收中断和发送中断,需要在中断向量表中做相应的配置。

5.3信号交互:

接收的报文

1) BMS报文

root_BMS_Msg1_0x167_100ms

root_BMS_Msg2_0x333_100ms

root_BMS_Msg3_0x164_10ms

root_BMS_Msg4_0x337_200ms

root_BMS_Msg5_0x339_200ms

root_BMS_Msg6_0x33B_100ms

root_BMS_Msg7_0x370_200ms

root_BMS_Msg8_0x371_200ms

root_BMS_Msg10_0x335_200ms

2) MCU报文

root_MCU_Msg1_0x136_10ms

root_MCU_Msg2_0x137_20ms

root_MCU_Msg3_0x138_100ms

root_MCU_Msg4_0x29B_100ms

3) EGS报文

root_EGS_Msg1_0x222_50ms

4) EAS报文

root_AC_Msg1_0x2E9_100ms

root_AC_Msg2_0x2EA_100ms

root_AC_Msg3_0x2EB_100ms

5) DCDC报文

root_DCDC_Msg1_0x2B0_100ms

root_DCDC_Msg2_0x2B1_100ms

6) OBC报文

root_OBC_Msg1_0x327_200ms

root_OBC_Msg2_0x329_200ms

root_OBC_Msg3_0x32B_200ms

发送的报文:

VCU报文

root_VCU_Msg1_0x171_20ms

root_VCU_Msg2_0x175_20ms

root_VCU_Msg3_0x312_200ms

root_VCU_Msg4_0x173_20ms

root_VCU_Msg5_0x0F5_10ms

root_VCU_Msg6_0x314_200ms

root_VCU_Msg7_0x292_100ms

root_VCU_Msg8_0x177_20ms

root_VCU_Msg9_0x179_20ms

main函数中初始化CAN控制器,在上述报文相应的周期任务内调度CAN发送函数和接收函数。

6. I2C模块

6.1主要功能

I2C总线是一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。这两根线分别是:SDA(串行数据线)和SCL(串行时钟线)。MPC5744P没有I2C模块,本驱动使用GPIO端口模拟I2C以实现与铁电存储器FM3104的通讯。

6.2功能开发

1)根据硬件设计分配硬件资源:GPIO92作为时钟管脚,GPIO93作为数据管脚。

2)根据FM3104手册I2C的时序实现I2C开始、停止、响应、数据传送的功能。根据FM3104不同功能实现I2C写单字节、读单字节、写内存、读内存、写寄存器、读寄存器的功能。

7. SPI模块

7.1主要功能

本模块主要实现SPI通信的初始化,SPI的数据发送和数据读取功能。本驱动实现与低边驱动芯片NCV7513B的数据通信。

7.2功能开发

1) 根据《MPC5744P Reference Manual》以及NCV7513的硬件手册配置相关寄存器详见代码,不再赘述;

2) 根据硬件设计分配配置GPIO端口:时钟信号DSPI2_SCK(GPIO0),从芯片NCV7513B1片选信号DSPI2_CS0(GPIO3),从芯片NCV7513B2片选信号DSPI2_CS1(GPIO4),输出信号DSPI2_SOUT(GPIO1),输入信号DSPI2_SIN(GPIO2)。

8. FlexPWM模块

8.1 主要功能

本模块主要实现功能:初始化FlexPWM模块,使能PWM输出,禁止PWM输出。

8.2 功能开发

根据应用软件的需求,本模块与应用软件的接口信号为驾驶模式开关信号,硬件资源分配为GPIO22管脚。

9. ADC模块

9.1主要功能:

本模块主要实现功能:初始化ADC寄存器并且激活ADC通道;启动ADC的正常转换;当指定的通道数据转换完成后读取结果并返回。

9.2功能开发

1) 根据《MPC5744P Reference Manual》配置相关寄存器详见代码,不再赘述;

2) 根据硬件设计和应用软件需求确定AD通道以及信号的采集和转换。

9.3交互信号

1) 加速踏板第一路信号:硬件资源分配ADC0_AN4 (GPIO70)

2) 加速踏板第二路信号:硬件资源分配ADC0_AN3(GPUO34)

3) 制动踏板第一路信号:硬件资源分配ADC0_AN1(GPIO24)

4) 制动踏板第二路信号:硬件资源分配ADC0_AN6(GPIO76)

5) 真空泵信号:硬件资源分配ADC0_AN5(GPIO66)

6) 附件电源电压:硬件资源分配ADC0_AN2(GPIO33)

7) 冷却水进口温度信号:硬件资源分配ADC0_ADC1_AN13(GPIO27)

8) 冷却水出口温度信号:硬件资源分配ADC0_ADC1_AN12(GPIO26)

在main.c文件中初始化ADC并且启动转换,周期任务内获取上述信号的值。

10. CTU模块

10.1 Demo驱动程序功能简介

交叉触发单元(CTU)无需使用 CPU 负载即可自动生成 ADC 转换请求。MPC5744P 具有两个 CTU 模块:CTU_0 控制 ADC0 和ADC1,CTU_1 控制 ADC2 和 ADC3 模块。支持双转换模式,在此模式下,转换命令将会同时发送给两个 ADC。如果使用双转换模式,软件必须确保不要为两个 ADC 分配相同的物理通道。支持交错式触发,在此模式下,两个 ADC 通过其触发器单独控制命令列表的执行。完成其中一个命令列表无需两个 ADC 都确认。软件可以将 CTU 配置为交错式触发以提高系统性能。本模块驱动程序提供以下功能:初始化CTU的基本启动设置,使能CTU输出,禁止CTU输出。

11. INTC模块

11.1 Demo驱动程序功能简介

中断控制器提供32个中断优先级和16个软件可设置的中断源。本模块驱动程序主要实现两个功能:初始化中断控制器和注册中断服务例程。

12. PIT模块

12.1 Demo驱动程序功能简介

周期性中断定时器,可生成中断和触发DMA通道。本模块驱动程序主要实现两个功能:为所需的时间段初始化PIT,为指定的通道启动和停止PIT。

13. SWG模块

13.1 Demo驱动程序功能简介

正弦波生成器,可以生成1 KHz至50KHz的正弦波信号。SWG的正常输出

为自由运行的特定振幅和频率的正弦波。本模块驱动程序初始化SWG模块的基本启动设置,使能触发,使能输出以及禁止输出。

14. LINFlex模块

14.1 Demo动程序功能简介

本模块驱动程序为LIN传输初始化/配置LINFLEX模块,为UART传输初始化/配置LINFLEX模块,发送/接收LIN基本帧,发送/接收UART基本帧。

15. UART模块

15.1 Demo驱动程序功能简介

MPC5744P的UART模块集成在LINFLEX模块,本模块驱动程序为UART传输初始化/配置LINFLEX模块,发送/接收UART基本帧。

16. eTImer模块

16.1 Demo驱动程序功能简介

本模块驱动程序初始化eTIMER0、eTIMER1、eTIMER2的基本启动设置。

原文附件
整车双核处理器底层驱动源代码.rar
精选留言
延伸阅读
更多报告干货
电动汽车
混动汽车
燃料汽车
太阳能车
智能驾驶
智能交互
智能网联
设计方案
算法开发
标定测试
生产工艺
开发工具
标准规范
专利解析
国标解析
汽车科普
汽车购买
汽车维护
汽车研发
写留言
4454
阅读
收藏
下载
评论文章
提交评论
回到顶部