第3章STM32F10x“最小系统”(1)3.1“最小系统”概述•“最小系统”的概念,应该与微电子、电路集成和计算机等技术的发展历史密切相关的概念;•对于当前的大多数微控制器而言,“最小系统”称为嵌入式微控制器“核心模块”似乎更贴切一些;•嵌入式微控制器的核心模块,主要指硬件层中的①嵌入式微处理器②存储器(SDRAM、ROM、Flash等)③通用I/O接口(用于外接设备)④控制电路:⑤电源电路⑥时钟电路⑦其他外围电路(最小系统基本功能正常工作所必需,如调试系统,USART等)甚至,也可以包括支持上述硬件正常工作的必要的系统底层软件。3.1“最小系统”概述(续)•ARM的Cortex-M3处理器是最新一代的32位嵌入式ARMRISC处理器,提供额外的代码效率,它为实现微控制器提供了低成本的平台、缩减的管脚数目、较低的系统功耗,同时提供卓越的计算性能和先进的中断系统。•STM32F10xx系列拥有内置的ARMCortex-M3核心。STM32F10x系列产品硬件配置STM32F10x系列产品编号STM32F10x-----*容量产品(术语)STM32F103功能框图(1)STM32F103功能框图(2)最小系统的概念什么是最小系统?在尽可能减少上层应用的情况下,能够使系统运行的最小化模块配置。从概念来看,最小系统”应该在微控制器发展初始阶段提出;随着嵌入式系统的不断发展,最小系统”的概念似乎已经与科技飞速发展的现实应用有所不符;这里,提出/重温这一概念,主要是从学习的角度出发。基于MCS-51嵌入式最小系统:电源,晶振,复位电路(+调试系统?)以Cortex-M3处理器为例,嵌入式最小系统的构成模块?基于Cortex-M3的最小系统•最小系统的组成:•①电源、②时钟、③复位电路、④存储系统、⑤调试系统。时钟模块——通常经ARM内部锁相环进行相应的倍频,以提供系统各模块运行所需的时钟频率输入Flash存储模块——存放启动代码、操作系统和用户应用程序代码SDRAM模块——为系统运行提供动态存储空间,是系统代码运行的主要区域JTAG模块——实现对程序代码的下载和调试UART模块——实现对调试信息的终端显示复位模块——实现对系统的复位其中:Cortex-M3微处理器、FLASH和SDRAM模块是嵌入式最小系统的核心部分。MPU(微处理器单元)FlashSRAMTimerResetJTAGUARTPower基于Cortex-M3的STM32F10x最小系统最小系统之于学习的重要性•学习、理解的起点对于基于Cortex-M3的微控制器来说,微处理器体系架构相同并且具有通用的外围电路基于Cortex-M3内核的嵌入式(最小)系统的设计原则及方法基本相同最小系统是嵌入式系统最基本、最核心的部分嵌入式最小系统在整个系统的开发中具有着至关重要的作用•深入学习的基础基于最小系统的扩展微处理器MPU(MicroProcessingUnit)与众多外设的连接方式以及应用代码的开发最小系统的学习内容3.1最小系统概述3.2电源及控制(含复位电路)3.2.1供电方案3.2.2供电监控器3.2.3复位电路3.2.4电压调压器3.2.5通过I/O端口配置方式降低功耗3.3存储器与总线架构3.3.1概述3.3.2存储器映像3.3.3启动模式设置3.3.4Bit-band操作3.4时钟系统3.4.1概述3.4.2定时器3.4.3RTC3.4.4系统时钟监控与切换3.5中断和事件3.6JTAG与USART调试模块3.6.1JTAG模块3.6.2USART模块3.7固件库介绍3.2电源及控制(含复位电路)•Cortex-M3主要用于对功耗和成本特别敏感的应用领域,专门针对性能要求不断增加的嵌入式应用所设计:汽车电子与车身控制系统;工业控制、医疗器械、信息家电、无线传感网络等。•Cortex-M3主要指标:0.19W/MHz,1.25DMIPS/MHz51单片机:0.5W/MHz,0.083DMIPS/MHz•若达到5DMIPS的性能:Cortex-M3:工作频率只需4MHz,功耗0.76W;51:工作频率需60MHz,功耗30W;•STM32F103处理器系统频率为72MHz,处理器性能可达到90DMIPS,此时Cortex-M3功耗约14W左右。①VDD:主电源/工作电压;②VSS:主电源/工作电压地;③VDDA:独立电源;④VSSA:独立电源地;⑤VBAT:电池供电。3.2电源及控制(续)•可见,基于Cortex-M3的STM32F10x系列产品在性能和功耗上达到了很高的水平,特别是用于低功耗的无线通信领域。•问题是:怎样才能达到低功耗的目的?采取了哪些技术措施?3.2.1供电方案①主电源/工作电压VDD=2.0至3.6V:通过内置调压器提供1.8V的电源,供内核使用;3.3V供I/O管脚使用。②电池供电VBAT=2.0至3.6V:若VDD掉电,将由VBAT为RTC、备份寄存器供电。。③VDDA,VSSA=2.0至3.6V:分别连接到VSS和VDD;为ADC、复位模块、RC振荡器和PLL的模拟部分供电;使用ADC时,VDD不得小于2.4V。VREF+的电压范围2.4V~VDDA,VREF-引脚若有(根据封装而定),必须连接到VSSA。注:VDDA:独立电源;VSSA:独立电源地。3.2.2供电监控器供电监控器(续)STM32内部集成了上电复位(POR,PowerOnReset)/掉电复位(PDR,PowerDownReset)电路,该电路始终处于工作状态,保证系统在供电超过2V时工作;当VDD低于设定的阀值(VPOR/VPDR)时,置器件于复位状态,而不必使用外部复位电路。供电监控器(续)•上电复位(POR,PowerOnReset)•掉电复位(PDR,PowerDownReset)1mstRSTTEMPO4.5ms,典型数值是2.5ms供电监控器(续)•在VDD电压由低向高上升越过规定的阀值VPOR之前,保持芯片复位,当越过这个阀值后tRSTTEMPO秒(待电源可靠供电),才开始取复位向量,并执行指令。•在VDD电压由高向低下降越过规定的阀值VPDR后,将在芯片内部产生复位。供电监控器(续)可编程电压监测器PVD•可编程电压监测器(PVD,ProgrammableVoltageDetector),监视VDD供电并与阀值VPVD比较,当VDD低于或高于阀值VPVD时将根据外部中断第16线的上升/下降边沿触发设置,产生PVD中断。P166页中断处理程序可以发出警告信息或将微控制器转入安全模式,但需要通过程序开启PVD。•电源控制/状态寄存器(PWR_CSR)中的PVOD标志位用来表明VDD是否低于或高于阀值VPVD。3.2.3STM32F103复位电路NRST:外部异步复位引脚系统复位•STM32内含复位电路支持,当任意一个下列事件发生时都将引起系统自动复位:①NRST引脚出现低电平(外部复位);②看门狗计时器计时终止(WWDG复位);③独立看门狗计数终止(IWDG复位);④软件复位(SW复位);⑤低功耗管理复位。•可通过查询控制/状态寄存器RCC_CSR中的复位标志来识别复位源。•系统复位后将清除时钟控制器CSR中的复位标志和备用域寄存器之外的所有寄存器。3.2.4电压调压器电压调压器的三种操作模式:①主模式(MR):又称“运行模式(RunMode)”或“调节模式”。用于CPU正常的运行操作以正常功耗模式,向内核、内存、外设供给1.8V电源。②低功耗模式(LPR):用于CPU“停止(机)模式(StopMode)”。当CPU无任务需要处理时,以低功耗模式供1.8V电源,以保持SRAM、寄存器等的内容。一般可以根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定最佳低功耗模式。③掉电(关断)模式:用于CPU“待机模式(StandbyMode)”。调压器的输出为高阻状态,停止内核电路供电,调压器处于零消耗状态,除待机电路和备份域外,寄存器和SRAM的内容将丢失。STM32F103xx的低功耗模式•睡眠模式:–只有CPU停止工作,所有外设继续运行,在中断/事件发生时唤醒CPU。•停止(机)模式:–允许以最小的功耗来保持SRAM和寄存器的内容。–停止所有内部1.8V部分的供电,PLL,HSI和HSE的RC振荡器被禁能,调压器被置为低功耗模式。–设备可以通过外部中断线从停止模式唤醒。外部中断源可以使16个外部中断线之一、PVD输出、RTC闹钟,或者USB唤醒信号。P166•待机模式:–追求最少的功耗,内部调压器被关闭,这样1.8V区域断电。–PLL,HSI和HSERC振荡器被关闭。–进入待机模式之后,除了备份寄存器和待机电路,SRAM和寄存器的内容也会丢失。–当外部复位(NRST引脚)、IWDG复位、WKUP引脚出现上升沿或者RTC闹钟时间到时,设备退出待机模式。–进入停止模式或者待机模式时,RTC,IWDG和相关的时钟源不会停止。3.3存储器与总线架构4.3.1概述4.3.2存储器映像4.3.2启动模式设置4.3.3Bit-band操作STM32F103系列产品基本架构3.3.1概述•STM32的各外围模块与Cortex-M3内核,通过各类总线连接在一起,形成一个有机的整体。•程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。3.3.1概述(续)(1)四个驱动单元:①ICode总线(I-bus)该总线将Cortex-M3内核的指令总线与Flash指令接口相连接。指令预取在此总线上完成。②DCode总线(D-bus)将Cortex-M3内核的DCode总线与闪存存储器的数据接口相连接,用于常量加载和调试访问。D-Code接口包含CPU_Lite接口和对闪存访问控制器的仲裁器提出访问请求的逻辑电路。D-Code的访问优先于预取指令的访问。③System总线(S-bus)连接Cortex-M3内核与总线矩阵,总线矩阵协调着内核和DMA间的访问。④通用DMA总线(GP-DMAbus)将DMA的AHB主控接口与总线矩阵相联,协调CPU的DCode和DMA到SRAM、闪存和外设的访问。3.3.1概述(续)(2)四个被动单元:①内部SRAM②内部闪存存储器③FSMC(灵活的静态存储器控制器)④AHB到APB的桥(AHB2APBx),它连接所有的APB设备两个AHB/APB桥在AHB和2个APB总线间提供同步连接。APB1操作速度限于36MHz,APB2操作于全速72MHz。3.3.1概述(续)(3)总线矩阵总线矩阵用来将处理器与调试接口、外部总线相连。总线矩阵与ICode总线、DCode总线、System总线、DMA总线等外部总线相连。总线矩阵采取轮询算法仲裁、协调内核System总线和DMA主控总线之间的访问。AHB外设通过总线矩阵与系统总线相连,允许DMA访问。3.3.1概述(续)•总线矩阵有“循环优先调度”、“多层结构和总线挪用”两个主要特性,实现系统性能的最大化和减少延时。“循环优先调度”,用以确保DMA不长时间占用总线和CPU可以在任何一个时钟周期访问所有的从总线。否则,会影响指令的单周期执行和执行过程中在周期级上“中断”正在运行的代码。“多层结构”允许多个主设备同时执行数据传输,只要它们寻址不同的从模块,提高了数据并行性;“总线挪用”,用于协调CPU和DMA的数据访问,提高二者并发工作的性能。3.3.1概述(续)总线矩阵还可以实现以下控制功能:①将非对齐的处理器访问转换为对齐访问;②将bit-band别名访问转换为对bit-band区的访问:进行位域提取以进行bit-band加载和进行原子“读--修改--写”以进行bit-band存储;③写缓冲:总线矩阵包含一个单入口写缓冲区,该缓冲区使得处理器内核不受到总线延迟的影响。3.3.2STM32F103存储器映像•STM32F103寄存器组起始地址起始地址外设总线寄存器映像0x4002240