STMCU小助手
发布时间:2022-6-14 13:44
|
01. FSMC简介 STM32F407 或 STM32F417 系列芯片都带有 FSMC 接口,ALIENTEK 探索者 STM32F4 开发板的主芯片为 STM32F407ZGT6,是带有 FSMC 接口的。 FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接,STM32F4 的 FSMC 接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器。 + y+ K- U! t4 }% s2 X: w* i 02. FSMC主要特性7 ~( t: C0 {7 v2 Q9 x/ g FSMC 能够连接同步、异步存储器和 16 位 PC 存储卡。其主要用途如下:: J* ~; k" v( }2 L ● 将 AHB 数据通信事务转换为适当的外部器件协议 ● 满足外部器件的访问时序要求 所有外部存储器共享地址、数据和控制信号,但有各自的片选信号。FSMC 一次只能访问一个外部器件。 l7 A: D! G, ^/ L8 w+ q FSMC 具有以下主要功能:% c* l q' N+ C' E h' _' {- K ● 连接静态存储器映射的器件:* k" {1 ^! I6 j+ ^0 ] — 静态随机访问存储器 (SRAM), A; V1 z- Z3 G/ z) @ — 只读存储器 (ROM) — NOR Flash/OneNAND Flash — PSRAM(4 个存储区域) ● 两个带有 ECC 硬件的 NAND Flash 存储区域,可检查多达 8 KB 的数据 ● 16 位 PC 卡兼容设备1 O# E* ]& d d) |$ o ● 支持对同步器件(NOR Flash 和 PSRAM)的突发模式访问 ● 8 或 16 位宽的数据总线 ● 每个存储区域有独立的片选控制 ● 每个存储区域可独立配置 ● 可对时序进行编程,以支持各种器件,尤其是: — 等待周期可编程(最多 15 个时钟周期)' C X, d. m( {9 U6 c6 f — 总线周转周期可编程(最多 15 个时钟周期) — 输出使能和写入使能延迟可编程(最多 15 个时钟周期)5 D7 ^- g. z) v; ? — 独立的读和写时序和协议,以支持各种存储器和时序 ● 写使能和字节通道选择输出,可配合 PSRAM 和 SRAM 器件使用 ● 将 32 位的 AHB 事务转换为针对外部 16 位或 8 位器件进行的连续 16 位或 8 位访问。0 h& e& U4 \, Y; B5 M6 ]* N$ v ● 用于写入的 FIFO,2 字长(对于 STM32F42x 和 STM32F43x,为 16 字长),每个字为32 位宽,仅用于存储数据,而不存储地址。因此,此 FIFO 仅会缓冲 AHB 批量写事务。从而可对慢速存储器执行写入操作后能快速释放 AHB,以供其它操作使用。每次仅缓冲一个突发事务:如果在有操作正在进行时发生一个新的 AHB 突发事务或者一个单独事务,则 FIFO 将会清空。FSMC 将插入等待周期,直至当前存储器访问已完成)。 ● 外部异步等待控制/ W |: z' P Q7 I5 G/ I! m/ K 定义外部器件类型和其特性的 FSMC 寄存器通常在启动时进行设置,并且在下次上电或复位前保持不变。但也可随时更改这些设置。 % J* }" r/ x( R 03. FSMC框图4 M3 @; f |1 V- @. l FSMC 包含四个主要模块: ● AHB 接口(包括 FSMC 配置寄存器)* z" L/ w/ `. [# d ● NOR Flash/PSRAM 控制器 ● NAND Flash/PC 卡控制器1 q7 H$ o4 r5 T! T# d! }0 t ● 外部器件接口6 r! V# e1 _6 A: z8 C* l 0 o/ W# L, p( n: m2 d& W$ C' e
04. 外部器件地址映射( d/ A4 F; J8 q) z" p 从 FSMC 的角度,外部存储器被划分为 4 个固定大小的存储区域,每个存储区域的大小为256 MB:. a8 T' a R4 s+ ^1 }* Y* x ● 存储区域 1 可连接多达 4 个 NOR Flash 或 PSRAM 存储器器件。此存储区域被划分为 4 个NOR/PSRAM 区域,带 4 个专用片选信号。 Q3 ~9 G I) M) H( W; P) E ● 存储区域 2 和 3 用于连接 NAND Flash 器件(每个存储区域一个器件) ● 存储区域 4 用于连接 PC 卡设备9 b7 \$ K2 \0 Q* r1 f, k 对于每个存储区域,所要使用的存储器类型由用户在配置寄存器中定义。 # ^1 L* Y/ S$ Y! R
, C2 g0 y9 [; H3 S1 J. n 4.1 NOR/PSRAM地址映射 HADDR[27:26] 位用于从 表 185 中所示的四个存储区域之中选择其中一个存储区域。4 v$ V9 y0 e, u& { 7 G9 @: O' i' y
HADDR[25:0] 包含外部存储器地址。由于 HADDR 为字节地址,而存储器按字寻址,所以根据存储器数据宽度不同,实际向存储器发送的地址也将有所不同,如下表所示。 2 k" R5 Y2 k& M
8 H7 x9 _1 V1 E2 R 4.2 NOR Flash/PSRAM控制器 ^. q& R6 R/ z' U8 r8 W7 @, L FSMC 会生成适当的信号时序,以驱动以下类型的存储器:7 E8 ^# W$ N" A8 @% z# k5 \ ● 异步 SRAM 和 ROM9 w. K5 o, h" y+ N — 8 位) I N: l5 D+ ]2 { — 16 位' y9 Q& B/ L& Y, o. c- _0 k5 ^ — 32 位 ● PSRAM(Cellular RAM) — 异步模式 — 突发模式 — 复用或非复用- V. D2 p" v) L2 V# ^$ @, ? ● NOR Flash/ w' A7 q# l1 R — 异步模式或突发模式 — 复用或非复用. j; Y5 G# ]: n6 a5 T, E4 D # l$ s, O% S4 ?% K FSMC 会为每个存储区域输出唯一的片选信号 NE[4:1]。所有其它信号(地址、数据和控制)均为共享信号。8 ?9 O, E# f! e x% G8 n2 G* r 对于同步访问,FSMC 只有在读/写事务期间才会向所选的外部器件发出时钟 (CLK)。HCLK时钟频率是该时钟的整数倍。每个存储区域的大小固定,均为 64 MB。# |+ x0 Y( U) q X 每个存储区域都通过专用的寄存器进行配置(请参见 第 32.5.6 节 )。 ; j/ s0 J f# M, ?7 g" M5 V9 q 存储器的可编程参数包括访问时序(请参见 表 189)和对等待管理的支持(用于在突发模式下访问 NOR Flash 和 PSRAM)。 0 e: `( o# E; a: B- \1 R 05. 寄存器描述 5.1 SRAM/NOR-Flash 片选控制寄存器 1…4 (FSMC_BCR1…4) SRAM/NOR-Flash chip-select control registers 1…4, `7 V3 M, n. A9 w 偏移地址:0xA000 0000 + 8 * (x — 1),x = 1…44 ?1 m& f# g# V! ?: a9 i1 R 复位值:0x0000 30DX 该寄存器包含每个存储区域的控制信息,用于 SRAM、ROM 和异步或突发 NOR Flash。5 [( r( p6 u, n$ x5 Z4 s$ }
( E% W7 B# o% ?1 |" q1 ~; M 5.2 SRAM/NOR-Flash 片选时序寄存器 1…4 (FSMC_BTR1…4) SRAM/NOR-Flash chip-select timing registers 1…47 p' [/ t" E9 B4 ]- T$ T 偏移地址:0xA000 0000 + 0x04 + 8 * (x — 1),x = 1…4 复位值:0x0FFF FFFF 该寄存器包含每个存储区域的控制信息,用于 SRAM、ROM 和 NOR Flash。如果FSMC_BCRx 寄存器中的 EXTMOD 位置 1,该寄存器将和另外一个寄存器配合来配置写入和读取的时序参数。也就是说有 2 个寄存器可用:一个用于配置读取访问(此寄存器),另一个用于配置写入访问(FSMC_BWTRx 寄存器)。7 V! C, a& t0 x7 G, [ 9 a! x( y& z5 J4 q& O
! F( z, g8 C2 Y 5.3 SRAM/NOR-Flash 写入时序寄存器 1…4 (FSMC_BWTR1…4) SRAM/NOR-Flash write timing registers 1…4& g' \& q* v, w8 e; g0 J5 E" N/ ? 偏移地址:0xA000 0000 + 0x104 + 8 * (x — 1),x = 1…4& k5 p6 l$ f; |( p7 b- M 复位值:0x0FFF FFFF1 f ]# V* h' I* ? 该寄存器包含每个存储区域的控制信息,用于 SRAM、ROM 和 NOR Flash。当 FSMC_BCRx' _ {8 L. B9 C& x# Z1 b 寄存器中的 EXTMOD 位置 1 时,该寄存器将处于有效状态,可以进行写入访问。
5 }8 j3 Q: m- R0 m i1 { ; s+ i' @, E' Q8 h% u |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版