这部分的主题是:复位和系统初始化。
F28M3x的复位图如上图所示。丢失时钟会引起引起M3,C28的不可屏蔽中断,外部引脚复位信号会引起系统服务,电源异常会引起相应的系统复位。C28调试器会引起C28复位。M3
CPU的软件和调试信号能引起M3和C28的复位。总结一下,正常情况下,M3可以控制C28复位。在F28M3x中,M3其主导控制作用,C28算M3的一个实时控制器单元。
F28M35x的时钟系统如上图所示,F28M35x公用一套时钟,分频为PLLSYSCLK之后分给主控子系统,控制子系统和模拟量采集系统。其中主控子系统和控制子系统的时钟由M3的核来配置,模拟量子系统的时钟由C28的核来配置。C28x的时钟即为PLLSYSCLK。在配置好时钟之前为什么配置系统时钟的程序可以运行?因为只要上电了,时钟源就会产生时钟,PLLSYSCLK就会有时钟,此时的时钟有个默认设置,当配置系统时钟之后,时钟由默认值变为设定值。
主控子系统时钟如图所示,看门狗直接使用晶振时钟,M3SSCLK为经过分频后接入M3的时钟,M3的外设大多工作在此时钟频率下。USB和CAN采用单独的时钟。
控制子系统时钟跟F28x相似。系统时钟分给为低速时钟和高速时钟。低速时钟用于SCI,SPI,McBSP外设,高速时钟用于模拟量模块的软件启动AD转换模块(SOC:Start
of Conversation)所用的时钟。
在拥有C28核和M3核的一个芯片中,一个很重要的问题就是引脚的多路复用如何进行。这里涉及到GPIO
Multiplexer的机制。如图所示,引脚属于主控子系统还是主控系统功能是由主控系统来决定的。一旦分配的引脚之后,该值就锁定了,这样做是为了使得系统更安全。分配给相应的子系统后再有子系统自行决定引脚的含义。
比如F28M35x的引脚分配给了子系统,它们各自可以继续对引脚所对应的信号进行再定义。
Pin
If assigned
to the Master
Subsystem
If assigned
to the Control
Subsystem
GPIO4
M3GPIO
SSIORX
CAN0RX
U1DSR
C28 GPIO
EPWM3A
GPIO5
M3 GPIO
SSIOTX
CAN0TX
U1RTS
C28GPIO
EPWM3B
系统初始化主要做的就是这些工作,定义时钟,定义引脚。