stm32的FMC数据访问与突发模式

数据访问

配置外部存储器的宽度为 16 位, FMC 将使用内部的 ADDR[25:1]地址来作为对外部存储器的寻址地址 FMC_A[24:0],这段描述是在解释在STM32的FMC(Flexible Memory Controller)中,如何配置外部存储器的宽度为16位时,FMC使用内部的ADDR[25:1]地址作为对外部存储器的寻址,而FMC_A[24:0]用作外部存储器的地址线。

逐步解释:

  1. 配置外部存储器宽度为16位:

    当我们将外部存储器的宽度配置为16位时,这意味着每次读取或写入操作,FMC会同时读取或写入16位的数据。这是因为外部存储器的数据总线宽度被设置为16位。

  2. 使用内部的ADDR[25:1]地址进行外部存储器寻址:

    FMC使用内部的ADDR[25:1]地址线来对外部存储器进行寻址。这些地址线是由FMC控制器生成的,用于指示外部存储器的访问位置(地址)。ADDR[25:1]表示了FMC控制器内部的地址线。

  3. FMC_A[24:0]作为外部存储器的地址线:

    FMC_A[24:0]是FMC控制器的输出引脚,用于连接到外部存储器的地址输入引脚。这些地址线将FMC控制器生成的内部地址传递给外部存储器,以指示要读取或写入的存储器位置。

当我们将外部存储器的宽度配置为16位时,FMC使用内部的ADDR[25:1]地址线进行外部存储器的寻址,而FMC_A[24:0]用作连接到外部存储器的地址线,将FMC生成的地址传递给外部存储器。这样,FMC控制器就能够正确地对16位宽度的外部存储器进行寻址和数据传输。

突发模式

在STM32的FMC(Flexible Memory Controller)中,突发(Burst)是指在一次存储器访问中,通过连续传输多个数据字(burst data)的操作模式。使用突发模式可以提高存储器访问效率,减少传输延迟,并充分利用存储器的带宽。

FMC支持不同的突发模式,其中最常见的是连续突发(Single-burst)和增量突发(Incremental-burst)。

  1. 连续突发(Single-burst):

    连续突发模式是指在一次存储器访问中,FMC按照事先设定的传输长度(burst length)连续传输连续的数据字。传输长度可以配置为4字(32位)、8字(64位)等不同的长度。在连续突发模式下,只需要一次地址传输,然后连续传输指定长度的数据字。

  2. 增量突发(Incremental-burst):

    增量突发模式是指在一次存储器访问中,FMC按照事先设定的传输长度连续传输一系列连续的数据字,同时自动增加地址。传输长度可以配置为4字(32位)、8字(64位)等不同的长度。在增量突发模式下,FMC首先传输起始地址对应的数据字,然后自动增加地址并传输下一个数据字,直到传输指定长度的数据字为止。

通过使用突发模式,FMC可以在一次存储器访问中连续传输多个数据字,减少了每次传输的地址和控制开销,提高了数据传输效率。这对于需要高带宽的应用场景非常有用,例如图形处理、音视频处理等。

在配置FMC时,可以选择突发模式,并设置传输长度和其他相关参数,以满足具体应用的需求。这样可以充分利用FMC的突发功能,提高系统性能和效率。

相关推荐
逐步前行9 分钟前
C数据结构--排序算法
c语言·数据结构·排序算法
星辰pid31 分钟前
stm32的gpio模式到底该怎么选择?(及iic,spi,定时器原理介绍)
stm32·单片机·嵌入式硬件
axuan126512 小时前
10.【NXP 号令者RT1052】开发——实战-RT 看门狗(RTWDOG)
单片机·嵌入式硬件·mcu
-大头.2 小时前
Rust高级类型与零成本抽象实战
stm32·单片机·rust
咯哦哦哦哦2 小时前
vscode arm交叉编译 中 cmakeTools 编译器设置
linux·arm开发·vscode·编辑器
许长安3 小时前
C/C++中的extern关键字详解
c语言·开发语言·c++·经验分享·笔记
奔跑吧邓邓子4 小时前
【C语言实战(71)】C语言进阶:树与图的奇妙数据之旅
c语言···开发实战
一袋米扛几楼984 小时前
【软件安全】C语言特性 (C Language Characteristics)
java·c语言·安全
神仙别闹4 小时前
基于C语言 HTTP 服务器客户端的实验
服务器·c语言·http
小狗爱吃黄桃罐头5 小时前
正点原子【第四期】Linux之驱动开发学习笔记-10.1 Linux 内核定时器实验
linux·驱动开发·学习