曾有人在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总线存储框架及应用设计
推荐阅读最新更新时间:2024-11-02 10:07
适合充电桩总线隔离,隔离电压达到5000V的高速光耦
电动汽车产业在新能源背景下蓄势待发,而充电桩、充电站的建设和管理影响着整个电动汽车的产业发展,是汽车商业化、产业化过程中的重要环节。充电桩实现对动力电池的快速、高效、安全、合理的电量补给以及更加人性化的设计是充电桩设计的基本原则要求。 目前充电桩主要涉及到的控制管理单元包括:主控单元、电压控制单元、电流控制单元、温度控制单元、显示控制单元、电池控制单元、打印控制单元。作为《电动汽车充电系统技术规范》认定的标准充电控制网络CAN-bus把各个控制单元连接起来,工作原理是:各个控制单元完成主控电压、电流、温度等参数采集与控制,然后将采集结果通过CAN总线发给主控节点,主控几点对来自各个控制单元的数据进行相关处理。CAN总线在整个控制系
[嵌入式]
基于DSP的高低速CAN总线汽车控制系统设计
随着现代汽车性能的不断提升,新的控制功能不断增加,如中央门锁、灯光控制、玻璃升降、后视镜调节、天窗控制、座椅调节和点火延时控制等。 传统的控制系统多采用继电器和独立模式控制,使得车内线束过多且布线复杂,从而造成了严重的电磁干扰,导致系统的可靠性下降。目前,很多汽车采用CAN总线将整个汽车控制系统联系起来统一管理,实现数据共享和相互之间协同工作,使车内线束布线方便可靠,提高了汽车整体的安全性和性价比,增强了自身的竞争力。而各个控制单元对系统的响应时间要求不一样,如防抱死制动系统(ABS)、驱动防滑系统(ASR)、电控行驶平稳系统(ESP)、安全气囊(SRS)等对系统实时性要求较高;照明控制、空调控制等对系统的响应时
[嵌入式]
基于CAN总线和无线技术的输液网络监控系统
据调查,目前在我国的大、中、小型医院及下属社区卫生院、诊所等医疗机构的输液速度和输液量几乎都是不精确的值,凭肉眼观察来估计输液速度。输液速度是护士通过转动输液器上的手动滑轮来控制的,输液量也是护士用只有两个标记的液体瓶倾倒后估计的。利用人工监视输液情况,给病人和医务人员带来许多不便。随着无线技术、网络技术和计算机技术的迅速发展,为输液采用无线、网络监控带来了便利条件。目前已有一些相关输液的研究成果,实现了输液监视、控制、报警等功能,但主要是单台设备独立使用,未能实现网络监控。文献设计了一种基于RS485总线的输液网络化监控系统,但采用RS485总线和有线监控在许多方面存在不足。由于CAN总线和无线技术在各个方面得到普遍应用,
[网络通信]
一种CAN总线高层通信协议的设计与实现
1 引言 can全称为controller area network,即控制器局域网,由德国bosch公司最先提出,是国际上应用最广泛的现场总线之一。最初can 被设计作为汽车环境中的通讯,在汽车电子控制装置之间交换信息形成汽车电子控制网络。由于其卓越的性能、极高的可靠性和低廉的价格现已广泛应用于工业现场控制、医疗仪器等众多领域 。
can协议是建立在osi 7层开放互连参考模型基础之上的。但can协议只定义了模型的最下面两层:数据链路层和物理层,仅保证了节点间无差错的数据传输。can的应用层协议必须 由can 用户自行定义,或采用一些国际组织制订的标准协议。应用最为广泛的是devicenet和canopen,分别广
[嵌入式]
基于现场总线与虚拟仪器的车辆监控系统
1 引言
目前,在控制领域,虚拟仪器系统的应用多局限于采集-反馈-控制的点对点方式。而对于多电机的系统,特别是多电机驱动的蓄电池车辆系统,则需要实现大量的信息采集、分布式的协调控制、实时的反应速度等功能。传统方式硬件组成复杂、走线繁琐、调试安装不便、不易扩展,且没有发挥虚拟仪器的优势,因此本文提出了一种基于CAN(Controller Area Network)总线的虚拟仪器系统的设计方案,将计算机通讯、现场总线技术和虚拟仪器的概念很好的结合起来,设计出了一套结构简单、实时性高、扩展性强的分布式监控系统,在复杂控制系统中实现了多电机控制与监测的实时调节、控制效果的数字化和图形化。
2 总体方案的提出
图1 系统
[嵌入式]
ARM架构和总线协议如何支持Linux原子操作?
这篇文章探讨ARM架构和总线协议如何来支持的。对于某款ARM处理器和总线CCI,CCN和CMN产品的具体实现,属于实现层面的微架构,一般需要NDA,这里不予讨论。 顺便提一下,在ARMv8 架构下对应的是LDXR (load exclusive register 和STXR (store exclusiveregister)及其变种指令,另外,在ARMv8.1架构中引入atomic instruction, 例如LDADD (Atomic add),CAS(Compare and Swap)等。 Exclusive monitor 首先,作为一个爱问为什么的工程师,一定会想到LDXR/ STXR和一般的LDR/STR有什么
[单片机]
常用车载总线CAN、CANFD、LIN、FlexRay 和 Ethernet概述
随着现代汽车的电子化程度越来越高,汽车总线系统也变得越来越复杂。汽车总线测试是一项重要的任务,它有助于确定车辆电子系统中的问题,并保障车辆的安全和可靠性。本文将介绍五种常见的汽车总线系统和相关的测试工具。 CAN总线 …… 控制器区域网(Controller Area Network,CAN)是一种常用于现代汽车中的数据通讯总线。CAN总线是一种高速总线,它支持多种不同的数据传输速率,可以用于传输各种车辆系统的数据,例如引擎、传动系统、车辆稳定性控制系统和防盗系统等。 CAN FD总线 …… CANFD总线是一种高速CAN总线,支持更快的数据传输速率和更大的数据负载。它是CAN总线的进化版,可用于支持更高带宽的应用,例如
[嵌入式]
EtherCAT总线运动控制器应用进阶一
一、材料准备 1.硬件 A.ZMC432控制器一台,带EtherCAT总线接口。 B.松下EtherCAT伺服驱动器+电机一套 C.电脑一台。 D.带屏蔽层网线两根。 E.24V直流电源一个。 F.接线端子与连接线若干。 2.软件 A.ZDevelop V3.10版本控制器编程软件。 从正运动官网www.zmotion.com.cn下载压缩包,解压后直接运行应用程序,无需安装。 B.松下伺服驱动器上位机调试软件。 从松下官网下载后安装。 二、硬件接线 1.控制器接线 控制器接口的用途参见下图。 A.主电源:将控制器主电源接线端子上的E+24V端子接入24V直流电源正极,将EGND端子接入24V直流电源负极。 B.以太网E
[嵌入式]