1、单片机原理与应用单片机原理与应用 College of Communication Engineering, Jilin University第第2章章 S12XS单片机内部结构单片机内部结构 2College of Communication Engineering, Jilin University2.1 S12XS单片机性能单片机性能2.2 CPU的构成的构成2.3 存储器存储器2.4 并行并行I/O 第2章 S12XS单片机内部结构单片机原理与应用单片机原理与应用 College of Communication Engineering, Jilin University2.1 S12
2、XS单片机性能单片机性能4College of Communication Engineering, Jilin University2.1.1 S12XS系列单片机内部模块Internal BusSCI1PWM 8CHANECT 12K SRAMHCS12 CPUBKP INT MMI CM BDM MEBI 4K BYTESEEPROM SIM msCAN3msCAN2msCAN1SCI0SPI 2orPWMCH4-7msCAN0or BDLCmsCAN4or IICSPI 1or PWMCH 0-3SPI 0PLL PIT 256K FLASEEPROMCRGVREGPIMAD0AD12
3、.1 S12XS单片机性能单片机性能5College of Communication Engineering, Jilin University1.16位位CPU2.内部内部RAM或或ROM:3.A/D模块:模块:16路路8位、位、10位或位或12位;位;4.CAN模块:支持CAN2.0A、B两种协议,1Mbps;5.TIM模块:标准定时器,输入捕捉、输出比较6.PIT模块:模块:4通道通道24位递减计数器位递减计数器7.PWM模块:模块:8通道通道8位,或位,或4通道通道16位,占空比可编程;位,占空比可编程;8.串口模块:两个串口模块:两个SCI,支持,支持LIN协议;一个协议;一个SP
4、I;9.中断模块:最多中断模块:最多20个带位中断的外部中断引脚,中断源个带位中断的外部中断引脚,中断源 细分细分为为7级;级;10.时钟模块:可通过内部锁相环使片内总线速度提升到最高时钟模块:可通过内部锁相环使片内总线速度提升到最高40MHz。2.1.2 S12XS系列单片机主要功能模块2.1 MC9S12XS单片机的性能单片机的性能2.1 MC9S12XS单片机的性能单片机的性能2.1.3 S12XS系列单片机引脚功能时钟,复位时钟,复位电源电源调试调试系列引脚1P17 图图2-2 112LQFP封装封装单片机原理与应用单片机原理与应用 College of Communication E
5、ngineering, Jilin University2.2 CPU的构成的构成9College of Communication Engineering, Jilin University2.2 CPU的构成的构成2.2.1 算术逻辑运算单元算术逻辑运算单元2.2.2 控制单元控制单元2.2.3 核心寄存器组核心寄存器组 10College of Communication Engineering, Jilin University单片机(微控制器)基本组成nMCU StructureThe CPU Registers file (寄存器组) Instruction latch/decod
6、e/branch (指令) Stack(栈) Interrupt(中断) Clock/Reset(时钟/复位)Memoryperipheral11College of Communication Engineering, Jilin University单片机(微控制器)基本组成nMCU StructureThe CPU Registers file (寄存器组) Instruction latch/decode/branch (指令) Stack(栈) Interrupt(中断) Clock/Reset(时钟/复位) Memoryperipheral12College of Communic
7、ation Engineering, Jilin UniversityA complete CPU13College of Communication Engineering, Jilin UniversityCPU the core of microcontrollernThe CPU contains:Arithmetic Logic Unit(算术逻辑单元)Register file (寄存器组)Control Unit (控制单元)Float point process UnitCache managementMemory Management Unit 14College of Co
8、mmunication Engineering, Jilin University2.2.1 CPU的构成 算术逻辑单元ALUALU - Arithmetic Logic UnitPerforms arithmetic functions such as add, subtract, multiply, divide logic functions such as AND,OR,NOT,XOR bit functions such shift, rotation4个要素Two input data - operands(操作数)instruction - operation(运算)Status
9、 - flag(标志位)one output data - result(运算结果)Quiz: 下面几个操作中,4要素分别为?A + B = CA B ?A = 115College of Communication Engineering, Jilin UniversityFlag(标志位)在哪里?执行单元产生的标志通常放在一个专用寄存器中Condition Code Register - CCRZ: zeroN: negativeO: overflowC: carry每执行一条指令,相应的状态位都会进行更新。每条指令影响到的状态位都是不一样的,需要查看芯片手册。CCR(Condition
10、Code Register,条件码寄存器),条件码寄存器)16College of Communication Engineering, Jilin University操作数(operands)在哪里?1: Registers寄存器用于临时保存/获取操作数任何CPU都包含若干通用/专用寄存器寄存器的数目和宽度是衡量CPU的重要指标 the more and bigger the register The better the CPU. 17College of Communication Engineering, Jilin University操作数(operands)在哪里?2: Dat
11、a Memory Memory并不是CPU的组成部分,对memory的访问要比对寄存器的访问慢很多18College of Communication Engineering, Jilin University运算结果存哪里?Generally, the same as the operands1: Registers19College of Communication Engineering, Jilin University运算结果存哪里?2: Data Memory20College of Communication Engineering, Jilin University 指令解析指
12、令解析 : 分析该指令需要执行何种操作 数据流向数据流向 : 确定该指令用到的操作数来源和产生结果的去向. 寻址方式寻址方式:计算机确定操作数或下一条要执行指令的地址的方法。Low addrHigh addr2.2.2 CPU的构成 控制单元21College of Communication Engineering, Jilin University地址与存储的基本概念Instr.EInstr.DInstr.CInstr.BInstr.A0 xA3360 xA3370 xA3340 xA3350 xA332 也可能是程序代码也可能是程序代码一段存储空间一段存储空间 请回忆一下请回忆一下C语言
13、的变量和指针的概念?语言的变量和指针的概念?0 x440 x550 x440 x330 xEF0 x560 x00040 x00010 x00020 x00030 x0000 存储的是数据存储的是数据22College of Communication Engineering, Jilin University获取指令:一个完整的CPU程序由指令序列构成,保存在程序存储器中。这些指令序列“依次”进入CPU执行下一条下一条待执行的指令地址保存在PC寄存器( Program Counter,即程序计数器),即程序计数器)中指令被取出后,PC更新指向下一条下一条指令(见下页)PC:程序计数器:程序计
14、数器23College of Communication Engineering, Jilin UniversityPC more than incrementPC = addressPC = PC + offset当出现跳转或子程序调用时:The PC is loaded with a new value (PC = address) or adjust with an offset. (PC = PC + offset)当指令序列出现分支时,PC将不再是按序递增到相邻的下一条指令 Quiz: 这种情况什么时候会出现?For(;)If . Else.Case: Sub_routine();R
15、eturn();中断进入和返回Code memoryPC 变化:顺序、分支和循环变化:顺序、分支和循环24College of Communication Engineering, Jilin UniversityPC more than incrementPC = addressPC = PC + offsetCode memoryHow to do that? - stack 堆栈堆栈此处的返回地址从何而来?Putchar();.Putchar();void Putchar() return(); PC 变化:子程序调用、中断变化:子程序调用、中断25College of Communic
16、ation Engineering, Jilin University堆栈堆栈是一段连续的存储器空间,堆栈按照后入先出后入先出的方式工作(Last In First Out) 只能向/从堆栈的顶部顶部加入或取出数据堆栈能够保持数据的顺序堆栈有两种基本的操作方式:推入PUSH: 将内容加入到堆栈顶端取出PULL : 将堆栈顶端的内容取出对于大多数CPU而言,“顶端顶端”是指低位的地址空间High addrLow addrTOP0 x100 x110 x120 x130 x10 is the first pushed item 0 x13 is the last pushed item26Coll
17、ege of Communication Engineering, Jilin University堆栈的作用n CPU硬件 使用堆栈来保存返回地址和寄存器上下文(register context) 中断n 汇编程序可以使用堆栈来保存局部变量,寄存器值 n C语言编译器使用堆栈来完成参数传递和返回值传递 C语言的函数调用27College of Communication Engineering, Jilin UniversityStack Pointer堆栈指针寄存器 堆栈顶端位置通过CPU内的堆栈指针寄存器确定 (SP,Stack Pointer) 堆栈指针的初始位置由程序代码确定,指向预
18、先划定的 堆栈空间的底部 CodeWarrior自动生成的初始代码自己编写汇编引导代码 如果要自己操作堆栈,记住:Once push must pullLast In First Out28College of Communication Engineering, Jilin University堆栈溢出堆栈空间和变量空间是使用同一端存储器空间 变量空间从低地址向高地址划分(例如C语言编程时声明的全局变量) 堆栈空间从高地址向低地址增长总大小 终究是有限的High addrLow addrMemory blockVariablesoccupiedstackoccupyIf the stack
19、grows too “deep”, it may over-write some contents in the variable space. Quiz: what will affect the depth of stack? 29College of Communication Engineering, Jilin University8-Bit Accumulators A and BIndex Register XIndex Register YStack PointerProgram Counteror 16-Bit Double Accumulator D771500000001
20、5151515PCSPYXDBA70EPAGE *70RPAGE *70PPAGE *60GPAGE *Condition Codes Register CCRS X H I N Z V C700 0 0 0 0 I P L2.2.3 CPU的构成 核心寄存器组30College of Communication Engineering, Jilin University1、16位累加器D或8位累加器A和B 作用:保存操作数和运算结果作用:保存操作数和运算结果 2、16位变址(间接寻址)寄存器X和Y 作用:多种寻址方式下的地址计算作用:多种寻址方式下的地址计算8-Bit Accumulator
21、s A and Bor 16-Bit Double Accumulator D7715000DBAIndex Register XIndex Register Y001515YX2.2.3 CPU的构成 核心寄存器组31College of Communication Engineering, Jilin University3、16位堆栈指针SP 作用:数据指针,指向堆栈空间作用:数据指针,指向堆栈空间4、16位程序计数器PC 作用:作用:Stack Point015SPProgram Counter015PC2.2.3 CPU的构成 核心寄存器组32College of Communica
22、tion Engineering, Jilin University5、16位条件码寄存器CCR : 状态标志位状态标志位Carry/Borrow (From MSB)OverflowZeroNegative (MSB = 1)Condition Codes Register CCRS X H I N Z V C70I-Interrupt MaskHalf Carry (For BCD)X-Interrupt MaskSTOP Disable0 0 0 0 0 I P LInterrupt priority level IPL(07)0:关中断:关中断2.2.3 CPU的构成 核心寄存器组33
23、College of Communication Engineering, Jilin UniversityCPU的构成 总结:总结:1)算术逻辑运算单元)算术逻辑运算单元ALU 2)控制单元)控制单元 3)核心寄存器堆)核心寄存器堆 register file单片机原理与应用单片机原理与应用 College of Communication Engineering, Jilin University2.3 存储器存储器35College of Communication Engineering, Jilin University2.3.1 基本存储空间基本存储空间2.3.2 扩展地址空间扩展
24、地址空间2.3.3 全局存储器映射全局存储器映射2.3.4 MC9S12XS128全局存储器映射全局存储器映射2.3 存储器存储器36College of Communication Engineering, Jilin University程序代码程序代码变量、堆栈变量、堆栈外设寄存器外设寄存器2KB EEPROM12KB RAM48KB FLASH复位、中断向量区2KB I/O空间$0000$0800$1000$4000$FFFF典型的64KB存储空间分配2.3.1 基本存储空间基本存储空间基本地址线是基本地址线是16位位,决定了基本寻址空间:决定了基本寻址空间:216B=64KB采用小模
25、式,整个应用采用小模式,整个应用程序都在程序都在64KB空间内空间内寻址,指针变量寻址,指针变量16位,位,程序紧凑,代码效率高。程序紧凑,代码效率高。37College of Communication Engineering, Jilin University2.3.2 扩展地址空间扩展地址空间1、S12X单片机寻址空间的扩展单片机寻址空间的扩展大多数控制应用大多数控制应用8MB8MB即可。即可。223B=128x64KB=8MBS12XSS12XS中中MMCMMC(存储器映射控制模块)采用分页管理机制,(存储器映射控制模块)采用分页管理机制,将寻址空间由将寻址空间由64KB(1664KB
26、(16位位) ),扩展到,扩展到8MB8MB(2323位)位)复杂应用复杂应用64KB64KB不够用,需要扩展不够用,需要扩展38College of Communication Engineering, Jilin University1KB EEPROM1KB EEPROMMC9S12XS1288KB RAM16KB FLASH16KB FLASH复位、中断向量区2KB I/O空间$0000$0800$0C00$4000$FFFF$FF004KB RAM$2000$10002KB 数据闪存8KB RAM128KB FLASH2KB I/O16KB FLASH$8000$C0002.3.2
27、扩展地址空间扩展地址空间典型的64KB存储空间分配39College of Communication Engineering, Jilin UniversityGPage是是7位寄存器(低位寄存器(低7位有效)位有效) 基本地址线基本地址线16位位+7位,达到位,达到23位,决定了扩展寻址空位,决定了扩展寻址空间是:间是: 223B=128x64KB=8MB2、全程地址寄存器全程地址寄存器GPage(地址:地址:$10)(G:globle) 对对 GPage的理解:的理解: GPage寄存器把寄存器把8M寻址空间分成了连续的寻址空间分成了连续的128个个64KB的存储器块儿,当连续读的存储器
28、块儿,当连续读/写超过写超过64KB空间时,空间时,需要改变需要改变GPage的值,给寄存器加的值,给寄存器加1或减或减1如:如:INC GPage。 2.3.2 扩展地址空间扩展地址空间40College of Communication Engineering, Jilin University访问访问8MB空间有专门指令:读指令:空间有专门指令:读指令:GLDAR, 写指令:写指令:GSTAR R代表代表CPU内部内部6个寄存器中任意一个:个寄存器中任意一个: A、B、D、X、Y和和SP GLDAA,GLDAB,GLDD,GLDX,GLDY,GLDS GSTAA,GSTAB,GSTD,G
29、STX,GSTY,GSTS 全程读写指令中没有全程读写指令中没有立即数寻址方式立即数寻址方式, 其他寻址方式都和非全程指令相同。其他寻址方式都和非全程指令相同。3、 对扩展空间的连续寻址对扩展空间的连续寻址2.3.2 扩展地址空间扩展地址空间41College of Communication Engineering, Jilin University 访问:访问: LDAA #$AA LDAB #$0F STAB GPAGE GSTAA $E000 GLDAB $E000 在在CodeWarrior的的Memory窗口中,利用窗口中,利用Address填写地址,填写地址,形式为形式为0FE0
30、00G来观察存储单元的变化。来观察存储单元的变化。 实例:实例:RAM全地址存取全地址存取2.3.2 扩展地址空间扩展地址空间42College of Communication Engineering, Jilin University9S12X MC9S12XS128256KB EEPROM(4*64K)1022KB RAM(1M-2K)(16*64K)4M FLASH(64*64K)2KB I/O空间$00-0000$00-0800$7F-FFFF$40-0000$10-00008KB 数据闪存8KB RAM128KB FLASH2KB I/O768KB 暂不用(12*64K)$14-0
31、000$20-0000可外扩2M存储器(32*64K)$00-0000$0F-E000$7F-FFFF$10-1FFF$10-0000$7E-0000$0F-FFFF$00-0800 给给连连续续存存储储空空间间分分区区2.3.3 全局存储器映射全局存储器映射43College of Communication Engineering, Jilin University 8MB空间为空间为程序空间程序空间分配了分配了4MB,需,需22(8+14)位地址线。位地址线。PPage是是8位寄存器位寄存器(8) , 4MB/256=16KB, 即:即:256个闪存页面,每页个闪存页面,每页16KB(1
32、4);S12X CPU默认有默认有连续的连续的48KB的寻址空间的寻址空间 从从0 x40000 xFFFF。S12X将地址将地址0 x80000 xBFFF 16KB开成一个闪存窗口,开成一个闪存窗口,用用PPage将将64KB寻址空间外的某一个寻址空间外的某一个16KB替换进来。替换进来。PPage=$FF,总是定位在,总是定位在$C000$FFFF;PPage=$FD,总是定位在,总是定位在$4000$7FFF;S12X128单片机片内有单片机片内有128KB闪存,闪存,PPage=$F8$FF。S12X单片机复位时,单片机复位时, PPage初值为初值为$FE。1、闪存页面管理寄存器(
33、、闪存页面管理寄存器(PPage: $15)2.3.3 全局存储器映射全局存储器映射44College of Communication Engineering, Jilin University 8MB空间为数据闪存分配了空间为数据闪存分配了256KB。EPage是是8位寄存器,位寄存器, 256KB/256=1KB,即,即256个闪存个闪存 页面,每页页面,每页1KB。S12X CPU默认有连续的默认有连续的2KB的寻址空间,从的寻址空间,从0 x08000 x0FFF。将地址将地址0 x08000 x0BFF 1KB开成一个闪存窗口,用开成一个闪存窗口,用EPage将将2KB寻址空间外的
34、某一个寻址空间外的某一个1KB替换进来。替换进来。EPage=$FF,1KB的地址是从的地址是从0 x0C000 x0FFF。S12X128单片机片内有单片机片内有8KB数据闪存,且只能用数据闪存,且只能用EPage访访问,问, EPage=$00$07。S12X单片机初始单片机初始 EPage=$FE,初始化时应修改,初始化时应修改EPage为为$00$07。2、数据闪存页面管理寄存器(、数据闪存页面管理寄存器(EPage: $17)2.3.3 全局存储器映射全局存储器映射45College of Communication Engineering, Jilin University 8MB
35、空间为空间为RAM空间分配了空间分配了1MB。RPage是是8位寄存器,位寄存器, 1MB/256=4KB,即,即256个个RAM 页面,每页页面,每页4KB。S12X CPU默认有连续的默认有连续的12KB的的RAM寻址空间,从寻址空间,从0 x10000 x3FFF。将地址将地址0 x10000 x1FFF 4KB开成一个窗口,用开成一个窗口,用RPage将将12KB寻址空间外的某一个寻址空间外的某一个4KB替换进来。替换进来。$FD、 $FE、 $FF连成连成12KB空间,对应空间,对应$1000$3FFF。S12XS128片内只有片内只有8KB RAM,无需,无需RPAGE管理管理。S
36、12XS单片机复位时单片机复位时 RPage=$FD,对,对S12XS128来说是来说是个无效值,单片机初始化时应使个无效值,单片机初始化时应使RPage=$FE。3、RAM页面管理寄存器(页面管理寄存器(RPage: $16)2.3.3 全局存储器映射全局存储器映射单片机原理与应用单片机原理与应用 College of Communication Engineering, Jilin University2.4 并行并行IO口口48College of Communication Engineering, Jilin University2.4 并行I/O模块 I/O是和外部接口的最基本的手
37、段(开关量); 并行I/O通常在微控制器中将8个IO口合成一组,对应一个字节的数据; 并行I/O通常是双向的,可以编程设置一组为输入或输出。 少数情况下可以按位设置其输入或输出。部分引脚为单向; 并行I/O引脚通常还和其他外设引脚复用MC9S12XS系列单片机的并行系列单片机的并行I/O 11个并口(个并口(A、B、E、K、T、S、M、P、H、J、AD),配置),配置方式分为两类;方式分为两类; 多数与其它模块复用引脚(多数与其它模块复用引脚(SCI、SPI、PWM、CAN、AD);); 可以通过写寄存器配置其方向(输入或输出)、使能低功耗输可以通过写寄存器配置其方向(输入或输出)、使能低功耗
38、输出以及上拉或下拉电阻;出以及上拉或下拉电阻;49College of Communication Engineering, Jilin University2.4 并行I/O模块一、一、A、B、E、K口口 每个端口有每个端口有8个个I/O引脚,除了引脚,除了K口有口有7个个I/O引脚;引脚; 每个端口均有相同配置。每个端口均有相同配置。u数据方向寄存器数据方向寄存器 DDRA: $0002 DDRB: $0003 DDRE: $0009 DDRK: $0033 按位控制:0-输入 1-输出,复位后清0,默认为输入口u数据寄存器数据寄存器 PORTA: $0000 PORTB: $0001 P
39、ORTE: $0008 PORTK: $0032 按位输出或输入:0-低电平 1-高电平50College of Communication Engineering, Jilin University2.4 并行I/O模块一、一、 A、B、E、K口口u上拉控制寄存器(上拉控制寄存器(PUCR:$000C)76543210PUPKEBKPUE0PUPEE00PUPBEPUPAE 按位控制输入引脚的上拉电阻(与输出引脚无关): 0-上拉禁止 1-上拉使能BKPUE: BKGD引脚内部电阻上拉控制51College of Communication Engineering, Jilin Univer
40、sity2.4 并行I/O模块一、一、 A、B、E、K口口u低功耗驱动寄存器低功耗驱动寄存器(RDRIV:$000D) 按位控制输出引脚的功耗(与输入引脚无关): 0-正常功耗 1-正常功耗的1/5 5V供电时驱动能力相当于一个TTL晶体管,不能向外界提供功率,需要靠外部供电来驱动输出设备;76543210RDPK00RDPE00RDPBRDPA输出逻辑10输出电压=4.2V输入 1-输出,复位后清0,默认为输入口u数据寄存器数据寄存器 PTT:$0240 PTS:$0248 PTM:$0250 PTP:$0258 PTH:$0260 PTJ:$0268 按位输出或输入:0-低电平 1-高电平
41、53College of Communication Engineering, Jilin University2.4 并行I/O模块二、二、 T、S、M、P、H和和J口口u输入寄存器输入寄存器(检测端口状态,用于检测负荷超载或电路短路检测端口状态,用于检测负荷超载或电路短路) PTIT:$0241 PTIS:$0249 PTIM:$0251 PTIP:$0259 PTIH:$0261 PTIJ:$0269u上下拉使能寄存器上下拉使能寄存器 PERT:$0244 PERS:$024C PERM:$0254 PERP:$025C PERH:$0264 PERJ:$026C 按位控制输入引脚输入引
42、脚的上下拉电阻使能(与输出引脚无关): 0-上下拉禁止 1-上下拉使能u低功耗驱动寄存器低功耗驱动寄存器 RDRT:$0243 RDRS:$024B RDRM:$0253 RDRP:$025B RDRH:$0263 RDRJ:$026B 按位控制输出引脚输出引脚的功耗(与输入引脚无关): 0-正常功耗 1-正常功耗的1/554College of Communication Engineering, Jilin University2.4 并行I/O模块二、二、 T、S、M、P、H和和J口口u上下拉选择寄存器上下拉选择寄存器 PPST:$0245 PPSS:$024D PPSM:$0255 PPSP:$025D PPSH:$0265 PPSJ:$026D 按位控制输入引脚的上下拉电阻选择(与输出引脚无关): 0-上拉电阻 1-下拉电阻u其它寄存器其它寄存器 WOMS($024E) WOMM($0256) 按位控制输出引脚的输出驱动: 0-推拉输出 1-开漏输出 55College of Communication Engineering, Jilin University2.4 并行I/O模块AD口口 16个I/O引脚; 两倍的数据方向寄存器、数据寄存器、低功耗驱动寄存器和上拉使能寄存器;