第三章 单片机结构和最小系统
3.1 STM32结构
ARM公司负责设计内核,芯片厂商根据需求添加各类组件,生产出对应的芯片售卖。
上图中,Cortex-M3内核,调试系统由ARM公司设计;内部总线、外设、存储单元、时钟和复位等部分都由ST公司开发。
外设和存储单元与内核之间的通信通过内部总线实现。
3.1.1 总线结构
所谓总线(Bus),是指计算机设备和设备之间传输信息的公共数据通道。每条总线都只能对规定的地址范围进行访问。
1、ICode(Instruction Code):通过FLITF连接flash,用于读取flash中的指令。
2、DCode(Data Code):通过一个总线矩阵Bus matrix连接FLITF在连接flash,用于读取flash中的数据。
3、System系统总线:通过总线矩阵访问指令、数据、调试模块。连接内核与总线矩阵,然后与AHB,SRAM等相连。
4、DMA总线:连接通道与总线矩阵,产生DMA请求
其中FLITF(flash interface 闪存存储器接口)。AHB system bus 经过电桥电路分为APB1和APB2两条总线,分别挂载不同的外设。
在嵌入式领域AHB和APB是最常用的总线。AHB(Advanced High-performance Bus), 高速总线,用来接高速外设的,一般用于CPU与内部的高速RAM、 FLASH、DMA、Bridge的连接。APB (Advanced Peripheral Bus)高级外设总线( 低速总线),用来接低速外设的,一般用于连接外部设备,对性能要求不高,而考虑低功耗问题。
基于这个总线结构,ICode、Dcode、System Bus都是AHB总线。这里AHB系统总线经过两个AHB-APB桥转换成了两个APB总线。APB1上挂接有DAC、UART等外设,其最高频率可达36MHz;APB2上挂接有ADC、GPIO等外设,其最高频率可达72MHz。
3.1.2 存储结构
存储器的编址方式有统一编址和独立编址。
统一编址(存储器映像编址):外设和内存共用一片存储空间,同一地址,只能属于外设或内存之间的一个,通过访问的地址的不同判断是对外设还是对内存进行操作,访问端口和内存的指令是相同的。
独立编址:I/0端口地址不占用存储空间的地址范围,这样,在系统中就存在了另一种与存储地址无关的IO地址,CPU也必须具有专用与输入输出操作的IO指令和控制逻辑。
1、ARM存储结构
ARM Cortex-M3系列的处理器,采用存储器与I/O设备(外设)统一编址的方式,将部分存储器地址范围用于外设,这种通过存储器地址访问外设的方式,称为存储器地址映射。
对于32位的处理器,可寻址的范围为232字节,即232= 4 × 1024 × 1024 × 1024 = 4GB,也就是0x00000000至0xFFFFFFFF。
ARM将这4G空间从低地址到高地址依次划分为代码区(Code)、片上SRAM区(SRAM)、片上外设(Peripheral)、片外RAM(External RAM)、片外外设(External Device)和系统级(System level)。
2、STM32存储结构
ST公司基于上述32位处理器存储规定,设计了基于cortex-M3内核的存储架构。
其将4G空间分为了Block0、Block1、Block2、……、Block7,共8块,每块大小为512MB。
具体映射图在STM32F103xE数据手册——40页。
Block0包括操作字节空间、系统存储空间、flash、启动引脚存储空间等。
Block1包括64kb的SRAM还有一些预留空间。
Block2是STM32外设地址映射空间,包括所有片上外设存储空间比如GPIO、EXTI、DMA、ADC、IIC、SPI、USART、TIM等等。
Block3、Block4使用FMSC接口扩展分为了4个bank。
Block5是FMSC寄存器。
Block6、Block7没做开发,保留ARM公司原有设置.
3.2 最小系统
单片机最小系统是指用最少的原件组成单片机可以工作的系统,通常由以下几部分组成。
1、电源电路
将3.3V的电源输入给单片机,提供工作的电源。
2、时钟电路
使用两个外部晶振源,高速8MHz、低速32.768KHz,根据这两个外部晶振元为单片机配置时钟。具体配置方式后面介绍。
3、复位电路
复位电路,通过NRST引脚的高低电平控制复位信号。按键松开,NRST拉高,按键按下,NRST拉低,产生一个低电平的复位信号,芯片就会复位。POWER引脚连接电源转换芯片的使能引脚,若POWER被拉低,则电源转换就会停止,整个芯片的电源就被关闭了。通过复位引脚和电源引脚两个方面同时控制芯片的复位。
4、调试/下载电路
将单片机的JTAG和SWD接口分别引出来接到两个对应的排座上,通过这两种接口电路,单片机可以下载、调试程序。
5、启动方式选择电路
单片机的启动方式由boot0和boot1控制,具体内容之前介绍过。这里用两个开关对boot0和boot1的状态进行控制。
(一)boot0 = 0,boot1 = 0/1时,从用户闪存(flash)启动,是STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。
(二)boot0 = 1,boot1 = 0时,从系统存储器启动,这种模式启动的程序功能是由厂家设置的。
(三)boot0 = 1,boot1 = 1时,从内置SRAM启动,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。
一般来说,对于不同的CPU,最小系统的电路会有不同的参考电路,可以再对应的数据手册中查询。以上五个最小系统电路图在STM32F103xE数据手册中都能找到相应的参考电路。