STM32F407总线存储框架及应用设计

发布者:yunhao最新更新时间:2024-04-22 来源: elecfans关键字:STM32F407  总线 手机看文章 扫描二维码
随时随地手机看文章

曾有人在STMCU社区网站咨询如下问题:

由于实验需要,要用到STM32F407的两个DMA并用定时器触发,在使用过程中发现DMA1无法把GPIO的IDR数据传输到内存,调试过程中出现DMA1的数据流传输错误标志,但是使用DMA2没有问题。另外当把访问GPIO的IDR改成访问APB1下的tim5的ARR时,DMA1也能正常工作。请问这是怎么回事?


咨询者提到STM32F4系列中DMA1与DMA和另外两个外设GPIO和TIM5 。为了弄清这个问题,我们有必要先看看STM32F407的总线与存储框架图。 如下图所示:

整个系统架构由多层32位AHB总线矩阵及主从总线构成,并建立起各个主从模块间的互联访问。借助于总线矩阵,可以实现主控设备到从控设备的访问,可以实现多个高速外设的并发访问和高效运行。[需要注意的是,对于STM32F4系列,图中64K CCM并不经过总线矩阵,只能被CPU访问。自然DMA是不能访问它的.]

我们接着看看STM32F407 的DMA1和DMA2的访问框架图。这两个DMA都具有双AHB总线访问端口,一端用于存储器访问,另一端用于外设访问。

结合这幅DMA总线访问框图和上面的系统存储总线框架图可以看出,2个DMA的外设访问端口的总线连接有点不一样。

DMA2的外设访问端口既与总线矩阵相连,经过矩阵可以访问AHB外设,又与AHB-APB桥2相连,可以进一步访问APB2外设;而DMA1却没有与总线矩阵相连,只是跟AHB-APB桥1相连,从而访问APB1外设。[长方形方框代表总线矩阵]

现在的问题是说DMA1访问不了GPIO,但如果换成TIM5就可以。我们可以去芯片数据手册的Device overview部分查看相关总线和外设联结图。截取STM32F40x block diagram的部分如下:

不难看出GPIO外设跟AHB1相连;TIM5跟APB1相连。我们再结合中间的DMA访问框图看得清楚,DMA1的外设端口根本没连接AHB1,自然没法访问相应外设,比如GPIO。而DMA2 可以,因为它可以经过总线矩阵后再去访问AHB1的外设。DMA1为什么能访问TIM5也不难解释了,因DMA1的AHB外设端口总线经过AHB/APB1桥后就可以访问APB1各类外设,而TIM5就是挂在APB1总线上的外设之一。


咨询者的问题基本上靠看上面几幅图可以得到答案。这些图很重要,很多信息用图描述也很直观明了。各技术手册里的插图往往大有乾坤,不要视而不见。上面提到的都是基于STM32F4系列的总线架构,你也可以去看看其它系列的系统总线框图,相信你一定会另有发现和收获。


关键字:STM32F407  总线 引用地址:STM32F407总线存储框架及应用设计

上一篇:基于stm32的GPIO寄存器学习解析
下一篇:全面剖析基于stm32的四轴飞行器设计方案

推荐阅读最新更新时间:2026-03-22 17:35

使用MicroPython开发STM32F407的CAN总线
首先烧录 .dfu 固件到你自己的开发板上,之后把串口 0 的两个引脚上拉。 // A9 is used for USB VBUS detect, and A10 is used for USB_FS_ID. 不然连接电脑后不会识别。 然后就可以尝试使用 CAN 总线了。我这里使用的是 CAN2(PB12 - CAN2_RX, PB13- CAN2_TX)。发送器使用 TJA1050,据说 1050 配合 STM32 使用的时候 1050 的供电需要使用 5V。 代码也很简单。三行就能发送出去了。默认的波特率是 28K。 from pyb import CAN can = CAN(2, CAN.NORMAL)can.sen
[单片机]
stm32f103和stm32f407的GPIO口模式设置以及相互对应的关系
GPIO端口的每个位可以由软件分别配置成8种模式。 ─输入浮空 ─输入上拉 ─输入下拉 ─模拟输入 ─开漏输出 ─推挽式输出 ─推挽式复用功能 ─开漏复用功能 GPIO的模式配置均是从对应的参考手册内的GPIO章节的GPIO功能描述内的表18得到的。表内各个数值对应的内容从stm32f4xx_gpio.h文件内得到。 F103的GPIO口模式设置 3要素: //拷贝自stm32f10x_gpio.h(91行) typedef struct { uint16_t GPIO_Pin; //引脚 GPIOSpeed_TypeDef GPIO_Speed; //速度 G
[单片机]
stm32f103和<font color='red'>stm32f407</font>的GPIO口模式设置以及相互对应的关系
STM32F407工程移植--STM32F401,F400
最近做的项目,遇到问题以及解决方法 1、jlink总是下载失败,PC可以识别,但是keil不识别 解决办法:将工程中的和jlink相关的文件删掉,keil魔术棒中set键,弹出框,重新选择芯片型号,还有的时候是没有上电(囧) 2、stm32f407改为stm32f401步骤 (1)改启动文件,将工程中的启动文件.s文件修改,点击魔术棒--C/C++--Define中对应修改名称(将STM32F40-41xxx改为STM32F401xxx,和启动文件名一致) (2)更改器件型号,点击魔术棒-device中修改器件型号 (3)修改stm32f4xx.h中搜索#ifdef STM32F40xx后面 #define STM32F40-41
[单片机]
UCOSII在STM32F407上的移植
1、ucosii移植准备工作 1.1准备基础工程: 移植的时候需要一个基础工程,为了方便起见我们就选取跑马灯实验,作为ucossii移植的基础工程。 1.2Ucossii源码: 1)Micrium官网下载 2)开发板光盘自带 2、Ucossii移植步骤 1)step1 在基础工程文件夹中先建立UCOSII文件夹,然后在基础工程中UCOSII下建立相应的文件夹:CONFIG、CORE和PORT。 2)step2 向core文件夹中添加文件, 3)step3 向CONFIG文件夹中添加文件, 4)step4 向PORT文件件中添加文件, 5)step5 将Ucosii源码添加到工程中,打开工程,选择 新建三个分组:
[单片机]
UCOSII在<font color='red'>STM32F407</font>上的移植
基于STM32F407库函数开发按键控制LED灯
按键控制灯的亮与灭的效果图: 一、寄存器开发与库函数开发的优缺点 1、寄存器开发 缺点: (1)开发难度大,查阅相关手册比较多 (2)开发效率相对低,产品周期长 (3)可维护性较差 (4)可移植性、阅读性差 优点: 运行效率高。 2、库函数开发 优点: (1)开发难度小,有库函数封装,即可实现功能 (2)开发效率高,产品周期短 (3)可维护性高 (4)可移植性、阅读性强 缺点: 运行效率相对寄存器低一些。 STM32库函数实际是ST公司对寄存器开发封装。 二、LED库函数开发 LED库开发要添加库文件:stm32f4xx_gpio.c (1)原理图可参看上篇文章:入门篇 | STM32F407寄存器开发--点灯 (2)
[单片机]
基于<font color='red'>STM32F407</font>库函数开发按键控制LED灯
STM32F407 GPIO口输出配置配置步骤
STM32F407ZGT6 是意法半导体(STMicroelectronics)公司推出的一款高性能ARM Cortex-M4核心的32位微控制器(MCU)。它是 STM32F4 系列的一员,具备强大的处理能力和丰富的外设功能,适用于各种应用领域。 【1】F407建工程所需依赖文件 【2】 新建工程 **说明:STM32F4 的主频最高是 168Mhz,所以我们一般设置 PLLCLK 为 168Mhz(M=8,N=336,P=2),通过 SW 选择 SYSCLK=PLLCLK即可得到 168Mhz 的系统运行频率。** 【3】分析LED硬件原理图 【4】编写L
[单片机]
<font color='red'>STM32F407</font> GPIO口输出配置配置步骤
STM32F407板子上搭建TCP服务器及TFTP服务器
开发平台 STM32F407开发板(带以太网),板子上的PHY为LAN8720A,没有用到显示屏全为串口输出调试信息。实现功能 通过STM32CubeMX在原子STM32F407板子上搭建TCP Server 及 TFTP Server ,实现这些功能非常简单。步骤 功能介绍、工程搭建、工程代码、TFTP 服务器测试 1、TCP Server 实现显示连接上的客户端IP及对客户端发来的数据回传2、TFTP Server 实现IAP功能及读取MCU内部FLASH数据。这里用到的是文件传输协议,主要是参考官方文档UM1709,及官方STM324xG_EVAL的LWIP IAP例子。 工程搭建 外设配置 打开STM32CubeMX,点N
[单片机]
在<font color='red'>STM32F407</font>板子上搭建TCP服务器及TFTP服务器
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved