设计
MCU驱动程序为基本的微控制器初始化、断电功能、复位和其他微控制器所需的微控制器特定功能提供服务抽象层(MCAL)软件模块
时钟
初始化MCU时钟,锁相环,MCU时钟分配
系统时钟(Eiger高达180mhz, berina高达200MHz)可以从以下来源获得:
副锁相环PLL称为McuPLL1
主锁相环PLL的输出时钟称为McuPLL
IRC晶振称为McuIntOscRC16MHz
XOSC晶振称为McuExtQuartzOsc
Aux clock 0用于GTM, SDADC, SARADC时钟
Aux clock 1用于LFAST, DigRF PLL时钟.
Aux clock 2用于Flexray, SENT时钟.
Aux clock 3用于PLL0 input时钟.
Aux clock 4用于PLL1 input时钟.
Aux clock 5用于PSI5时钟.
Aux clock 6用于SYSCLK0 pin时钟
Aux clock 7用于SYSCLK1 pin时钟
Aux clock 8用于CAN clock 0 (MCAN,TTCAN).
Aux clock 9用于PIT/RTI时钟
Aux clock 11用于CAN clock 1 (MCAN).
Aux clock 12用于DSPI, LIN, Peripheral时钟
注意:内部RC振荡器代表复位后系统时钟的默认选择
XOSC表示外部振荡器时钟输出(8-44 MHz)
Primary Phase-Locked Loop (PLL0)从8-44 Mhz输入时钟源产生高速系统时钟
Frequency Modulated Phase-Locked Loop (FMPLL1)从38-78 Mhz输入时钟源产生高速系统时钟
Internal RC (FIRC)晶振标称频率为16mhz
初始化RAM段
从地址0x40060000开始的608 KB系统RAM可以用任何值初始化
从地址0x40070000开始的64kb系统RAM可以用任何值初始化
激活MCU低功耗模式
HALT模式以较高的唤醒延迟为代价,让uC在低功耗状态下等待,直到需要uC做某事,然后快速响应(即在中断事件的几个系统时钟周期内)。当uC进入HALT模式时,将执行以下可通过软件编程的动作:
内核时钟和系统内存关闭,
每个外设的时钟可能被禁用,
时钟源,如锁相环,外部和内部振荡器可以配置为关闭,
代码闪存可以关闭。
STOP模式是软件用来让uC在低功耗状态下等待,直到需要uC做一些不需要快速反应的事情。当uC进入STOP模式时,可以通过软件编程完成以下动作:冻结核心时钟、冻结附加核心时钟和几乎所有外设停止。
内核时钟和系统内存关闭
每个外设的时钟可能被禁用,源只能是IRC
外部振荡器可能被关闭。
代码闪存可以关闭
焊盘的输出可能被强制到高阻抗状态(I/O输出功率下降)
STANDBY模式是软件用来让uC在低功耗的最深状态下等待。当uC进入STANDBY模式时,核心时钟被冻结,系统时钟被关闭,主稳压开关和几乎所有外设都被关闭。
内核时钟和系统内存关闭
每个外设的时钟被禁用。
IRC可以选择关闭。这是芯片上可能的最低功耗模式。
外部振荡器关闭。
代码闪存已关闭
焊盘的输出被强制到高阻抗状态(I/O输出功率下降)
激活MCU复位
支持功能复位和破坏性复位
从硬件获取复位原因
GetResetReason返回在HW中注册的第一个错误
GetResetRawValue返回重置状态寄存器的映射(默认是破坏性的,如果破坏性中没有重置则可以使用)。
eDMA管理
在访问直接api之前,必须通过Mcu_Init接口初始化DMA驱动程序
eDMA控制寄存器(EDMA_CR), eDMA通道n优先寄存器(EDMA_DCHPRIn)和通道配置寄存器(CHCFGn)在所有DMA控制器的MCU驱动程序中初始化
增强型直接存储器访问(eDMA)控制器能够执行数据块从源到目的地的移动,而主机处理器的干预最少。源或目标可以是能够与eDMA一起操作的内存块或I/O块。像外设这样的源可以通过DMA通道之一请求传输
DMA通道多路复用器(DMA_MUX)允许将DMA源分配给DMA通道。
需要多路复用器,因为源对64个通道是多个的。
将多个DMA通道与同一源关联将导致DMA模块的不可预测行为。
配置
General

DMA Initialization in MCU该选项默认勾选,会在Mcu_Init接口里面初始化
Enable Notification Callback使能禁用控制监控单元Control Monitor Unit的通知扩展接口,勾选之后需要填入Mcu Clock Notification Callout的内容
Mcu Enable Production Error Reporting使能诊断错误报告和通知功能
Mcu_GetDeviceInfo API activation使能Mcu_GetDeviceInfo接口
Mcu_SscmGetStatus API activation使能Mcu_SscmGetStatus接口
Mcu_SscmGetMemConfig API activation使能Mcu_SscmGetMemConfig接口
Mcu_SscmGetUops API activation使能Mcu_SscmGetUops接口
Clockout external management如果不勾选,失能Mcu_OutputClockEnable和Mcu_OutputClockDisable接口,并且在Mcu_InitClock和Mcu_SetMode接口里面配置了时钟输出线。如果勾选,使能Mcu_OutputClockEnable和Mcu_OutputClockDisable接口,防止在Mcu_InitClock和Mcu_SetMode接口里面配置时钟输出线。

Peripheral Bus Abort Enable这个功能是调试用的,调试时候勾选,调试完成之后就不能勾选了,因为这是不安全的。它允许访问未使用的外设,这种访问是非法的,勾选了这个就不会在访问的时候产生读取异常和中断异常,还有一个其他的异常。
Use ALTMODE IRQ handler使用MCU内置的中断处理程序进行复位产生模块RGM(Reset Generation Module)备用模式中断。如果勾选了,Mcu_RgmAlternateMode_ISR必须映射到中断255,程序自己处理CMU事件,并在请求时返回通知,对于其他事件,调用ALTMODE IRQ handler callback里面填写的接口。如果不勾选,用户必须实现自己的处理程序来管理RGM备用模式事件。
Use FCCU Alarm IRQ handler使用mcu内置的中断处理程序进行FCCU(Fault Collection and Correction Unit)故障收集和纠正单元 报警中断。如果勾选,Mcu_FccuAlarm_ISR必须映射到中断488。处理程序自己处理CMU事件,并在请求时返回通知,对于其他事件,调用FCCU Alarm IRQ handler callback里面填写的接口。如果不勾选,用户必须实现自己的处理程序来管理FCCU报警事件。

Mcu Dev Error Detect开发者错误检测
Mcu Get Ram State Api使能接口Mcu_GetRamState
Mcu Init Clock由MCU模块初始化时钟,不勾选的话就不能在MCU模块里面初始化时钟,还要另外写代码去初始化时钟
Mcu No Pll取消硬件锁相环,MCU_DistributePllClock和MCU_GetPllStatus接口被禁用,MCU_GetPllStatus接口将返回MCU_PLL_STATUS_UNDEFINED的结果。
Perform Reset API使能Mcu_PerformReset接口
Mcu Perform Reset Callout增加一个回调函数,在执行Mcu_PerformReset()之前调用,回调函数名称需要写在Mcu Perform Reset Callout里面。
Version Info API使能获取版本信息接口
Mcu Configure Flash驱动程序配置包括延迟时间在内的全局Flash设置
Mcu ME Transition Check驱动程序检查转换到新模式的时间,如果启用了DET,转换模式超时将报告DET错误。
Mcu Enter Low Power Mode通过接口Mcu_SetMode API转换到低功耗模式
McuResetReasonConf
这堆重启原因是固定的,没法修改。
它是根据你的芯片生成出来的,一开始一个都没有,一直点加号到点不动就行。

McuModuleConfiguration
Mcu Module Configuration
里面的配置大多数跟电源管理相关

Mcu Clock Src Failure Notification开启时钟故障通知
Mcu Number Of Mcu Modes MCU可用的模式数量,也就是McuModeSettingConf的配置个数,在后面的配置里面有体现。
Mcu Ram Sectors MCU可用的RAM扇区数量,也就是McuRamSectorSettingConf的配置个数,在后面的配置里面有体现。
Reset Setting (1 -> 255) Mcu_PerformReset函数使用微控制器的硬件特性执行微控制器复位,但我这个芯片实现不了,就不勾选了。
External Crystal Frequency [Hz] (8000000 -> 44000000)晶体频率或外部参考频率

STANDBY Mode使能STANDBY模式
STOP Mode使能STOP模式
HALT Mode使能HALT模式
RUN3 Mode使能RUN3模式
RUN2 Mode使能RUN2模式
RUN1 Mode使能RUN1模式
这几个模式是跟芯片电源管理相关的,一般不会用到。

Mcu Transition Complete在模式转换完成的时候调用Mcu Mode Transition Complete interrupt callback里面填写的回调函数
Mcu Safe Mode安全模式中断回调Mcu Safe mode interrupt callback里面填写的回调函数
Mcu invalide Mode请求的模式如果无效,回调Mcu Invalid mode interrupt callback里面填写的回调函数
Mcu Invalid Configuration使能配置无效中断
Mcu Invalid Configuration of clock usage使能使用时钟配置无效中断
Mcu Invalid mode configuration interrupt (core configuration)使能使用内核配置无效中断,回调Mcu Invalid mode configuration interrupt callback里面填写的回调函数
Mcu clock failure interrupt使能时钟错误中断,处理所有的CMU错误的FCCU报警中断

McuPwrStandby在STANDBY模式时,会检查是否要将位于PD2(Power Domain 2)的外设保持在开机状态,其他几个也是类似,

跟上面的PD2类似
McuFlashControlller
Flash控制器设置的静态配置,不包括时钟相关的内容,可以有多个flash控制器

Port 0 Buffer Enable使能Port 0 PFlash线读取缓存
Port 0 Prefetch Limit (0 -> 3)端口Port 0 PFlash预取限制,0不进行预取,1miss预取,2或者3在miss或者hit的时候预取。
Port 0 Instruction Prefetch Enable使能Port 0指令预取
Port 0 Data Prefetch Enable使能Port 0数据预取
Port0 Master 0 Prefetch enable使能Port0 Master 0预取功能,其他的都是类似的

跟McuFlashPFCR1一样

Master 0 Access Protection (0 -> 3) 主机对flash进行读写访问的权限,0主机不能读写,1主机只读,2主机只写,3主机可读可写。其他的类似
McuClockSettingConfig
这是整个MCU模块配置的重中之重,因为这玩意涉及到了时钟!
Mcu Clock Setting Config

Mcu Clock Setting Id就是个序号,不用管
RUN Mode运行模式,就是McuModeSettingConf这里的配置,只能引用到其中一个。

McuClockReferencePoint
时钟引用点

时钟名称是被其他外设引用的

Mcu Clock Reference Point Frequency (0 -> 625000000)该时钟输出频率
Mcu Clock Frequency Select该时钟的参考源相当于这样就200M了

Mcu XTAL
外部晶振

ByPass XTAL Circuits有使用外部旁路晶振就勾选
Mcu Counter Oscillator Value (0 -> 255)使用的外部旁路晶振频率
Xtal Mask Interrupt Status使能外部旁路晶振中断状态,勾选了的话在Xtal Mask Interrupt Status里面填入回调函数
McuPLL0
Mcu PLL Clock Frequency PHI (Hz) (0 -> 400000000)锁相环0里面PHI的输出频率
Mcu PLL Clock Frequency PHI1 (Hz) (0 -> 175000000)锁相环0里面PHI 1的输出频率
Mcu Input Clock Pre-divider (PREDIV) (1 -> 7)分频器,也就是在PLL0前面先分频,这样的话就会对PHI和PHI 1起作用
Mcu Loop Multiplication Factor Divider (MFD) (8 -> 127)倍频器,就是在PLL0前面分频之后又倍频,这样的话就会对PHI和PHI 1起作用
Mcu PHI Reduced Frequency Divider (RFDPHI) (1 -> 63)分频器,只对PHI有用
Mcu PHI1 reduced frequency divider (RFDPHI1) (4 -> 15) 分频器,只对PHI 1有用
上面这几个东西,画个框图会好理解很多

Mcu Loss Of Lock Interrupt Enable使能MCU丢失锁中断
Mcu External Power Down Cycle Complete interrupt enable使能外部断电周期完成指示中断
McuPLL1

PLL Mode选择锁相环的模式,normal或者FM
Mcu PLL 1 Clock Frequency PHI (Hz) (dynamic range)锁相环1的输出频率
Mcu Loop Multiplication Factor Divider (MFD) (16 -> 34) 倍频器
Mcu PHI Reduced Frequency Divider (RFDPHI) (1 -> 63)分频器
Mcu Loss Of Lock Interrupt Enable使能MCU丢失锁中断
Mcu External Power Down Cycle Complete interrupt enable使能外部断电周期完成指示中断
Fractional Divider Enable使能PLL1的小数分频器
Fractional Divide Input (0 -> 4095) 小数分频器的分频因子
Modulation Frequency频率为频率为三角波调制,开了锁相环的模式为FM才有用
Modulation Depth (%) (0.25 -> 4)以百分比表示的调制深度值
Spread Selection向下传播还是中间传播
PLRC

Mcu Output Division Factor (1 -> 32)LPRC的分频因子
LPRC regulator Status使能LPRC稳压器
LPRC oscillator Status使能LPRC晶振
Mcu LPRC Clock Frequency (0 -> 1024000)LPRC的时钟频率
SswuCtrlReg

Mcu Prescaler Value for SSWU (1 -> 128) 只有一个SSWU的分频值
AuxClockSelector0

AUX Clock 0 Selector Source选择时钟源
AUX CLOCK 0 DIV 0 Enabled使能GTM的分频器0
AUX CLOCK 0 DIV 0 (1 -> 16) GTM的分频因子
AUX CLOCK 0 DIV 1 Enabled for Sigma Delta ADC clock GTM的时钟频率
AUX CLOCK 0 DIV 1 Enabled for Sigma Delta ADC clock使能SDADC的分频器
AUX CLOCK 0 DIV 1 (1 -> 128) SDADC的分频因子
Mcu SDADC Clock Frequency (0 -> 16000000) SDADC的时钟频率
AUX CLOCK 0 DIV 2 Enabled for SAR ADC clock使能SADC的分频器
AUX CLOCK 0 DIV 2 (1 -> 128) SADC的分频因子
Mcu SARADC Clock Frequency (0 -> 16000000) SADC的时钟频率
其实就是下图的几个时钟

AuxClockSelector1

AUX Clock 1 Selector Source选择时钟源
AUX CLOCK 1 DIV 0 Enabled for DigRF/LFAST Clock使能分频器
AUX CLOCK 1 DIV 0 (1 -> 128)分频因子
Mcu DigRF/LFAST Clock Frequency (0 -> 26000000)时钟频率
其实就是下图的时钟

AuxClockSelector2
这是配置 FlexRay的,所以在Fr模块里面就不再配置参考时钟了。

AUX CLOCK 2 DIV 0 Enabled for FlexRay使能FlexRay分频器0
AUX CLOCK 2 DIV 0 (1 -> 64) FlexRay分频器0的分频因子
Mcu Flexray PLL Clock Frequency (0 -> 80000000) 分频器0输出的时钟频率
AUX CLOCK 2 DIV 1 Enabled for SENT使能FlexRay分频器1
AUX CLOCK 2 DIV 1 (1 -> 64)FlexRay分频器1的分频因子
Mcu SENT Clock Frequency (0 -> 100000000) 分频器1输出的时钟频率

Pll0ClockSourceSelector

PLL0 Reference Frequency锁相环0的频率
AUX Clock 3 Selector Source锁相环0的参考时钟

Pll1ClockSourceSelector
PLL1 Reference Frequency锁相环1的频率
AUX Clock 4 Selector Source锁相环1的参考时钟

AuxClockSelector5

AUX CLOCK 5 DIV 0 Enabled for PSI5_f189_CLK使能PSI5_f189分频器
AUX CLOCK 5 DIV 0 (1 -> 8192) PSI5_f189分频因子(DIV+1),计算的时候不需要把分频数-1再填入
AUX CLOCK 5 DIV 0 Value Format (0 -> 3)PSI5_f189分频格式,分频格式是用来改变分频因子的。
分频格式为0的时候,真实的分频因子 = 填写的分频因子/1
分频格式为1的时候,真实的分频因子 = 填写的分频因子/10
分频格式为2的时候,真实的分频因子 = 填写的分频因子/100
分频格式为3的时候,真实的分频因子 = 填写的分频因子/1000
Mcu PSI5 f189 Clock Frequency (0 -> 6048000) PSI5_f189时钟频率
AUX CLOCK 5 DIV 1 Enabled for PSI5_f125_CLK使能PSI5_f125分频器
AUX CLOCK 5 DIV 1 (1 -> 1024)PSI5_f125分频因子
Mcu PSI5 f125 Clock Frequency (0 -> 4000000) PSI5_f125时钟频率
AUX CLOCK 5 DIV 2 Enabled for PSI5_1us_CLK使能PSI5_1us分频器
AUX CLOCK 5 DIV 2 (1 -> 1024) PSI5_1us分频因子
Mcu PSI5 1us Clock Frequency (0 -> 1000000)PSI5_1us时钟频率

AUX CLOCK 5 CDC 0 Enabled for PSI5_S_TS_CLK使能PSI5_S_TS分频器
AUX CLOCK 5 CDC 0 divider (1 -> 1024) PSI5_S_TS分频因子
Mcu PSI5_S_TS Clock Frequency (0 -> 25000000) PSI5_S_TS时钟频率
AUX CLOCK 5 CDC 1 Enabled for PSI5_DDSRx clocks使能PSI5_DDSRx分频器
AUX CLOCK 5 CDC 1 divider (1 -> 1024) PSI5_DDSRx分频因子
Mcu PSI5_S_DDSRx Clock Frequency (0 -> 25000000) PSI5_DDSRx时钟频率

AUX CLOCK 5 CDC 10 Enabled for PSI5_DDSR0 clock使能PSI5_DDSR0分频器
AUX CLOCK 5 CDC 10 divider (1 -> 1024) PSI5_DDSR0分频因子
Mcu PSI5_S_DDSR0 Clock Frequency (0 -> 25000000) PSI5_DDSR0时钟频率
AUX CLOCK 5 CDC 11 Enabled for PSI5_DDSR1 clock 使能PSI5_DDSR1分频器
AUX CLOCK 5 CDC 11 divider (1 -> 1024) PSI5_DDSR1分频因子
Mcu PSI5_S_DDSR1 Clock Frequency (0 -> 25000000) PSI5_DDSR1时钟频率
AUX CLOCK 5 CDC 12 Enabled for PSI5_DDSR2 clock使能PSI5_DDSR2分频器
AUX CLOCK 5 CDC 12 divider (1 -> 1024) PSI5_DDSR2分频因子
Mcu PSI5_S_DDSR2 Clock Frequency (0 -> 25000000) PSI5_DDSR2时钟频率
AUX CLOCK 5 CDC 13 Enabled for PSI5_DDSR3 clock使能PSI5_DDSR3分频器
AUX CLOCK 5 CDC 13 divider (1 -> 1024) PSI5_DDSR3时钟频率
Mcu PSI5_S_DDSR3 Clock Frequency (0 -> 25000000) PSI5_DDSR3时钟频率
AUX CLOCK 5 CDC 2 Enabled for PSI5_WDx clocks使能PSI5_WDx分频器
AUX CLOCK 5 CDC 2 divider (1 -> 1024) PSI5_WDx分频因子
Mcu PSI5_S_WDx Clock Frequency (0 -> 25000000) PSI5_WDx时钟频率

AUX CLOCK 5 CDC 20 Enabled for PSI5_WD0 clocks使能PSI5_WD0分频器
AUX CLOCK 5 CDC 20 divider (1 -> 1024) PSI5_WD0分频因子
Mcu PSI5_S_WD0 Clock Frequency (0 -> 25000000) PSI5_WD0时钟频率
AUX CLOCK 5 CDC 21 Enabled for PSI5_WD1 clocks使能PSI5_WD1分频器
AUX CLOCK 5 CDC 21 divider (1 -> 1024) PSI5_WD1分频因子
Mcu PSI5_S_WD1 Clock Frequency (0 -> 25000000) PSI5_WD1时钟频率
AUX CLOCK 5 CDC 22 Enabled for PSI5_WD2 clocks 使能PSI5_WD2分频器
AUX CLOCK 5 CDC 22 divider (1 -> 1024) PSI5_WD2分频因子
Mcu PSI5_S_WD2 Clock Frequency (0 -> 25000000) PSI5_WD2时钟频率
AUX CLOCK 5 CDC 23 Enabled for PSI5_WD3 clocks使能PSI5_WD3分频器
AUX CLOCK 5 CDC 23 divider (1 -> 1024) PSI5_WD3分频因子
Mcu PSI5_S_WD3 Clock Frequency (0 -> 25000000) PSI5_WD3时钟频率
AuxClockSelector8
外设CAN0时钟

AUX Clock 8 Selector Source选择CAN0时钟源
AUX CLOCK 8 DIV 0 Enabled for CAN_CLK使能CAN0分频器
AUX CLOCK 8 DIV 0 (1 -> 64) CAN0分频因子
Mcu CAN Clock Frequency (0 -> 400000000) CAN0时钟频率

AuxClockSelector9

AUX Clock 9 Selector Source 选择RTI时钟源
AUX CLOCK 9 DIV 0 Enabled for RTI_CLK 使能RTI分频器
AUX CLOCK 9 DIV 0 (1 -> 64) RTI分频因子
Mcu RTI Clock Frequency (0 -> 40000000) RTI时钟频率

AuxClockSelector11

Aux Clock 11 Selector Source 选择CAN1时钟源
AUX CLOCK 11 DIV 0 Enabled for CAN Clock使能CAN1分频器
AUX CLOCK 11 DIV 0 (1 -> 64) CAN1分频因子
Mcu CAN Clock 1 Frequency (0 -> 80000000) CAN1时钟频率

AuxClockSelector12

Aux Clock 12 Selector Source选择时钟源
AUX CLOCK 12 DIV 0 Enabled for DSPI_CLK0使能DSPI_CLK0分频器
AUX CLOCK 12 DIV 0 (1 -> 512)DSPI_CLK0分频因子
AUX CLOCK 12 DIV 0 Value Format (0 -> 3) DSPI_CLK0分频格式
Mcu DSPI Clock 0 Frequency (0 -> 100000000) DSPI_CLK0时钟频率
AUX CLOCK 12 DIV 1 Enabled for DSPI_CLK1 Clock使能DSPI_CLK1分频器
AUX CLOCK 12 DIV 1 (1 -> 16) DSPI_CLK1分频因子
Mcu DSPI Clock1 Frequency (0 -> 100000000) DSPI_CLK1时钟频率
AUX CLOCK 12 DIV 2 Enabled for LIN_CLK0 Clock使能LIN_CLK0分频器
AUX CLOCK 12 DIV 2 (1 -> 16) LIN_CLK0分频因子
Mcu LIN Clock0 Frequency (0 -> 100000000) LIN_CLK0时钟频率
AUX CLOCK 12 DIV 3 Enabled for LIN_CLK1 Clock使能LIN_CLK1分频器
AUX CLOCK 12 DIV 3 (1 -> 16)LIN_CLK1分频因子
Mcu LIN Clock1 Frequency (0 -> 100000000)LIN_CLK1时钟频率
AUX CLOCK 12 DIV 4 Enabled for Peripheral Clock使能FER分频器
AUX CLOCK 12 DIV 4 (1 -> 16)FER分频因子
Mcu Peripheral Clock Frequency (0 -> 100000000) FER时钟频率

McuClkMonitor
里面的时钟监视器有McuClkMonitor0和4-10,McuClkMonitor4-10配置方法都是类似的。

Pll Monitor使能PLL时钟监视器
RC Divisor Factor (0 -> 3)计算公式为:参考频率=16000000/(2^RC)当外部晶振频率小于 参考频率 + 0.5MHz时触发OLRI事件
HIGH Frequency Reference (0 -> 1023750000) 限制频率最大值
LOW Frequency Reference限制频率最低值
Monitored Clock Frequency被监控的频率,这是计算出来的,不需要我们手动填写
Mcu GTM Clock Monitor Enable使能GTM时钟监视器
HIGH Frequency Reference (0 -> 1023750000)限制频率最大值
LOW Frequency Reference限制频率最低值
Monitored Clock Frequency被监控的频率,这是计算出来的,不需要我们手动填写
McuRunConfig
运行配置,也是给人用来引用的,可以多建几个,引用不到的可以摆着。

把用到的运行模式勾选上就行

McuLowPower
低功耗配置,也是给人用来引用的,可以多建几个,引用不到的可以摆着。

把用到的运行模式勾选上就行

McuPeripheral
这东西内容非常多,电脑差点卡死,不过都是一些类似的内容,每一个外设的运行配置和低功耗配置

Mcu Per Run Config该外设引用的MCU运行模式配置
Mcu Per Low Pwr Config低功耗配置
McuModeSettingConf
你没看错,这模块的名字就是到一半的,在这里面的只是一些模式配置参考信息,可以理解为自己创造出一个模式来,是用来被引用的,只有一个能够被引用到,可以多创建几个,引用不到的就没用上。
Mcu Mode Setting Configuration

Mcu Mode可使用的MCU模式的数量
Operating Mode这个配置的模式
Mcu RC oscillator使能RC振荡器
External oscillator使能外部晶振
Mcu PLL Status将PLL0置于ON或OFF状态
Mcu PLL 1 Status将PLL1置于ON或OFF状态
Power Level (0 -> 1)表示该模式相对于其他模式的相对功耗水平,默认配置为0就行
System Clock Select系统时钟选择,可以是Internal RC oscillator 16Mhz IRC/Fast external crystal oscillator XOSC/PLL0_PHI/PLL1
Mcu Flash Status选择这个操作模式下的Flash状态NormalMode/PowerDown/LowPower
Output Power Down Control输出掉电状态控制,输出引脚变高阻态,只能用于STOP和SAFE模式。
Clock tree reference引用进入该模式时选择的时钟树,就是那个重中之重的地方。
Customize Wake-Up settings配置WakeUp模式增加唤醒时系统时钟频率。
SysClk0ClockSelector

AUX Clock 6 Selector Source选择备用时钟AUX(Auxiliary) Clock 6的时钟源
AUX CLOCK 6 DIV 0 Enabled for CLKOUT0使能Auxiliary Clock 6的分频器0,勾选之后AUX CLOCK 6 DIV 0 (1 -> 512)分频因子 就能用了

SysClk 1 ClockSelector

AUX Clock 7 Selector Source选择备用时钟AUX(Auxiliary) Clock 7的时钟源
AUX CLOCK 7 DIV 0 Enabled for CLKOUT1使能Auxiliary Clock 7的分频器0,勾选之后AUX CLOCK 7 DIV 0 (1 -> 512)分频因子 就能用了

McuSystemClockDivider

System Clock 0 Enable使能系统时钟0
System Clock Divider 0系统时钟0分频因子
McuSystemClk0-4的配置方法都是一样的,区别在于大家的时钟线
McuSystemClk0-0对应的是CGM_SC_DC0-4

McuFlash
Address Pipelining Control (0 -> 7)地址管道控制,从AHB端口读取的后续flash在之前读取的数据有效之前可以启动的周期数,一般写0就行
Read Wait State Control (0 -> 31) 要添加到读取的最佳情况下闪存阵列访问时间的等待状态的数量,这东西复位的时候会变成5,我们写5就可以。
Wake Up Cu s tom Settings
唤醒时候操作
External oscillator使能外部振荡器
Mcu PLL Status将PLL0置于ON或OFF状态
Mcu PLL 1 Status将PLL1置于ON或OFF状态
Mcu Flash Status选择新操作模式下的Flash状态
System Clock Selection选择参考时钟
Address Pipelining Control (0 -> 7) 地址管道控制,从AHB端口读取的后续flash在之前读取的数据有效之前可以启动的周期数,一般写0就行
Read Wait State Control (0 -> 31)要添加到读取的最佳情况下闪存阵列访问时间的等待状态的数量,这东西改不了,只能看
下面会有McuSystemClk0-4的配置,都是只能看不能改的。
CMU Settings
CMU0 Enable使能CMU0,其他都是一样的,CMU散落在不同的位置

Mcu System Clock Monitor Enable使能监视器1,这个监视器1在系统时钟的这里
HIGH Frequency Reference和LOW Frequency Reference填写的是监视器监视的时钟不能超过这个范围
McuRamSectorSettingConf
可以有好几个容器,每个容器的配置都是一样的
Use external linker symbols允许定义外部符号来处理这个RAM部分
Mcu Ram Default Value (0 -> 255) 要初始化的数据预设值
Mcu RAM Section Base Address表示RAM section的基址,地址必须对齐为4字节,要求如下:
Min Base Address (Eiger) - 1074135040 (0x40060000)
Max Base Address (Eiger) - 1074757631 (0x400F7FFF)
Min Base Address (Bernina) - 1074200576 (0x40070000)
Max Base Address (Bernina) - 1074266111 (0x4007FFFF)
Mcu RAM Section Size区域大小,单位为字节,最小为0,最大1015808(0xF8000)
Mcu RAM Section Base Address Linker Symbol/Mcu RAM Section Size Linker Symbol/Mcu RAM Section Size Linker Symbol都是区域大小,只要Mcu RAM Section Size填了就行
Dma and DMAMUX settings
eDMA Settings
Enable debug使能调试,一般不勾选
Enable round-robin channel arbitration勾选则启用通道轮循仲裁,不勾选则启用自定义固定优先级通道仲裁
Enable round-robin group arbitration勾选则启用轮循组仲裁,不勾选则启用自定义固定优先级组仲裁功能
HALT DMA operations勾选则延缓任何新渠道的启动,不勾选则是常规操作。
Halt on error使能在DMA错误时传输中断
Enable Continuous Link mode勾选则与自身相连的小环路通道链路在再次激活之前不经过通道仲裁。在小循环完成后,如果该通道启用了小循环通道链路,并且链路通道本身就是该通道,则该通道将再次激活。这将有效地应用小循环偏移量并重新启动下一个小循环。不勾选则与自身相连的小环路通道链路在再次激活之前经过通道仲裁。
Enable minor loop mapping勾选则TCDn.word2被重新定义为包含单独的使能字段、偏移字段和NBYTES字段。单个使能字段允许将小循环偏移量应用于源地址、目的地址或两者。当启用偏移量时,NBYTES字段会减少。不勾选则TCDn.word2被定义为一个32位的NBYTES字段。
Channel group 0-3 priority启用固定优先级组仲裁时的group0-3优先级级别
McuDmaChannelConfiguration
这里本来就会有超级多个DMA通道

我这里一共有32个,最多也是32个,没必要删除,倒是可以给他们改改名字

DMA Channel Id (0 -> 95)就是个ID改不了,在Dma and DMAMUX settings的列表里面看,一个容器里面有64个,计数从0开始。就像我这里有两个容器,McuDmaConfiguration_1里面的从0-63,McuDmaConfiguration_0的就从64开始了。

Enable channel preemption允许别的DMA通道抢占本DMA通道
Disable preempt ability不允许本DMA通道抢占其他DMA通道
Channel priority (0 -> 15)通道优先级,需要启用固定优先级仲裁
DMA Source指定DMA通道的DMA源,可以有很多的DMAMUX可以选,如果不使用该DMA通道可以选择预留。
DMA Channel Enable使能该通道
DMA Channel Trigger Enable使能通道触发
McuResetSource
里面分功能性重启源和破坏性重启源,里面的配置基本都不用动。

ResetEscalation

Destructive RESET Escalation (0 -> 15) 破坏性复位升级阈值
Functional RESET Escalation (0 -> 15) 功能性复位升级阈值
McuResetOpt

Mcu Reset Type选择McuPerformReset接口的重启类型,是功能性重启还是破坏性重启。
VoltageTemperatureDetection
电压检测和温度检测

McuVoltageTemperatureEnabled使能电压检测和温度检测模块,勾选了这个,下面的配置项才能配置。
System response on low voltage detection : LVD100_SB低压检测系统响应,可以选择不响应/功能性重启/破坏性重启/产生中断/产生FCCU事件/产生中断和FCCU事件
下面那堆高低压检测也是差不多的

Voltage Selection for IO main ring IO主环操作电压,5V还是3.3V
Voltage Selection for IO FlexRay ring IO FlexRay环操作电压,5V还是3.3V
PMC_AOUT_EN使能电源管理模块的模拟输出功能
TRIM_ADJ_OVER1 (0 -> 15)/TRIM_ADJ_OVER (0 -> 15)/TRIM_ADJ_OVER (0 -> 15)/AMUX_CTAT_TS_CTRL/ADC_AOUT_EN都不用改
Voltage Detection Mask Interrupt Status使能中断电压检测,勾选的话把中断回调函数填入Voltage Detection Mask Interrupt Callback
Temperature Detection Mask Interrupt Status使能中断温度检测,勾选的话把中断回调函数填入Temp Detection Mask Interrupt Callback
接口
Mcu_DistributePllClock激活锁相环时钟到MCU时钟的分发,在使用这个接口之前,需要用Mcu_GetPllStatus接口识别到是锁定状态。
Mcu_GetPllStatus获取锁相环的状态,有MCU_PLL_LOCKED/MCU_PLL_UNLOCKED/MCU_PLL_STATUS_UNDEFINED。调用这个函数之前需要调用Mcu_Init和Mcu_InitClock接口。
Mcu_GetRamState获取MCU的RAM状态,有MCU_RAMSTATE_INVALID/MCU_RAMSTATE_VALID。
Mcu_GetResetRawValue返回原始复位值,一般不会用到。
Mcu_GetResetReason获取复位原因,具体数值对应McuResetReasonConf里面的复位原因。

Mcu_GetVersionInfo获取版本信息
Mcu_Init初始化
Mcu_InitClock初始化时钟,初始化锁相环和指定的时钟。
Mcu_InitRamSection初始化RAM
Mcu_PerformReset这是个很重要的复位接口,跳转boot,软件复位,都是用的这个接口。
Mcu_SetMode设置电源模式
Mcu_Disable_CMU使能CMU
Mcu_eMios_Configure_GPREN使能EMIOSMCR寄存器的GPREN位,这个接口复杂且没啥用
Mcu_GetDeviceInfo获取设备信息