STM32中FSMC功能深入理解

 一,引入问题?

        我在STM32中使用FSMC控制外部SRAM时,每个区域基地址都不一样,读取数据时要加上基地址,进行偏移,说明为什么使用不同每区域基地址都可以进行准确读写,但是加上基地址后,地址就不一样了呀我的理解,但是他却可以选择不同区域进行控制,STM32对外部内存地址进行控制时,是根据偏移量进行选择地址吗?我经过一段时间思考后,这样理解

        

二,解析

        在STM32中使用FSMC控制外部SRAM时,每个区域(Bank内的不同区域或不同的Bank)确实可以有不同的基地址。这些基地址在STM32的硬件设计中是预定义的,用于区分和访问连接到FSMC的不同外部存储器区域。当你进行读写操作时,确实需要加上这些基地址,并根据需要访问的数据位置进行偏移,以形成完整的访问地址。

2.1为什么使用不同每区域基地址都可以进行准确读写?

  1. 硬件映射:STM32的FSMC硬件设计允许将不同的外部存储器区域映射到不同的地址空间。这些地址空间在STM32的内部地址总线上是独立的,因此即使基地址不同,也不会导致地址冲突。

  2. 配置寄存器:在初始化FSMC时,你需要为每个区域配置相应的基地址、时序参数、数据总线宽度等。这些配置信息存储在FSMC的配置寄存器中,STM32的硬件会根据这些配置信息来解析和生成对外部存储器的访问地址。

  3. 地址解析:当你通过STM32的CPU访问外部存储器时,STM32的硬件会自动将你的访问地址(包括基地址和偏移量)解析为对外部存储器的实际访问地址。这个解析过程是在硬件层面完成的,你无需在软件层面进行干预。

2.2加上基地址后,地址就不一样了呀,但是他却可以选择不同区域进行控制?

        是的,加上基地址后形成的完整访问地址与原始偏移量确实不同。但是,这个完整地址是STM32硬件用来访问外部存储器的实际地址。STM32的FSMC能够识别这个地址中的基地址部分和偏移量部分,并根据基地址将访问请求路由到正确的外部存储器区域。

2.3STM32对外部内存地址进行控制时,是根据偏移量进行选择地址吗?

        不完全是。STM32对外部内存地址的控制是基于完整地址的,这个完整地址由基地址和偏移量组成。但是,在FSMC内部,它确实会根据基地址来区分不同的外部存储器区域,并根据偏移量来确定在该区域内要访问的具体位置。因此,可以说STM32在控制外部内存地址时,既考虑了基地址也考虑了偏移量,但它们是作为一个整体来处理的。

总结来说,STM32的FSMC通过预定义的基地址和可配置的偏移量来实现对外部存储器的精确访问。这种设计既保证了地址空间的独立性,又提高了系统设计的灵活性和内存访问的效率。

三,总结 

 在学习许多计算机外设以及什么协议的时候,往往都是难以理解的,因为他们是看不见和摸不着的,所以会学不懂,懵圈,这个时候就是对于整个流程不太熟悉,需要我们静下心来多去理解,梳理,希望这个时候大家能够迈过去!

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值