3.6.1创建、配置RAM
1)配置MCU通用配置项
MCU的通用配置项可参考以下配置:
各配置项的说明如下:
Wake Up Factor Clear Isr: 是否在唤醒的中断服务函数中清除Wakeup Factor
Wake Up Factors Clear Centralised: 是否在shutdown前集中集中清除Wakeup Factor
Sw Reset Call Api: 是否要实现Reset前的用户Callout函数(MCU_RESET_CALLOUT)
Retention RAM Source Address: 目前没有用
Perform Reset Api: 是否使能复位MCU API函数
Loop Cnt: MCU操作某些寄存器时,需要写下多次,这次使用默认的次数就可以
Init Clock: 在MCU初始化时需要要初始化时钟
Get Ram State Api: 目前代码不支持,不要勾选
Cvm High Voltage Detect / Cvm Low Voltage Detect:
是否使能MCU内核电压检测,如果使能,当电压过高或过低时,系统会向DEM报告错误。
Copy to Section: 目前没有功能
Clmx Operation: 是否使能时钟异常检查
Clmx Monitorring Clock Accuracy: 被采样时钟的精度,以百分比填入
Clmx Sampling Clock Accuracy: 采样时钟精度,以百分比填入
MCU有个时钟异常检测模块,它使用一个采样时钟对输入时钟的上升沿进行采样16次,然后设置一个高、低门限值,当采样的结果低于或高于门限值时,向DEM报告一个错误。
RAM Mirror: 是否使能镜像写入
当使能镜像时,程序会创建另一份寄存器的备份。当写入寄存器值时,也会同时写入镜像备份。
最终程序会调用Mcu_CheckHWConsistency去检查镜像的值与寄存器的值是否一致,不一致则报错。
- 创建RAM配置
2)配置RAM
以F1KM R7F7016533ABG为例,它的local RAM有512K, global RAM 192K,Retention RAM 64K.
Local RAM: local RAM就是程序平常使用的RAM,在DeepStop模式下内容会丢失。
Global RAM:主要用于DMA的源地址和目的地址使用,在DeepStop模式下内容会丢失。
Retention RAM与Local RAM的差别在于,在DeepStop模式下Retention RAM内容不会丢失,其他部分与Local RAM一致。
3.6.2配置MCU模块RAM
3.6.3创建、配置MCU模块Clock
1)创建系统的所有时钟配置项
2)配置CPU时钟
查看datasheet,我们使用PLL0通过1倍分频后作为系统的主时钟,而PLL0的时钟源来自于外部的晶振24M。根据这些信息配置MCU时钟项。
3)配置PLL0频率
根据手册,PLL0OUT = PLL0CLKIN * Nr / Mr * 1/6 = 80M, 根据这些信息配置PLL0.
CPLL0OUT = PLL0CLKIN * Nr / Mr * 1/2 = 240M.
PLL0CLKIN = MainOSC(外部晶振24M)
4)配置PLL1频率
根据手册,PLL1OUT = PLL1CLKIN * Nr / Mr * 1/6 = 80M, 根据这些信息配置PLL1.
CPLL1OUT = PLL1CLKIN * Nr / Mr * 1/2 = 240M。
PLL1CLKIN = MainOSC(外部晶振24M)
5)配置Awo域时钟
配置ADC0时钟
ADC时钟 = MainOSC / 2 = 24M / 2 = 12M
配置TAUJ时钟
TAUJ时钟 = MainOSC / 1 = 24M / 1 = 24M
配置Wdg时钟
Wdg时钟 = Low Speed IntOsc / 128 = 240k / 128 = 1875
6)配置Iso域时钟
配置ADC1时钟
ADC1时钟 = PLLCLK2 / 1 = 40M / 1 = 40M
PLLCLK2 = PPLLOUT / 2 = 80M / 2 = 40M
更多详细信息,请查看下面的文章。