ARM Cortex?-M3处理器是最新一代的嵌入式ARM处理器。它为实现MCU的需要提供了低成本的平台、缩减的引脚数目、降低的系统功耗,同时提供卓越的计算性能和先进的中断系统响应。
ARM的Cortex?-M3是32位的RISC处理器,提供额外的代码效率,在通常8和16位系统的存储空间上发挥了ARM内核的高性能。
STM32F20x系列拥有内置的ARM核心,因此它与所有的ARM工具和软件兼容。 图5是STM32F20x系列产品的功能框图。 2.2.2 自适应实时存储加速器(ART加速器?)
ART加速器?是一种存储器加速器,它优化了STM32工业标准的ARM? Cortex?-M3处理器。它平衡了ARM Cortex-M3在闪存存储器技术上的固有性能优势,这通常需要处理器在更高操作频率上等待闪存存储器。
为了缓解处理器在150 DMIPS全速频率下的性能,处理器执行一个指令预取队列,以及分支缓存,从而提高从128位的闪存中的程序执行速度。基于CoreMark标准,由于ART加速器,该性能得以实现,就相当于在CPU频率高达120MHz时,从闪存0等待的执行程序。
2.2.3 存储器保护单元
存储器保护单元用来管理CPU访问存储器,以防止一个任务突然被另一个活动任务破坏寄存器和资源。这个存储区域被组织成8个受保护的区域,进而可划分为8个分区。这个保护区域的大小在32个字节和整个4G可寻址寄存器之间。
存储器保护单元特别有助于这些应用场合:一些重要的或有待验证的代码码必须被保护,防止其他任务的不良行为。它通常是由一个RTOS管理(实时操作系统)。如果一个程序访问了一个存储器的地址,而这个地址是被存储器保护单元禁止访问的,那么实时操作系统能够检测到,并采取行动。在一个实时操作系统环境中,内核能基于这个进程的执行,动态的更新存储器保护单元的设置。存储器保护单元是可选的,对于一些不需要它的应用可以绕过。
2.2.4 嵌入闪存存储器
STM32F20x系列产品嵌入了一个128K,256K,512K,768K或1M的128位宽的闪存,用于存储程序和数据。这个系列还包含512字节的OTP存储器,可用来存储重要的用户数据,例如以太网MAC地址或加密密钥。
Page 20
2.3.5 CRC(循环冗余校验)计算单元
CRC(循环冗余校验)计算单元使用一个固定的多项式发生器,从一个32位的数据字产生一个CRC码。在众多的应用中,基于CRC的技术被用于验证数据传输或存储的一致性。在EN/IEC 60335-1标准的范围内,它提供了一种检测闪存存储器错误的手段,CRC计算单元可以用于实时地计算软件的签名,并与在链接和生成该软件时产生的签名对比。 2.3.6 内置SRAM
所有的STM32F20x系列产品内置: 多达128K字节的内置SRAM,CPU能以0等待周期访问(读/写)。 4K字节的后备SRAM。 这个区域的内容被保护以防止可能出现的不必要的写访问,并保持待机或VBAT模式。
2.3.7 Multi-AHB总线矩阵
32位的multi-AHB总线矩阵连接到了所有的主机 (CPU, DMAs, Ethernet, USB HS)和从机 (Flash memory, RAM, FSMC, AHB and APB 外设),并确保一个无漏洞的和有效的操作,甚至几个高速的外设同时工作。
图6. Multi-AHB矩阵
Page 21
2.2.8 直接存储器存取控制器(DMA)
该系列配置了两个通用的双向端口DMA(DMA1和DMA2) ,每个端口有8个通道。它们能够管理存储器到存储器,外设到存储器,存储器到外设的传输。对于APB/AHB外设,它们能共享一些集成的FIFO,支持爆炸转移,旨在提供最大限度的外设带宽(AHB/APB)。
这两个DMA控制器支持循环缓冲区管理,所以,控制器到达缓冲区的末尾,不需要特定的代码。这两个DMA控制器也有一个双缓冲特性,不需要特定的代码就能自动的使用和切换两个寄存器缓冲区。
每个通道连接到专门的硬件DMA请求,每个通道支持软件触发。由软件进行配置,在源端和目的端的传输数据大小是独立的。 DMA可以和主外设一起使用: SPI and I2S I2C USART 和 UART 通用、基础和高级控制定时器TIMx DAC SDIO 摄像头接口 (DCMI) ADC
2.2.9 可配置的静态存储器控制器(FSMC)
所有STM32F20x系列集成了FSMC模块。它具有4个片选输出,支持PC卡/CF卡、SRAM、PSRAM、NOR和NAND。
功能介绍: 写入FIFO;
代码可以在除NAND闪存和PC卡外的片外存储器运行; 外部访问的最大频率(fHCLK)是60 MHz。 液晶并行接口
FSMC可以配置成与多数图形LCD控制器的无缝连接,它支持Intel 8080和Motorola 6800的模式,并能够灵活地与特定的LCD接口。使用这个LCD并行接口可以很方便地构建简易的图形应用环境,或使用专用加速控制器的高性能方案。
Page 22
2.2.10 集成的向量式中断控制器(NVIC)
STM32F20x 系列集成向量式中断控制器,能够管理16个优先级,以及处理多达81个可屏蔽中断通道,加上16个Cortex?-M3的中断线。 NVIC主要特点如下:
紧耦合的NVIC能够达到低延迟的中断响应处理 中断向量入口地址直接进入内核 紧耦合的NVIC内核接口 允许中断的早期处理
处理晚到的较高优先级中断 支持中断尾部链接功能 自动保存处理器状态
中断返回时自动恢复,无需额外指令开销
该模块以最小的中断延迟提供灵活的中断管理功能。 2.2.11 外部中断/事件控制器(EXTI)
外部中断/事件控制器包含23个边沿检测器,用于产生中断/事件请求。每个中断线都可以独立地配置它的触发事件(上升沿或下降沿或双边沿),并能够单独地被屏蔽;有一个挂起寄存器维持所有中断请求的状态。EXTI可以检测到脉冲宽度小于内部APB2的时钟周期。多达140个通用I/O口连接到16个外部中断线。 2.2.12 时钟和启动
复位时内部16MHz的RC振荡器被选为默认的CPU时钟。16MHz内部RC振荡器被工厂削减到仅能提供1%的准确度。该应用可以选择RC振荡器或外部4-26MHz时钟源作为系统时钟。这个时钟是失效监控的。当检测到外部时钟失效时,系统将自动地切换到内部的RC振荡器,如果使能了中断,软件可以接收到相应的中断。同样,在需要时可以采取对PLL时钟完全的中断管理(如当一个间接使用的外部振荡器失效时)。
先进的时钟控制器为内核提供时钟,所有的外设使用一个晶振。特别地,以太网和USB OTG FS外设可以通过系统时钟定时。多个预分频器和锁相环用于配置2个AHB总线、高速APB(APB2)和低速APB(APB1)区域。两个AHB总线的最高频率是120MHz,高速APB区域的最高频率是60MHz,低速APB区域的允许频率为30MHz。
该系列集成了一个专用的锁相环(PLLI2S),允许达到音频级性能。在这种情况下,I2S 主时钟可以产生8K到192K范围内的所有标准采样频率。
Page 23
2.2.13 自举模式
在启动时,通过自举引脚可以选择三种自举模式中的一种: 从程序闪存存储器自举 从系统存储器自举 从内部SRAM自举
自举加载程序(Bootloader)存放于系统存储器中,可以通过USART1(PA9/PA10),USART3 (PC10/PC11 or PB10/PB11), CAN2 (PB5/PB13),以及通过DFU(设备固件升级)的设备模式中的USB OTG FS (PA11/PA12)对闪存重新编程。 2.2.14 供电方案
VDD=1.8~3.6V:VDD引脚为I/O引脚和内部调压器供电。在WLCSP封装中,VDD可从1.7V~3.6V。
VSSA,VDDA=1.8~3.6V:为ADC、DAC、复位模块、RC振荡器和PLL。VDDA和VSSA必须分别连接到VDD和VSS。
VBAT=1.65~3.6V:当关闭VDD时,(通过内部电源切换器)为RTC、外部32kHz振荡器和后备寄存器供电。
详细信息参见图12供电方案。 2.2.15 供电监控器 本产品内部集成了上电复位(POR)/断电复位(PDR)和掉电复位电路。电源开启时,掉电复位电路始终处于工作状态,保证系统在供电超过1.8V时工作。当达到1.8V掉电复位阈值时,功能选项加载过程启动,要么验证或修改默认阈值,要么永远禁用掉电复位功能。通过功能选项,3个掉电复位阈值是可用的。当VDD低于某个阈值时,设备停留在复位模式中,VPOR/PDR或VBOR不需要外部复位电路。在WLCSP封装的设备上,设置IRROFF与VDD相连使BOR禁用(见2.2.16节:电压调节器)。 器件中还有一个可编程电压监测器(PVD),它监视VDD/VDDA供电并与阀值VPVD比较,当VDD低于或高于阀值VPVD时产生中断,中断处理程序可以发出警告信息或将微控制器转入安全模式。PVD功能需要通过程序开启。 2.2.16 电压调压器
调压器有5个操作模式: 调压器开 主模式 低功耗模式 关断模式 调压器关 调压器关/内部复位开启 调压器关/内部复位关闭
Page 24
调压器开启
LQFP封装默认调压器开模式启用。对于WLCSP66封装,将REGOFF和IRROFF管脚都连接到VSS启动调压器开模式。而对于UFBGA176封装,只需将REGOFF连接到VSS(IRROFF不要求)。VDD的最小值是1.8 V(a) 三种调压器开启模式: 主模式(MR)用于正常的运行操作 低功耗模式(LPR)用于CPU的停机模式 关断模式用于CPU的待机模式: 调压器的输出为高阻状态,内核电路的供电切断,调压器处于零消耗状态(但寄存器和SRAM的内容将丢失) 调压器关闭
调压器关/内部复位开启
对于WLCSP66封装,将REGOFF连接到VDD,并且将IRROFF连接到VSS,该模式启动。对于UFBGA176封装,只需将REGOFF管脚连接到VDD(IRROFF不需要)。
除了VDD之外,调压器关闭/内部复位开启模式允许通过VCAP_1和VCAP_2管脚提供一个外部1.2V电压源。
下列条件必须得到满足:
为了避免电流注入两个电源区域之间,VDD应该总是高于VCAP_1和VCAP_2。如果VCAP_1和VCAP_2达到1.08 V的时间快于VDD达到1.8V(a)的时间,PA0管脚应该连接到NRST管脚(见图7)。
否则,上电复位期间PA0应该被置低,直到VDD达到1.8V(见图8)。
在这种模式下,PA0不能用作GPIO管脚,因为当内部电压调节器关闭时,它允许复位不能被NRST复位的1.2V逻辑部分。
调压器关/内部复位关闭
对于WLCSP66封装,将REGOFF连到VSS,并且将IRROFF连到VDD可以激活这种模式。IRROFF不能与REGOFF连接在一起。除了VDD之外,调压器关闭/内部复位开启模式允许通过VCAP_1和VCAP_2管脚提供一个外部1.2V电压源。
下列条件必须得到满足:
为了避免电流注入两个电源区域之间,VDD应该总是高于VCAP_1和VCAP_2(见图7)。
PA0应该保持低电平以满足两个条件:直到VCAP_1和VCAP_2达到1.08 V,VDD达到1.65 V。
NRST应该由一个外部复位控制器控制,以便VDD低于1.65V时复位(见图8)。
Page 25
图7 启动调压器关闭:VCAP_1/VCAP_2 稳定后,VDD 斜坡电压断电复位上升减缓。 图8. 启动调压器关闭:在VCAP_1/VCAP_2稳定前,加快VDD断电复位斜坡上升。 2.2.17 实时时钟(RTC),后备SRAM和后备寄存器。 STM32F20x系列的后备区域包括:
实时时钟(RTC) 4K的后备SRAM 20个后备寄存器
实时时钟(RTC)是一个独立的BCD定时器/计数器。专用寄存器包括BCD(二进制编码的十进制)格式的秒,分,时(12/24制),星期,日,月,年。能自动修正28,29,30,31天数的月份。RTC提供了一个可编程的警报,以及可编程的周期性中断,用来从停止和待机模式中唤醒STM32F20X产品。
Page 26
RTC的驱动时钟可以是一个使用外部晶体的32.768kHz的振荡器、内部低功耗RC振荡器或高速的外部时钟经128分频。内部低速RC振荡器的典型频率为32kHz。为补偿天然晶体的偏差,可以通过输出一个512Hz的信号对RTC的时钟进行校准。
两个报警寄存器用于在一个特定时间产生警报,日历字段能独立地掩盖警报比较。为了产生周期性的中断,一个带可编程解决方案的16位的可编程二进制自动重载逐减计数器是可用的,并允许以每120us到36小时自动唤醒和周期闹钟。
有一个20位的预分频器用于时基时钟,默认情况下时钟为32.768kHz时,它将产生一个1秒长的时间基准。