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

【经验分享】stm32的FSMC

[复制链接]
STMCU小助手 发布时间:2022-2-7 22:00
   之前用的stm32f103rbt6,它是100引脚以内的,不带FSMC。驱动液晶屏或者SRAM要自己写时序方面的程序,比较麻烦。后来换成stm32f103zet6,带有FSMC。不过在学习FSMC的时候遇到了一个问题。

! }" M7 `! C3 X9 S4 D
041516145129654.png

: @7 l  W+ k$ _' t: S% K# n) A# h8 t+ t& ]* c; s# d
最后两句一开始不理解,后来查阅了一些资料,终于搞明白了。
    首先说明一些常识:地址总线宽度只是代表CPU寻址范围大小,与CPU多少位无关,也就是说32位CPU地址线不一定是32根。
stm32的FSMC寻址以字节为单位,也就是说如果定义一个16位数组 u16 temp[5]  如果temp对应的地址是0x00000000 那么temp+1对应的地址是0x00000002 (地址是加2)
1 r1 X2 `/ e) p+ p$ D' ^  q6 D    IS62WV51216是16位宽512K容量的SRAM,也就是它的一个地址对应两个字节,但STM32是一个地址一个字节,这就出现了对准问题。如果我们的地址线依然是stm32A0~A15 和 存储器的A0~A15 连接, 如果stm32要从sram中读取前面提到数组中的temp[1]。stm32会给出0x0002(二进制地址0000000000000010b) 可是对于我们这个sram来说 读到却是temp[2],因为sram一个地址就是一个16位数据 。为了解决这个问题, 我们只需要在给sram送地址时,右移一位,再送地址即可(sram的一个地址对应stm32两个地址的数据)。
/ Z' S% {: K/ R! l- D而为了给用户提供方便 如果你选择的是16位宽度的sram FSMC会在你送地址的时候自动为你做右移一位的操作
" q; b- G7 y3 `3 r: y+ L. g/ ?6 L* N此时会有另外一个问题 每次都右移一位 A0没用吗 也即只能读写偶地址的数据吗?  k' U9 I: J. w% O
这也就是NBL0和NBL1的作用了 如果你要进行字节操作
5 {- ?' {2 g1 k  Y! p+ N如stm32发送地址0x0001读取一个字节 右移一位对应的是sram地址0x0000处的16位数据 FSMC会根据AO 来控制NBLO和NBL1为10 读取高字节数据  W; h: V; b/ j* w& t3 s4 F: c3 e6 P3 s
所以呢,偶字节读写时仅NBL0有效,奇字节读写时仅NBL1有效 字读写都有效(低电平有效)。
2 J& q9 @; c0 y# B) ], C5 k

1 E. K' R* V1 i+ \! ^
SRAM用了FSMC的UB/LB信号,控制字节高地位了。! u+ `# a6 o% Y( t" l5 d$ t9 J
因为SRAM是16位的,当你要读写8位数据的时候,UB/LB就发挥作用了,比如在SRAM的地址0写入1个8位的字节,那么LB会输出有效,而UB则保持不变(高电平),表示写入地址0的低8位,写法就是:
5 b+ {7 x( B+ k/ u$ p*(vu8*)(Bank1_SRAM3_ADDR+0)=0Xaa;//0XAA是你想写入的字节。
5 {3 |' z8 f2 j0 O, d0 B而如果要在SRAM地址0写入高8位,那么对于STM32来说,地址就相应加1即可,即:  i0 d) K4 k. v& ?3 ]
*(vu8*)(Bank1_SRAM3_ADDR+1)=0XAA;
2 x6 k' O6 I3 W! f3 N此时LB会输出高电平,UB会输出有效电平(低电平),表示写入地址0,的高字节。9 T+ }6 C5 X- @- g
这样,对STM32来说,地址就是连续的了,0,1,2,3,4,5,都是合法的了,自然就不需要你的地址右移对齐了,硬件通过UB/LB去控制了。
那这个地址+1或者+2要根据写入数据是8位还是16位来确定.
1 a' |! ^5 f7 {- i. j# j0 p% D
赞 收藏 评论0 发布时间:2022-2-7 22:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版