一、MC9S12系列命名规则
MC9S12系列单片机是飞思卡尔半导体推出的基于 CPU12内核的 16位车用MCU,其命名规则如下:
MC | 9 | S12 | DG | 128 | B | M | FU |
---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
-
表示质量认定状态
MC=完全合格产品
XC=初始产品
PC=预质量产品
表示存储器类型为Flash。
表示内核类型。
表示系列
表示Flash大小
表示Flash版本标志,反映不同的擦写电压
-
表示工作温度范围。
C=-40 ℃ ~ 85℃; V=-40 ℃ ~ 105℃; M=-40 ℃ ~ 125℃
-
表示封装形式
FU = 80QFP
PV = 112LQFP
二、MC9S12XS128特性
MC9S12XS MCU的组成框架如下
其主要的硬件特性有:
16位 CPU 主频40~50MHz
内部存储器
128KB Flash
8KB RAM
8KB Data Flash外围设备
2个增强型串行通讯接口(SCI)
2个串行外设接口(SPI)
1个 msCAN 模块
2个8通道12位 A/D
8通道16位 定时器(TIM)
8通道8位PWM
4通道24位周期中断定时器(PIT)
具体芯片的结构框图如下:
三、引脚说明
MC9S12 有 144/112/80 三种引脚,我们先宏观看一下 MC9S12XS128 112引脚芯片的引脚图,具体如下:
我们主要关注他比较重要的几个引脚:
3.1 振荡器引脚
振荡器引脚 XTAL 和 EXTAL (47、46) 通过外接振荡器,输入周期性的脉冲,为整个 MCU 系统提供时间基准 ,外接时钟可以按如下进行分类:
外接时钟单元有两种接法, 第一种是外接晶振,第二种是外接时钟单元
外接晶振有无源晶振和有源晶振两种,单片机通过 EXTAL 输出晶振驱动信号到晶振,晶振产生周期信号输入到 XTAL 作为时钟基准,常用晶振接法如下:
这种接法的优点是接法简单,缺点是不那么容易起振,需要借助 C1,C2 起振电容
3.2 复位引脚
复位引脚对应的是单片机的 42 脚, 该引脚控制电平信号是低电平有效的双向控制信号 。该引脚做输入时,将其拉低,可将MCU复位成默认状态; 如果时钟监视器或者COP看门狗检测到内部故障,该引脚作为开漏输出引脚对外指示这种状态,通常会接入一个复位电路,按键按下后电平拉低,手动复位系统
3.3 背景调试引脚
背景调试引脚 BKGD 位于23脚, 该引脚采用特殊的自定时协议接收串行的背景调试命令 ,并发送命令执行结果。该引脚设定为输入时,内部设有有源上拉,但是无上拉开、关控制。
3.4 模式选择输入引脚
模式选择引脚分别为 MODA 、MODB 、MODC 对应 38、37、23 引脚, 这 三个引脚在复位期间的状态决定了MCU的运行模式 ,复位期间,MODA、MODB 处于下拉状态,模式引脚在复位信号上升沿采样并锁存到模式寄存器,对应的模式控制如下表
MODC | MODB | MODA | 模式 | ADDR | DATA | BDM |
---|---|---|---|---|---|---|
0 | 0 | 0 | 特殊单芯片模式 | 0 | 0 | 激活 |
0 | 0 | 1 | 特殊窄扩展模式 | 16 | 8 | 允许 |
0 | 1 | 0 | 特殊测试模式 | 16 | 16 | 允许 |
0 | 1 | 1 | 特殊宽扩展模式 | 16 | 16 | 允许 |
1 | 0 | 0 | 普通单芯片模式 | 0 | 0 | 允许 |
1 | 0 | 1 | 普通窄扩展模式 | 16 | 8 | 允许 |
1 | 1 | 0 | 外设模式 | — | — | — |
1 | 1 | 1 | 普通宽扩展模式 | 16 | 16 | 允许 |
3.4.1 普通运行模式
普通模式共分三种,都是应用系统开发结束后的最终运行模式。它们都支持背景调试模式(BDM),但对于某些操作必须首先将BDM使能,然后再激活后才能通过BDM命令进行调试。
普通单芯片模式: 该模式无外部总线,端口A、端口B和端口E被设置成通用I/O接口。端口E的两个引脚PE1和PE0仅能工作在内部上拉的输入方式,其它22个引脚均可设置为输入或输出,不过复位后它们均被默认设置为高阻输入方式,另外复位后,端口E的上拉有效,端口A和端口B的上拉被禁止。
普通宽扩展模式:端口A和端口B为外部地址和数据总线,其中A15A8和D15D8分时使用端口A的8个引脚,A7A0和D7D0分时使用端口B的8个引脚。R/W等总线控制信号复位后默认有效。
普通窄扩展模式:端口A和端口B为16位外部地址总线,其中端口A输出高8位(A15A8),其中端口B输出低8位(A7A0),8位外部数据总线D7~D0与高8位地址线分时复用端口A的8个引脚。
3.4.2 特殊运行模式
特殊模式主要用于系统开发和器件检验。
特殊单芯片模式:该模式可用于强制MCU激活BDM,以允许通过BKGD引脚进行系统调试。在该模式下,MCU不像在其它模式下那样,取中断向量,然后执行应用程序代码等,而是以激活的BDM固件接受来自BKGD引脚的串行命令,并控制CPU的运行。该模式下没有外部总线。MCU作为一个独立器件运行,所有程序和数据存储空间均位于片内,外部接口均可作为通用I/O。
3.4.3 单片运行模式
单片运行模式是MC9S12单片及最常用的一种运行模式。系统复位时,CPU检测到MODA(PE5)和MODB(PE6)引脚为低电平时进入单片运行模式。单片运行模式又分为普通单片模式和特殊单片模式。普通单片模式是正常运行应用程序时应使用的模式,特殊单片模式是指BDM调试模式。进入特殊模式时,要求单片及复位时引脚MODC(BKGD)为低电平。通常,当单片及输入引脚浮空时,CPU默认高电平,BKGD引脚上的低电平是由BDM调试工具的相应引脚提供的。故可以理解为,当插上BDM头时,可进入特殊单片模式;当不插BDM头时,自动进入普通单片模式。
注意,进入单片模式还是扩展模式,或者什么其它模式,是在复位时,复位信号上升沿锁存MODA、MODB等引脚上的输入电平状态到运行模式寄存器(MODE Register)中相应位来实现的,模式寄存器的默认地址为$000B。在运行过程中,应用程序时可以动态的在单片模式和扩展模式之间相互切换的,方法是向运行模式寄存器写入不同的运行模式控制字。
3.4.4 扩展运行模式
扩展运行模式又有普通运行模式和特殊运行模式之分,其区别是有些寄存器只能在特殊模式下读写。
80引脚的单片机A、B、K口都没有引出,故不能使用扩展运行模式。
S12单片机有8种运行模式,还有扩展仿真模式,可以看到,总线上的控制信号,可接逻辑分析仪用于调试;还有测试模式、外设模块测试模式等用于芯片生产中的测试,这些模式一般用不到。
3.4.5 低功耗模式
除了上面的运行模式,MC9S12XS128 还有三种低功耗模式,该模式通过另外的寄存器来控制,三种低功耗模式如下:
模式 | 功能 |
---|---|
STOP Mode | 所有时钟和振荡器停止运行, 27℃典型电流值30uA。 |
Pseudo STOP Mode | 振荡器仍然运行,外设关闭, 27℃典型电流值350uA。 |
WAIT Mode | 内部地址、数据总线停止运行,外设可配置关闭,当所有模块有效,最大消耗40mA电流;如果只有实时中断有效,最大消耗5mA电流。 |
3.5 中断请求引脚
3.5.1 可屏蔽中断请求引脚
可屏蔽外部中断输入引脚 IRQ(55脚),可以用于从STOP或WAIT模式唤醒MCU
3.5.2 不可屏蔽中断请求引脚
不可屏蔽外部中断输入引脚 XIRQ(56脚),可以用于从STOP或WAIT模式唤醒MCU
3.7 供电电源引脚
引脚名称 | 引脚号 | 额定电压 | 描 述 |
---|---|---|---|
VDD1,2 | 13,65 | 2.5V | 内部电压调节器输出电源和地 |
VSS1,2 | 14,66 | 0V | 同上 |
VDDR | 41 | 5.0V | 外部电源和地,供给引脚驱动器( PortA、B、E、H )和内部电压调节器 |
VSSR | 40 | 0V | 同上 |
VDDX | 107 | 5.0V | 外部电源和地,供给引脚驱动器 |
VSSX | 106 | 0V | 同上 |
VDDA | 83 | 5.0V | A/D工作电源和地 |
VSSA | 86 | 0V | 同上 |
VRL | 85 | 0V | A/D参考电源和地 |
VRH | 84 | 5.0V | 同上 |
VDDPLL | 43 | 2.5V | 为PLL工作提供电源和地。 |
VSSPLL | 45 | 0V | 同上 |
VREGEN | 97 | 5V | 内部电压调节器有效(H)/无效(L) |
四、存储器结构
4.1 地址空间组成
MC9S12XS128 单片机地址空间如下图:
在 CPU12 复位时,I/O寄存器占用从 $00 开始的 1KB 地址空间( $0000~ $03FF),虽然用户可以将I/O寄存器重新定义到前32KB地址空间的任何一个2KB空间的前 1KB ,但最好不要这样做。因为I/O空间放在 $00 开始处,使得读写 $0000 到 $00FF 这256个 I/O 寄存器可以使用直接寻址方式,直接寻址方式的指令比扩展寻址方式短1个字节,速度会比读写其它地址空间快一些。别的存储器模块如EEPROM、RAM和部分Flash也都可以定义到其它地址空间。不是特别必要时,尽量使用系统的默认设置。
从 $0400 到 $1000 是 EEPROM 空间。一些 CPU12 构成的单片机有 4KB 的 EEPROM,因为从 $0000 开始的 1KB 空间被 I/O 寄存器占用了,不重新定义EEPROM的地址的话,实际可以使用的 EEPROM 只有 3KB。若一定要使用片内的 4KB EEPROM,则要重新将EEPROM定义到其它空间,或者将I/O寄存器移到其它空间。
从 $1000 到 $3FFF 是 RAM 空间,不同型号的 CPU12 构成的单片机有不同的片内RAM配置。从 2KB、4KB、8KB到12KB。MC9S12DP256有12KB的RAM,占据 $1000 到 $3FFF 的全部空间,而 MC9S12DG128 默认为 $0000到 $1FFF,我们在监控程序中定义到 $2000 到 $3FFF 为 8KB
$4000 到 $FFFF 的 48KB 为 Flash 存储器空间,分成3个 16KB 空间。
最后16KB空间的最后256B,即 $FF00 到 $FFFF 是中断向量表空间。
CPU12构成的单片机还有一种特殊工作方式(特殊单片方式或特殊扩展方式)。被称之为调试方式或BDM方式。在这种方式下,CPU12用内部的256B的ROM将 $FE00 到 $FEFF 的前 256B 的 Flash 空间覆盖掉。当然覆盖掉的空间在BDM模式下还是可以通过BDM指令访问到的
4.2 内存空间扩展
CPU12 构成的单片机 片内Flash可以超过64KB寻址空间达到128KB、256KB或者512KB ,参见上图,256KB的Flash先 被分成64KB一块,共4块(Block0~Block3) ,每块还可以细分为16KB一页,共16页。每夜再细分为4KB、2KB、1KB或512B一段。
片内Flash在64KB级以上的CPU12构成的单片机,有一个存储器页面寄存器PPAGE,该寄存器为5位,最多可管理32个16KB存储器页,故CPU12单片机最多可以有512KB片内Flash。
MC9S12DP256的256KB Flash可分为16KB存储器,每个存储器页面编号为 $30~ $3F 的某个值。CPU12在64KB内存的 $8000 到 $BFFF 这一段开了一个窗口,永远只能看到页面寄存器的某一页,这里指 $30~ $3D 这14个页面。256KB的Flash中, $3F 这一页永远定位在 $C000 到 $FFFF 这一段,$3E 页永远定位在 $4000到 $7FFF 这一段,另外14页只能通过 $8000 到 $BFFF 这一窗口访问,Flash的换页是通过向PPAGE寄存器(地址为 $30 )写入页面编号实现的。
Flash存储器页面寄存器 PPAGE 的值 $00 ~ $2F 留给扩展方式下使用外部存储器时对外部存储器分页使用。
4000 到 FFFF 是 CPU12 构成的单片机又连续 48KB 的程序空间 (存放程序代码),对于 Flash 低端的 512B 或者 1KB、2KB、4KB 空间可以通过写保护寄存器保护起来,即3E这一页,从 4000 开始的 512B 或者 1KB 、2KB、4KB 空间页面可以通过写保护寄存器保护起来,使之成为不可局部擦除的,除非整体擦除。32、36、3A页面也有同样的特性,但地址从 8000 开始。
对于 Flash 的高端地址,Flash 也可以按一定的大小保护起来, 保护的含义是禁止局部擦除 。高端的保护总是从最高地址开始的某一指定大小的存储块,被保护存储块的大小可以是 2KB、4KB、8KB 或整个 16KB ,也可以是全部 Flash,可以对Flash和EEPROM加密,这部分管理Flash和EEPROM的寄存器不在I/O寄存器空间,在BDM模式下的FF00~ FF07处。