S32K144平台 MCAL MCU驱动 在EB中的相关配置解析以及实战。
多图预警!!!!!!!!!
MCUGeneral配置参数
①Mcu Development Error Detect:Mcu模块开发错误检测使能。
②Mcu Get Ram State API:获取RAM状态API使能。
③Mcu Init Clock API:初始化时钟API使能。
④Mcu No PLL:锁相环禁用。
⑤Mcu Enter Low-Power Mode:进入低功耗模式使能。
⑥Mcu Perform Reset API:执行复位API使能等。
MCURestReasonConf
导致MCU复位的原因有很多,如果硬件允许,Mcu模块可以获取复位的原因。McuResetReasonConf配置可以添加不同的Mcu复位原因。
McuModuleConfiguration配置
这个是重点的重点
第一步:McuModuleConfiguration→General配置
这里要对应着S32K144微控制器的时钟数来理解,比如这个RTC时钟32K
第二步:McuModuleConfiguration→McuClockSettingConfig配置
进入界面,点击+号添加 McuClockSettingConfig配置
进入McuModuleConfiguration→McuClockSettingConfig→General配置
注意这个General可不是上面那个MCU的General,而是你刚刚添加的一个时钟配置。
从上图你可以看到时钟配置有三个模式:Run\VLpr\Hsrun,可以简单理解为正常运行\超低功耗运行\超高速运行,每种模式对应的最高频率是不一样的。
这是竖着看,横着看你还会发现多出来了很多的标签栏:SOSC\SIRC\FIRC\PLL\SIM\PCC
这些都是对应的时钟,进入不同的标签栏下面,就是配置不同的时钟。
实例:SOSC,8M晶振通过PLL倍频变成80MHz
比如我们要使用外部时钟SOSC,8M晶振通过PLL倍频变成80MHz的内核时钟:
一般先看时钟树,需要配置什么参数:
然后进入到SOSC标签栏对其进行配置:
然后进入PLL标签栏下:输入倍频系数40,40*8=320M(图里写错了)/2=160M,再二分频就是80M,完美!!!
到这一步算是完成了系统时钟与锁相环,下一步就是对输出时钟进行全局的配置!
进入McuPeripheralClockCof标签栏下:一定要点这个小人,把所有都添加上,代表所有的外设我都分配好时钟了,没落下的。(一定要!!!不然报错!!!)
然后进入McuClockReferencePoint标签栏,这里你可以理解为映射可将外设时钟通过McuClockReferencePoint与其他BSW模块联系起来。
添加你需要的,还可以自己命名,用于什么用途就怎么改。
这个时候你会发现,哎呀这个RUN_SYS_CLK是啥呀?
还记得前面说的MCU三种模式下的频率嘛,进入General下,选择SPLL也就是咱们前面配置的PLL输出时钟。
完美!!!!!!
到这里可以说你的时钟配置就完成了,之后你添加什么外设或者什么驱动,别忘记到进入McuClockReferencePoint标签栏把该对应的都对应上就可以了。
重点还是要了解MCU的时钟树,以及相关的外设,软件的操作与配置属于技层面,对时钟的理解是术层面。
MCU API接口函数
Mcu_Init;
Mcu_InitClock;
Mcu_GetPllStatus(若使用PLL,直到PLL锁相环配置成功);
Mcu_DistributePllClock(若使用PLL);
Mcu_InitRamSection(按照具体需求,可不调用)
总结
细节真的很多,有些东西稍不注意就忘记了,而且EB这个软件设计上也是,很多相关的配置参数使能,非要隔这么远在不同的标签栏下,一不小心就忽略了,错误也不好排查,很吃熟练度和经验。