STM32F407xx芯片手册第1到3章中文翻译
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1文档约定
寄存器缩写列表
下面的缩写用于描述寄存器
Read/Write(rw)软件可读写
Read-Only(r)软件只读
Write-only(w)软件只写
Read/clear(rc_w1)软件可读,写1清除,写0无作用
Read/clear(rc_w0)软件可读,写0清除,写1无作用
Read/clear by read软件可读,读后自动清零,写0无作用Read/set(rs)软件可读,可置位,写0无作用
Read-only write
Trigger(rt_w)软件可读,写0或1翻转此位
Toggle(t)写1翻转,写0无作用
Reserved(Res.)保留位,必须保持复位值
2存储器和总线架构
2.1系统架构
主系统包括32位多层互联AHB总线阵列,连接以下部件:
Height masters
—Cortex TM-M4F内核I-Bus(指令总线),D-bus(数据总线)和S-bus(系统总线)—DMA1存储器总线
—DMA2存储器总线
—DMA2外设总线
—以太网DMA总线
—USB OTG HS DMA总线
Seven slaves
—内置Flash存储器指令总线
—内置Flash存储器数据总线
—主内置SRAM1(112KB)
—辅助内置SRAM2(16KB)
—AHB1外设,包括AHB到APB的桥以及APB外设
—AHB2外设
—FSMC接口
总线矩阵提供从主设备到从设备的访问,即使在有若干高速外设同时运行的情况下也能并行访问并高效运转。这个架构如图1所示。
注意:64KB的CCM(内核耦合存储器core coupled memory)数据RAM并不是总线矩阵的一部分,它只能通过CPU来访问。
图1系统架构
2.1.1S0:指令总线
这条总线连接Cortex TM-M4F内核的指令总线到总线矩阵,用于内核取指。总线的Target是存储有代码的存储器(包括内置Flash存储器/SRAM以及通过FSMC外扩的外部存储器)。
2.1.2S1:数据总线
这条总线连接Cortex TM-M4F的数据总线和64KB的CCM数据RAM到总线矩阵,用于内核立即数的load以及调试访问。总线的Target是存储有代码和数据的存储器(包括内置Flash存储器以及通过FSMC外扩的外部存储器)。
2.1.3S2:系统总线
这条总线连接Cortex TM-M4F的系统总线到总线矩阵,用于访问位于外设或者SRAM 中的数据,指令也可通过这条总线取指(但是没有从ICode中取指效率高)。总线的Target 是112KB和16KB内置SRAMs,AHB1外设,APB外设,AHB2外设以及通过FSMC外扩
的外部存储器。
2.1.4S3、S4:DMA存储器总线
这条总线连接DMA存储器总线主设备接口到总线矩阵,用于DMA在存储器中执行传送指令。总线的Target是内置SRAM和通过FSMC外扩的外部存储器。
2.1.5S5:DMA外设总线
这条总线连接DMA外设主总线接口到总线矩阵,用于DMA访问AHB外设或者执行存储器之间的传送指令。总线的Target是AHB和APB外设加(plus)数据存储器:内部SRAM和通过FSMC外扩的外部存储器。
2.1.6S6:以太网DMA总线
这条总线连接以太网DMA主设备接口到总线矩阵,用于以太网DMA加载或传送数据到一个存储器。总线的Target是内置SRAM和外部通过FSMC外扩的存储器。
2.1.7S7:USB OTG HS DMA总线
这条总线连接USB OTG HS DMA主设备接口到总线矩阵,用于USB OTG DMA加载或存储数据到一个存储器。总线的Target是数据存储器:内置SRAM和外部通过FSMC 外扩的存储器。
2.1.8总线矩阵
总线矩阵管理主设备之间的访问仲裁,仲裁用了一系列的算法。
2.1.9AHB/APB桥(APB)
APB1和APB2两个AHB/APB桥提供AHB到两个APB之间的全速同步连接,允许外设频率的灵活选择。
设备复位以后,所有的外设时钟都是禁止的(除了SRAM和Flash存储器接口)。在使用一个外设之前,必须在RCC_AHBxENR或者RCC_APBxENR寄存器中使能相应的时钟。
注意:当产生一个对APB寄存器16位或者8位的访问时,此次访问会被转换成一个32位的访问:桥会复制这个16或8位的数据来提供给32位的向量。
2.2存储器结构
程存、数存、寄存器和IO端口被安排在一个线性的4G地址空间里。
字节在存储器中按照小端格式编码。一个字中的最低字节被称为最低有效字节。……
可寻址的存储器空间被分为8个主要的块,每一个为512MB。
存储器中所有没有分配区域都被称为“保留”。
2.3存储器映射
下图给出了在F40x和F41x中可用的外设的边界地址。
2.3.1内置SRAM
STM32F40x和STM32F41x内置了4K的备份SRAM和192K的系统SRAM。
系统SRAM可以按字节、半字、全字访问。SRAM的起始地址是0x20000000.可以以CPU的速度并0等待地对SRAM进行读写操作。
系统SRAM被分成三个块,112KB,64KB和16KB。有被AHB主机(比如以太网或者USB OTG HS)并行访问的能力:比如以太网可以在CPU读写112KSRAM的同时读写16KSRAM。
CPU可以通过系统总线访问系统SRAM或者在选择从SRAM中启动或者选择物理重映射时通过指令总线/数据总线访问。为了达到SRAM执行的最大效率,应该选择物理重映射。
2.3.2位带
Cortex-M4F存储器映射表中两个位带区。这些区域把位带区的一个位映射到别名区的一个字。对别名区的写操作会对位带区相应的位产生如同读-改-写操作。
在STM32F40x和STM32F41x中的外设寄存器和SRAM都映射到一个位带区,所以就可以对单个位进行读写操作。这个操作只能Cortex-M4F来进行,而不是其他总线主机。
下面的计算公式给出了别名区的字和位带区的位之间的关系:
bit_word_addr=bit_band_base+(byte_offset x32)+(bit_number×4)
这里:
bit_word_addr是位带区的位相应的别名区的字的地址
bit_band_base是别名区的起始地址
byte_offset是包含目标位的字节的数字
Bit_number是目标位在包含它的字节中的位置(0-7)
实例:
下面的例子展示了怎样计算在位于SRAM地址0x20000300的字节的bit2对应别名区的字的地址:
0x22006008=0x22000000+(0x300*32)+(2*4)
写地址0x22006008和对位于SRAM地址0x20000300的字节的bit2进行读-改-写操作会产生同样的效果。