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

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

[复制链接]
一代睡神的崛起 发布时间:2018-12-7 09:01
4 typedef struct
; N7 q3 `: o( r! x8 {, S* E* L. M5 {1 N$ N# c8 {5 r! h6 K4 w! b
6 uint32_t FSMC_Bank; /*设置要控制的 Bank 区域 */
& u' a' I+ b, ]# J/ \" r7 uint32_t FSMC_DataAddressMux; /*设置地址总线与数据总线是否复用 */: ?+ a* w$ v1 {( W+ o' T- C% o
8 uint32_t FSMC_MemoryType; /*设置存储器的类型 */0 s  {& T# ~0 Y8 s
9 uint32_t FSMC_MemoryDataWidth; /*设置存储器的数据宽度*/
0 c* w, O8 d, {: L$ a, {10 uint32_t FSMC_BurstAccessMode; /*设置是否支持突发访问模式,只支持同步类型的存储器 */
$ H3 P; i% N4 g1 U8 M11 uint32_t FSMC_AsynchronousWait; /*设置是否使能在同步传输时的等待信号,*/
4 J# R$ N9 z, D12 uint32_t FSMC_WaitSignalPolarity; /*设置等待信号的极性*/
$ g/ j$ _+ H9 t  D13 uint32_t FSMC_WrapMode; /*设置是否支持对齐的突发模式 */
$ v+ j8 T7 M/ s. ?* T14 uint32_t FSMC_WaitSignalActive; /*配置等待信号在等待前有效还是等待期间有效 */
7 d/ n: ^" r0 B15 uint32_t FSMC_WriteOperation; /*设置是否写使能 */
! t$ u' t; {! |. s* V16 uint32_t FSMC_WaitSignal; /*设置是否使能等待状态插入 */# S, ~2 K% }6 V' l2 i
17 uint32_t FSMC_ExtendedMode; /*设置是否使能扩展模式 */
& Y" E0 Q% G( i5 [9 }0 T1 F18 uint32_t FSMC_WriteBurst; /*设置是否使能写突发操作*/ 8 T; \- T' L# H) _1 h( v, e+ M, _7 Q
19 /*当不使用扩展模式时,本参数用于配置读写时序,否则用于配置读时序*/ . w. O( f) v" Q9 ]& L# H4 G. c
20 FSMC_NORSRAMTimingInitTypeDef* FSMC_ReadWriteTimingStruct; , U, o3 j& B( x' \" N
21 /*当使用扩展模式时,本参数用于配置写时序*/- A+ }/ F* ~( I: C
22 FSMC_NORSRAMTimingInitTypeDef* FSMC_WriteTimingStruct;3 ~. B; u6 n" G, t+ b& w
23 }  Z  \( w) l: ]9 n1 D+ a/ G
$ o3 Q6 n7 K" n6 G, y9 ~

9 d& I" ~4 B/ q7 K! v* Q9 S只选以上某个节点来进行分析:1 \* i3 Q9 ?  a& b
FSMC_Bank:本成员用于选择 FSMC 映射的存储区域,它的可选参数以及相应的内核地址映射范围见表' E5 w7 G; ]+ _9 R1 ~
可以输入的宏                         对应的地址区域, c$ B  G: `5 z3 X
FSMC_Bank1_NORSRAM1      0x60000000-0x63FFFFFF3 a, [) W( o9 q7 o# {6 N
FSMC_Bank1_NORSRAM2      0x64000000-0x67FFFFFF& K  h5 P* q9 N1 ?% {2 {
FSMC_Bank1_NORSRAM3      0x68000000-0x6BFFFFFF/ ?. U  u! ]' p- s) ]7 e  R
FSMC_Bank1_NORSRAM4      0x6C000000-0x6FFFFFFF
4 c( a2 |, P- S" x3 e' B9 r1 R; ?; J, d; D
$ c+ \" M; b' }) D9 c) |: X8 E" w
FSMC_BurstAccessMode:本成员用于设置是否使用突发访问模式(FSMC_BurstAccessMode_Enable/Disable),突发访问模式是指发送一个地址后连续访问多个数据,非突发模式下每访问一个数据都需要输入一个地址,仅在控制同步类型的存储器时才能使用突发模式.
* D" Y5 D% m" m, |- W: o( b9 `
  P# |6 u1 ^8 n- O$ \/ S. t
0 _) i, ?. c$ k- c( a
FSMC_AsynchronousWait:本 成 员 用 于 设 置 是 否 使 能 在 同 步 传 输 时 使 用 的 等 待 信 号(FSMC_AsynchronousWait_Enable/Disable),在控制同步类型的 NOR或 PSRAM时,存储器可以使用 FSMC_NWAIT 引脚通知 STM32 需要等待.2 w+ M. H; y5 s4 ?. t& e

* \# H4 A5 T, J+ T; [% L; V% O: b
: \$ j* n# S; |6 X: F
FSMC_WaitSignalPolarity本成员用于设置等待信号的有效极性,即要求等待时,使用高电平还是低电平(FSMC_WaitSignalPolarity_High/Low)./ h$ a9 a% d4 N; ~8 F
# P: v$ _6 Z+ s; f+ r. q

9 M# K' w' Q% T4 b" C4 iFSMC_WriteOperation这个成员用于设置是否写使能(FSMC_WriteOperation_ Enable /Disable),禁止写使能的话 FSMC 只能从存储器中读取数据,不能写入.
3 P" U( u- V4 t" O- C. P" e5 n, [1 F3 }3 i3 t% l% q

' @7 R) D" Y8 H# @5 A4 S9 a0 v9 qFSMC_ExtendedMode:本成员用于设置是否使用扩展模式(FSMC_ExtendedMode_Enable/Disable),在非扩展模式下,对存储器读写的时序都只使用 FSMC_BCR 寄存器中的配置,即下面的FSMC_ReadWriteTimingStruct 结构体成员;在扩展模式下,对存储器的读写时序可以分开配置,读时序使用 FSMC_BCR 寄存器,写时序使用 FSMC_BWTR 寄存器的配置,即下面的 FSMC_WriteTimingStruct 结构体.7 K) m  D/ T! N

8 a3 }, E/ H/ x  c8 N7 b* |

- c5 l0 Y$ J$ p. B: X$ i二,关于用FSMC来扩展外部SRAM的操作,野火选择的型号为“IS62WV51216”的SRA的芯片为STM32扩展内存,由于笔者没有这元器件在这就不深究了。FSMC的基本内容就是这些了,当然如果大家需要深究就得去多查找下资料了,笔者水平和能力有限望大家批评指正。& {0 Q' f  y- a5 e  Q

( L; }( d1 v! `) P. g0 T, C* M3 ]
$ G: V" H0 W7 v  U- T
1 q( `, U1 |, E. J
/ A$ ]8 I: a0 f! b: @8 b7 j

( H! t( T" _% \$ k: I

评分

参与人数 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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版