STM32
直播中

王刚

7年用户 1223经验值
私信 关注
[问答]

STM32F407有哪些特性

STM32F407有哪些特性?
STM32F407的时钟有哪几种?

回帖(1)

孙秀英

2021-9-26 14:49:23
  1.整体特性
  (1)F407带有FPU,可以进行浮点数硬件计算。
  (2)两个DMA,每个有七个流控制器,支持外设和存储器之间的访问,也支持存储器到存储器之间的访问。具有FIFO功能。
  (3)具有USB OTG 功能,可以做读卡器,亦可以读取U盘。
  (4)具有以太网功能。
  (5)两个SRAM(112,16KB),一个CCM RAM(内核耦合存储器)(只能CPU访问),总共192KB内存。
  (6)具有FSMC功能(灵活地静态存储器访问)
  (7)Flash具有1Mb大小,但bank(块)太大了,使用不便。
  总线架构如下:
  
  注意:每次芯片复位后,所有外设时钟都会被关闭(除了SRAM和Flash),外设使用前必须设置。
  注意:对 APB 寄存器执行16位或 8位访问时,该访问将转换为32 位访问:总线桥将16位或8
  位数据复制后提供给 32 位向量。
  1.1存储器组织架构
  程序存储器、数据存储器、寄存器和IO端口在同一个顺序的4GB地址空间内。
  各字节按小端模式编码。编号低字节在低位。
  可寻址的存储空间分为8个主要块,每个块512MB。
  
  
  
  1.2 内嵌SRAM
  有4KB的备份SRAM,这是给RTC(实时时钟)用的。
  SRAM访问支持字节、16位、32位(字)。
  112KB和16KB映射在0x2000 0000上,供所有AHB主控总线访问,是通用SRAM。
  64KB的CCM SRAM,只能有CPU通过数据总线访问,个人理解是不能用来DMA传输,正常代码中使用应该没有问题。映射在0x1000 0000。
  1.3Flash和自举程序
  系统自举模式下从该存储器启动,具有一次性编程OTP字节(512)。
  
  代码起始区域位于0x0000 0000,这意味通常是Flash提供自举空间。从SRAM自举需要设置中断向量偏离表,这里不关注了。
  
  这里有几种下载程序模式,通常使用USART1,USB转TTL下载。专用下载器更好。
  
  可以看到,扇区都挺大的,如果删除,一次删除的东西很多,并不适合频繁读取。
  2.电源
  期间的工作电压在1.8v《VDD《3.6v,VBAT可给备份域供电。本文暂不考虑备份域。
  
  AD转换可以接外部参考电压,且大小在1.8v到VDDA之间。
  调压器(1.2v域)用于给内核、存储器、数字外设供电,具有三个级别,全功率、低功耗、待机模式,待机模式下SRAM和寄存器的内容将丢失。
  电源具有监控功能,当电压低于指定阈值VPOR(上电复位)、VPDR(掉电复位)时,就会保持复位状态,从1.8V开始工作。
  欠压复位要求电源电压达到指定VBOR阈值,这个默认关闭。
  可编程电压检测器PVD,可配置外部中断,用于执行紧急关闭系统的任务。
  默认情况,系统复位和上电复位后,系统都是进入运行模式。
  3.时钟介绍
  3.1系统复位的触发事件:
  (1)NRST引脚低电平(外部复位)
  (2)窗口看门狗计数结束(WWDG复位)
  (3)独立看门狗计数结束(IWDG复位)
  (4)软件复位(SW复位)
  (5)低功耗管理复位
  软件复位和低功耗管理复位这里不考虑。
  除了系统复位还有电源复位、备份率复位。
  正常情况不考虑复位,因为这些会让问题变得复杂,除非已经把问题解决好了。
  3.2系统时钟(SYSCLK)来源
  
  
  可以看到,时钟非常复杂,这里只考虑额定最高频率168MHz的一种设置情况,超频或者低功耗使用的情况下,这里暂不考虑。
  首先,大部分外设由系统时钟提供,指APB和AHB。
  但是,USB、RNG、SDIO时钟,是由PLL48CLK提供,不大于48MHz。
  12s的时钟,由PPL12SCLK提供,以实现高品质的音频性能。
  外部时钟给USB和以太网MAC使用。
  Cortex系统定时器(SysTick)(滴答计时器)可以使用8分频的AHB时钟(HCLK),也可以使用HCLK时钟。
  定时器的时钟由硬件自动设置,当APB预分频器不为1时,等于APB时钟的2倍,若等于APB预分频器为1,则等于APB时钟频率。
  本文中HCLK为168Mhz,APB肯定要分频的,所以定时器的时钟一般是两倍,APB最大42Mhz,所以定时器频率为84Mhz。
  3.3HSE高速外部时钟和HSI高速内部时钟
  两种配置方式:
  
  第一种,非本文考虑范围。
  一般使用第二种,要记住厂家焊好的晶振,或者自己焊接的晶振频率。
  HSI内部信号由16Mhz的RC振荡器生成,准确度不够,系统复位后默认使用的是这个时钟源。
  正常情况下,都是用的HSE时钟源,它的精度非常高。
  3.4 PLL配置
  这个是肯定要配置的,超频的秘诀就在其中,当然本文没有超频内容。
  
  3.5LSE 低速外部时钟和LSI低速内部时钟
  LSE大概率没有。。。。。。
  LSI提供32678Hz的频率,RTC主要使用。
  3.6时钟输出
  最大速率不能超过100Mhz,也就是IO口的最大速率。
  (1)MCO1可输出HSI、LSE、HSE、PLL时钟
  (2)MCO2可输出HSE、PLL、SYSCLK、PLL12s时钟
  本文用不到。
  3.7 时钟测量
  可以通过TIM5和TIM11的输入捕获功能测量时钟频率,有兴趣的可以试试。
  3.8 寄存器配置(168Mhz)
  这是关键部分了,RCC_CR 寄存器复位值不为0,第0/1/7位恒为1。
  大概是复位后开启HSI时钟作为HCLK主时钟,并且自动校准。
  所以我们要做的是把HCLK时钟切换到HSE倍频后的PLLCLK时钟。
  
  由于Flash读取速度慢于CPU,当CPU工作频率较高时,需要设置等待周期以至于数据、指令顺利读到,不然会出错。图中明显可以看出需要设置5个周期(168Mhz下),不过不用太担心flash拖累了CPU的速度,stm32有ART自适应实时存储器加速器,可实现“0等待周期”的效果。
  上面的代码有几个关键,一个是开启HSE时钟,再就调节PWR-CR寄存器的VOS位,调高电压级别,允许系统全功率运行,再就是通过PLL倍频HSE到合适的频率,设置合理分频频率到各个外设,设置好flash的等待周期。
  上面的都成功后,在选取CPU时钟源到PLLCLK,然后等待成功即可。
  正常情况,使用168MHz最大配置即可,超频或者低功耗需要先熟悉后再使用。后面也许有文章会考虑这方面需求。
  4.中断设置
  在这里,只给出最基本的中断设置代码。
  STM32F407具有82个中断,内核支持256个,但通常都会限定数量。
  具体中断看数据手册。
  中断的设置要看M4内核手册,这里定性简单描述下。
  SCB-》AIRCR寄存器是设置中断优先级分组的,中断有两段优先级,最高是抢占优先级,再就是抢占组里的子优先级。这里就是设置抢占优先级的,stm32最多只支持16位抢占优先级,也就是4位。
  4位优先级分组可分五种情况,即0,1,2,3,4位抢占优先级,对应剩下位为响应优先级,即子优先级。
  分组0-4即对应上述五种情况,抢占优先级》响应优先级。
  然后优先级对应的数字越小,优先级也就越高。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分