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的基本启动设置。