第一章 MCU 内部架构
第一节 认识MCU及其内部架构
第一部分 MCU 简介
MCU:微控制单元(Microcontroller Unit) ,又称单片微型计算机(Single Chip Microcomputer )或单片机,是把中央处理器(Central Process Unit,CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。
通用MCU:包含了各种常见的外设,可以执行指定的各种用户程序并完成指定的功能,应用在通用领域而非专用领域。
常见MCU品牌:宏晶科技STC、兆易创新GigaDevice、飞思卡尔Freescale、意法半导体ST、瑞萨Renesas等等。
第二部分 MCU 内部架构
1、MCU DATASHEET
每种芯片都有所对应最权威的芯片数据手册,里面包含了各种重要的信息;其次,该手册可以通过芯片的官方网站或第三方的ALLDATASHEET网站进行获取;把翻看DATASHEET培养成一个良好且重要的习惯,在以后的实践及项目中是举足轻重的。
2、宏晶科技 STC89C52
外设:UART串口、Timer定时器、WDT看门狗、GPIO等;
存储器:RAM、Flash、EEPROM等;
3、兆易创新 GD32F101x
1、CPU:ARM CortexM3;
2、BUS:ARM AMBA AHB Bus Matrix and APB Bus;
3、非易失性存储器:Flash;
4、易失性存储器:SRAM;
5、外设:UART串口、Timer定时器、GPIO等。
3、意法半导体 STM32F103C8
1、CPU:ARM CortexM3;
2、BUS:ARM AMBA AHB Bus Matrix and APB Bus;
3、非易失性存储器:Flash;
4、易失性存储器:SRAM;
5、外设:UART串口、Timer定时器、GPIO等。
第三部分 MCU 内部模块简介
1、数字部分&模拟部分
数字部分:大部分使用Verilog编写的RTL代码,执行数据逻辑功能,都是数字电路;Flash等内部存储器则是直接使用现成的物理器件;
模拟部分:大部分都是现成的物理器件,例如PLL、LDO电源等,都是模拟电路。
2、核心组建
1、CPU:用于执行用户程序指令,MCU的大脑;
2、BUS:MCU内部数据交互的“桥梁”,一般采用AMBA总线,包括AHB,APB,AXI总线;
2.1、AHB总线属于高速总线,用于连接MCU内部的高速模块,如内部存储器,DMA控制器等,还连接高速总线外设,例如USB总线;
2.2、APB总线属于低速总线,用于连接MCU内部的低速模块,如UART, SPI总线等。
3、非易失性存储器(Non-Volatile Memory,NVM):“硬盘”,永久性保存用户程序、数据,掉电后数据依然可以保存;
4、易失性存储器(Volatile Memory Storage,VMS):“内存”,用于保护程序的中间变量、堆栈、掉电后数据丢失;
5、外设:执行指定的功能,包括功能外设和通信外设。
5.1、功能外设包括:TIMER, 看门狗,中断控制器等;
5.2、通信外设包括:UART,SPI,I2C,USB,SDIO等。
6、地址映射表:“存储映射”,CPU读写操作都会有对应的地址,每一个模块都有自己的地址;
7、系统控制器:用于控制MCU内部各个模块的状态;
8、中断控制器:连接并管理来自各个模块的中断信号与CPU的中断线;
9、时钟树:各个模块的时钟分配,每个模块的时钟信号都可以选择的;
10、复位树:各个模块的复位分配,一个MCU中可能有多种复位状态。
第二节 认识CPU及其内部架构
第一部分 CPU 简介
CPU:中央处理器(Central Processing Unit)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
指令集:CPU所有的指令集合,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效的工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分。
常见的CPU核:Intel的89C51内核、ARM公司的Cortex系列、RISC V等。
第二部分 CPU内部架构
本文以ARM Cortex-M3为例:
1、ARM Cortex-M3 特点
1、指令集Thumb-2,指令宽度16位或32位,指令执行三级流水线;
2、32位单周期乘法、硬件除法(该CPU没有浮点数计算单元(floating point unit,FPU),不过Cortex-M4及其之后就有了);
3、低延迟进入和退出中断处理函数;
4、NVIC支持1~240个外部中断和11个系统异常,优先级可动态配置;
5、便于调试(利用Jlink调试,可以读取指定寄存器;Keil软件可单步调试 );
6、包含MPU(内存保护单元)、SysTick滴答计时器等;
7、低功耗、低成本。
2、ARM Cortex-M3 组件
1、NVIC:嵌入式中断向量控制器