关于tresos Studio(EB)的MCAL配置之MCU

设计

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获取设备信息

相关推荐
Yolo566Q1 小时前
R语言与作物模型(以DSSAT模型为例)融合应用高级实战技术
开发语言·经验分享·r语言
源代码•宸9 小时前
深入浅出设计模式——创建型模式之原型模式 Prototype
c++·经验分享·设计模式·原型模式
月阳羊16 小时前
【硬件-笔试面试题】硬件/电子工程师,笔试面试题-50,(知识点:TCP/IP 模型)
经验分享·嵌入式硬件·网络协议·面试·职场和发展
LDAHG1454217 小时前
AI绘画模型生成 MZ 日系美感人像/极致cos
经验分享·ai作画·电脑
晨非辰17 小时前
#C语言——学习攻略:深挖指针路线(四续)——函数指针数组--转移表
c语言·开发语言·经验分享·学习·visual studio
草莓熊Lotso17 小时前
【数据结构初阶】--二叉树(五)
c语言·数据结构·经验分享·笔记·其他
汇能感知21 小时前
光谱相机自动调焦曝光控制
经验分享·笔记·科技
IT摆渡者1 天前
Wireshark攻防实战
linux·服务器·经验分享·笔记