最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255
第3章 STM32F407整体把控
3.1 初学者重要提示
- 学习一款新的芯片,优先掌握系统框架是比较重要的,建议逐渐养成这种学习习惯,然后各个击破即可。
- 本章节提供了多张STM32F407的框图,这些框图都非常具有代表性。很多时候记忆知识点比较费脑子,记录这些框图是一种非常好的方式。
- 对于本章节提供的部分知识点,无法理解透彻,暂时没有关系。随着后面的深入学习,基本都可以掌握。
3.2 STM32F407硬件框图
学习一款新的芯片,需要优先了解一下它的整体功能设计。需要的资料主要是来自官网和数据手册,比如我们V5开发板使用的STM32F407IGT6,直接在官方地址:链接(这是超链接)就可以看到对此芯片所做的介绍,页面中有一个如下的框图,对于了解STM32F407整体设计非常方便。
再稍微详细点,就需要大家读页面上的”Key Features”,就是下图所示的内容:
或者直接看数据手册开头的章节即可,也进行了介绍,内容基本都是差不多的,如下图所示(部分截图):
通过框图和Key Features,大家可以方便地了解STM32F407的FLASH、RAM大小以及各种自带外设的信息。
3.3 STM32F407各个型号的区别
涉及到芯片选型的时候,需要大家了解各个型号的区别。通过网页链接(这是一个超链接)里面的截图可以方便的了解。最主要的是下面的这个截图:
通过这个截图可以方便地了解不同型号的引脚数、封装、FLASH大小、RAM大小以及是否带HW CRYPTO硬件加密的区别。
需要了解更详细的对比信息,可以看数据手册。任意下载一个型号的数据手册,在数据手册的的Table 2里面有详细的对比,如下图所示(部分截图):
使用ST提供的软件STMCUFinder或者STM32CubeMX也可以做对比,只是没有上面的表格这么方便,可以一目了然。
3.4 STM32F407总线框图和时钟
STM32F407的数据手册里面提供了一张非常棒的框图,大家可以方便地查看每个总线的时钟速度和这个总线所挂的外设。这个在大家配置外设时钟分频的时候还是非常有用的,因为外设的时钟分频就是建立在所挂的总线速度(大家直接在数据手册里面检索Figure 1就可以找到)。
比如我们想得到不同定时器的主频,通过上面的框图,可以方便地获得如下信息:
SYSCLK(Hz) = 168MHz
HCLK(Hz) = 168MHz
HCLK = SYSCLK / 1 (AHB1Periph)
PCLK2 = HCLK / 2 (APB2Periph)
PCLK1 = HCLK / 4 (APB1Periph)
因为APB1 prescaler != 1, 所以 APB1上的TIMxCLK = PCLK1 x 2 = SystemCoreClock / 2;
因为APB2 prescaler != 1, 所以 APB2上的TIMxCLK = PCLK2 x 2 = SystemCoreClock;
APB1 定时器有 TIM2, TIM3 ,TIM4, TIM5, TIM6, TIM7, TIM12, TIM13,TIM14
APB2 定时器有 TIM1, TIM8 ,TIM9, TIM10, TIM11
3.5 STM32F407的AHB总线矩阵
下面这个截图比较有代表性,可以帮助大家理解STM32F407总线系统。
通过这个框图我们要了解以下几点:
1、 32位AHB总线组成的8*7矩阵
- 6个从接口端
Flash的ICode和Dcode;SRAM1;SRAM2;SRAM3;AHB1外设;AHB2外设和FMC总线。
- 8个主接口端
Cortex-M4内核的I-Bus,D-Bus和S-Bus;DMA1的DMA_MEM1;DMA2的DMA_MEM2和DMA_P2;以太网MAC;USB OTG HS。
2、 并行操作
由于总线矩阵的存在,8个主接口端都可以发起通信,只要不是访问同一个外设,且通信的通路没有共用,那么就可以并行执行。
3.6 STM32F407的FLASH
STM32F407的主频是168MHz,但自带的Flash支持的频率是远低于这个值的。具体延迟数值和主频关系如下:
对于上面的表格,大家可以看到,当延迟等待设置为0的时候,即无等待,单周期访问,速度可以做到30MHz(供电电压选择2.7到3.6V)。增加1个Flash周期后,访问速度可以做到60MHz。当增加到5个Flash周期后,最高速度可以做到168MHz。
当STM32F407以168MHz运行的时候,每次访问Flash都需要6个时钟周期,时间太长了。为了解决这个问题,STM32F407的Flash做了ART Chrom加速,可以实现Flash操作零等待。
3.7 STM32F407的RAM
通过本章的3.5小节,我们了解到,STM32F407由以下几块SRAM组成:
- SRAM1和SRAM2区
这两块SRAM的地址是连续的。
SRAM1首地址:0x2000 0000,大小128KB。
SRAM2首地址:0x2001 C000,大小16KB。
速度:168MHz。
- CCM RAM区
CCM RAM是直接接到M4内核的D-Bus总线上,优势是M4访问比较快,缺点是这个RAM区不支持DMA,这点要特别注意。
CCM RAM首地址:0xC000 0000,大小64KB。
速度:168MHz。
- Backup SRAM区
备份RAM区。
Backup SRAM首地址0x4002 4000,大小4KB。
速度:168MHz。
用途:用途不限,主要用于系统进入低功耗模式后,继续保存数据(Vbat引脚外接电池)。
3.8 总结
本章节就为大家讲解这么多,让大家对STM32F407有个整体的认识,后面章节将逐个进行学习。