你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

继上篇FSMC绪论,分析FSMC结构体函数

[复制链接]
一代睡神的崛起 发布时间:2018-12-7 09:01
4 typedef struct# z% E3 F6 o( P: `' e8 e
5 {4 Y8 ~- T, U( t0 {8 E
6 uint32_t FSMC_Bank; /*设置要控制的 Bank 区域 */! G% S9 \! H" h9 w' K! R' W, a, l
7 uint32_t FSMC_DataAddressMux; /*设置地址总线与数据总线是否复用 */
) ^5 x" u7 l, _8 Z) P7 A7 r8 uint32_t FSMC_MemoryType; /*设置存储器的类型 */
$ e# _# t2 \, x0 ^, a9 uint32_t FSMC_MemoryDataWidth; /*设置存储器的数据宽度*/
" e% f, d  b3 u, {2 w3 n. r10 uint32_t FSMC_BurstAccessMode; /*设置是否支持突发访问模式,只支持同步类型的存储器 */
( |! b- B: q3 }4 S& l  K11 uint32_t FSMC_AsynchronousWait; /*设置是否使能在同步传输时的等待信号,*/
& E6 w& R/ `+ N, A& v+ L/ o6 y12 uint32_t FSMC_WaitSignalPolarity; /*设置等待信号的极性*/
6 n9 A+ Z4 {# U$ u7 I" O, e6 M13 uint32_t FSMC_WrapMode; /*设置是否支持对齐的突发模式 */8 n9 a/ P- }- }0 q
14 uint32_t FSMC_WaitSignalActive; /*配置等待信号在等待前有效还是等待期间有效 */
+ C+ W; k9 H2 b3 `8 a' H15 uint32_t FSMC_WriteOperation; /*设置是否写使能 */: I. H& g- ~( s8 H
16 uint32_t FSMC_WaitSignal; /*设置是否使能等待状态插入 */
/ t4 R# d. V5 B" S1 \6 N17 uint32_t FSMC_ExtendedMode; /*设置是否使能扩展模式 */
  p7 S2 [2 s% b18 uint32_t FSMC_WriteBurst; /*设置是否使能写突发操作*/ 9 F# {+ }' t5 P# b& }
19 /*当不使用扩展模式时,本参数用于配置读写时序,否则用于配置读时序*/
" j+ a  e7 y( `2 E6 q20 FSMC_NORSRAMTimingInitTypeDef* FSMC_ReadWriteTimingStruct;
1 f9 o3 s7 o! `" n+ Y21 /*当使用扩展模式时,本参数用于配置写时序*/
1 N0 `& o3 x2 Y! O5 G, O5 P5 w# i22 FSMC_NORSRAMTimingInitTypeDef* FSMC_WriteTimingStruct;
5 i; d. I0 p& U, m23 }: @: l/ D" n1 M7 s7 i! x/ s: J/ ~2 T

: U" f8 o9 A' j& I) N! U

; Q. A' j2 E2 \% S只选以上某个节点来进行分析:; v$ \6 |- L. E7 {7 A5 X
FSMC_Bank:本成员用于选择 FSMC 映射的存储区域,它的可选参数以及相应的内核地址映射范围见表( @9 g$ Z. Z: E! g- }1 q6 o
可以输入的宏                         对应的地址区域
# i  u7 L% d' ^FSMC_Bank1_NORSRAM1      0x60000000-0x63FFFFFF; v( H. l. f4 M+ {
FSMC_Bank1_NORSRAM2      0x64000000-0x67FFFFFF
7 H7 d7 K; P, n( l$ k; y( MFSMC_Bank1_NORSRAM3      0x68000000-0x6BFFFFFF2 N$ C+ t( T* n: Q7 m0 O# L
FSMC_Bank1_NORSRAM4      0x6C000000-0x6FFFFFFF% Q& J( f7 H4 n- R
# g" w+ P6 E( p# I
2 E$ ~6 B( s  _% D1 ?, Y! u
FSMC_BurstAccessMode:本成员用于设置是否使用突发访问模式(FSMC_BurstAccessMode_Enable/Disable),突发访问模式是指发送一个地址后连续访问多个数据,非突发模式下每访问一个数据都需要输入一个地址,仅在控制同步类型的存储器时才能使用突发模式.
/ u2 E3 w' X" Q/ l5 Y. x& h( Y# E, c" }4 Y/ S( Y

+ @8 z2 w5 R$ {/ ~  v5 {' ~FSMC_AsynchronousWait:本 成 员 用 于 设 置 是 否 使 能 在 同 步 传 输 时 使 用 的 等 待 信 号(FSMC_AsynchronousWait_Enable/Disable),在控制同步类型的 NOR或 PSRAM时,存储器可以使用 FSMC_NWAIT 引脚通知 STM32 需要等待.
" b6 K! o  h" d3 Y) z; L. r+ r0 c* Y

6 t. q- P' e3 T! @7 sFSMC_WaitSignalPolarity本成员用于设置等待信号的有效极性,即要求等待时,使用高电平还是低电平(FSMC_WaitSignalPolarity_High/Low).* V6 ]% j0 \& W, D

( `1 X2 e$ m. b' o1 l' H
& Y$ U6 b/ U6 O3 s
FSMC_WriteOperation这个成员用于设置是否写使能(FSMC_WriteOperation_ Enable /Disable),禁止写使能的话 FSMC 只能从存储器中读取数据,不能写入.
2 }" c. r5 B" e: Z) n
* c1 ^- M% ^- w$ ]. b: b9 K' w

- b5 G/ ^) @' p8 ?FSMC_ExtendedMode:本成员用于设置是否使用扩展模式(FSMC_ExtendedMode_Enable/Disable),在非扩展模式下,对存储器读写的时序都只使用 FSMC_BCR 寄存器中的配置,即下面的FSMC_ReadWriteTimingStruct 结构体成员;在扩展模式下,对存储器的读写时序可以分开配置,读时序使用 FSMC_BCR 寄存器,写时序使用 FSMC_BWTR 寄存器的配置,即下面的 FSMC_WriteTimingStruct 结构体.
' Y0 H7 Z6 j& X, P8 `- L  |8 o3 B% G1 C$ G8 g. f' B+ I( b

5 w- t0 i5 p# ^+ c& O& Y二,关于用FSMC来扩展外部SRAM的操作,野火选择的型号为“IS62WV51216”的SRA的芯片为STM32扩展内存,由于笔者没有这元器件在这就不深究了。FSMC的基本内容就是这些了,当然如果大家需要深究就得去多查找下资料了,笔者水平和能力有限望大家批评指正。
7 `$ M' f- V& V2 K% Q
% U8 g* O" |, l9 C+ ~3 O* c. {# |
5 L4 C+ \5 E5 G- E4 t) J

3 `; O: A! J8 S

9 |5 d8 D& L" N4 g' {
7 D4 u* ?$ s! |9 a% K% [  q3 B

评分

参与人数 1 ST金币 +20 收起 理由
STMCU + 20

查看全部评分

收藏 评论2 发布时间:2018-12-7 09:01

举报

2个回答
sincomaster 回答时间:2018-12-7 14:42:37
谢谢分享
zhuzhe 回答时间:2020-3-30 11:14:53
谢谢分享

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版