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

STM32L4R9AI discovery开发板的PSRAM时序设置

[复制链接]
smallcsduck 发布时间:2018-4-16 22:34
本帖最后由 smallcsduck 于 2018-4-16 22:35 编辑
0 _: d: i. I. {1 C5 L) N9 a( Y, M$ f) o  r2 W" u
        前一段时间拿到了ST官方的STM32L4R9AI discovery开发板研究了一下。可能是刚出的板子,资料比较少,STM32cubeMX附带的例程也非常少。很多功能没有做demo,那就来慢慢给他补上吧。要达到的目标不是能跑起来就行了,要能发挥最大的性能和全部的功能。             这篇就来讲一下开发板板载的型号为IS66WV1M16EBLL的PSRAM初始化时序设置。      
- S6 W5 V! ~3 I4 l; Z  k- A% A5 x     首先是MCU主频是设置在120M。! d! k7 R, \5 D0 p7 t) _
1.png
) ?2 s2 \7 c0 O. T        PSRAM的FMC接口设置。& z6 _) B! }$ z7 O7 Q  A3 @
2.png
0 y: D* S* n9 o+ [( g2 k5 u% H5 _         时序设置。
# R" ?, d- `5 L, L; T$ Y% I 3.png 1 B+ L+ ?7 C; g' I  c
       下面是寄存器设置,可以直接在SystemInit里初始化PSRAM。* G- R5 w' q: f5 w
__IO uint32_t tmp = 0x00;
  m6 H' n' c& W% M* K4 k0 b0 O' S% N

6 o. q2 a, U9 t, i3 d) x! i* a/*-- GPIOs Configuration -----------------------------------------------------*/3 `" ?( V  A& X5 @8 L6 n. [
   /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */- {7 v  h' H: B1 x2 T, p
  RCC->AHB2ENR   |= 0x000001FF;. i7 G! y8 |) M+ f8 x# I! s% _
  /* Delay after an RCC peripheral clock enabling */
  g2 E; v5 c! \  tmp = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN);
( L" ^2 R# k* q0 e" [2 _* f) j( z( D' }3 y
  /* Connect PDx pins to FMC Alternate function */; P7 S) {  ~# k) x
  GPIOD->AFR[0]  = 0xC0CC00CC;! q, e1 x1 D  g* ?
  GPIOD->AFR[1]  = 0xCCCCCCCC;+ Z6 G9 L: S7 q6 \" |8 U& D" F# e
  /* Configure PDx pins in Alternate function mode */  4 P8 S3 V3 Z) z, G3 z3 I: |4 v
  GPIOD->MODER   = 0xAAAABAFA;0 ~, v7 @$ W7 B7 p
  /* Configure PDx pins speed to 100 MHz */  % ]+ Z0 L' O$ R: q' V2 G- r
  GPIOD->OSPEEDR = 0xFFFFCF0F;
  P: ~2 `, i1 G8 e! @& U- q  /* Configure PDx pins Output type to push-pull */  
' e4 Q7 O; m" [' I5 f; v  GPIOD->OTYPER  = 0x00000000;
2 ^: b% a: M% l! q  /* No pull-up, pull-down for PDx pins */ 1 s1 r* i$ [& k
  GPIOD->PUPDR   = 0x00000000;% ^; B  N" J9 y' F5 J, G
7 s  y9 v  i7 U: d
  /* Connect PEx pins to FMC Alternate function */6 ?. B- `) `6 l& c  v
  GPIOE->AFR[0]  = 0xC000C0CC;, @3 o, Z( E2 ^0 @3 ?- z- }1 g
  GPIOE->AFR[1]  = 0xCCCCCCCC;
; ~& @+ y+ }6 c2 [' {9 J2 _  \  /* Configure PEx pins in Alternate function mode */
# R& j% S* ~% F/ R; Q6 v+ ]6 a6 |8 J  GPIOE->MODER   = 0xAAAABFBA;
3 ~* P2 |1 B& w& {. V  /* Configure PEx pins speed to 100 MHz */ 4 O* q) b) F5 F* M/ b
  GPIOE->OSPEEDR = 0xFFFFC0CF;7 }) Z4 v+ p0 ]2 }6 a5 l
  /* Configure PEx pins Output type to push-pull */  
+ y$ |6 J' ?2 }8 H5 n  ]  GPIOE->OTYPER  = 0x00000000;7 y" \4 j* _2 P! y  P8 k( h
  /* No pull-up, pull-down for PEx pins */
* D2 W8 P7 ?0 }1 c  GPIOE->PUPDR   = 0x00000000;
9 J4 y* Y& x) B7 h  b! v7 P+ \) W* B& p
  /* Connect PFx pins to FMC Alternate function */( @8 b6 x, Z2 ^$ P/ b1 s% Z
  GPIOF->AFR[0]  = 0x00CCCCCC;
$ Z% S# K$ }  H0 n  GPIOF->AFR[1]  = 0xCCCC0000;
1 d% R8 X! ~1 ~/ S  /* Configure PFx pins in Alternate function mode */   6 D/ y. [! q: W6 I6 }4 }
  GPIOF->MODER   = 0xAAFFFAAA;1 [) ^# ^/ l. o- u4 N
  /* Configure PFx pins speed to 100 MHz */ 7 k6 ~  ?2 z; l2 ?* n9 B5 E
  GPIOF->OSPEEDR = 0xFF000FFF;
. R& r  O( @4 g5 K& l& O# x, a  /* Configure PFx pins Output type to push-pull */  . W% O+ ~. `! ^5 v# o, H2 D
  GPIOF->OTYPER  = 0x00000000;
) g( q$ {. n5 b) W  /* No pull-up, pull-down for PFx pins */ 5 c  R7 W  S  K5 M3 O
  GPIOF->PUPDR   = 0x00000000;! P0 B: ^' E* K: D( e1 l

8 _# ]5 V2 u# ~1 V) w5 X. h$ a) |  /* Connect PGx pins to FMC Alternate function */( ^# X8 C, p0 `+ a1 V9 K2 R
  GPIOG->AFR[0]  = 0x00CCCCCC;1 J6 Z8 [- i" j3 p
  GPIOG->AFR[1]  = 0x00000000;
  e& B: u# Z  ]  /* Configure PGx pins in Alternate function mode */
5 O. F$ R- b; Q5 B# P8 ~6 a  GPIOG->MODER   = 0xFFFFFAAA;2 ^: r) V4 J. O0 V
  /* Configure PGx pins speed to 100 MHz */ ) O" B/ x5 R* {7 c: j, ^/ R
  GPIOG->OSPEEDR = 0x00000FFF;0 A5 K. k+ g" N1 m1 s' I
  /* Configure PGx pins Output type to push-pull */  
3 ?0 h% z# @' W$ b: ?& b  GPIOG->OTYPER  = 0x00000000;4 X7 y, J9 d) s
  /* No pull-up, pull-down for PGx pins */ / H6 I; x) U. f' O
  GPIOG->PUPDR   = 0x00000000;+ N. b' {3 |3 Z8 E. Q
, K. x5 P; v/ ^, B- B
/*-- FMC/FSMC Configuration --------------------------------------------------*/
  b9 @' n& T6 Y4 r0 o! X, ~  /* Enable the FMC/FSMC interface clock */
/ Q  l) R% d; N  RCC->AHB3ENR         |= 0x00000001;& l/ m% J  b. y" k) ?" y; g
) E5 L& H8 e4 k# F

. G( H2 I: i* }6 C- D  /* Delay after an RCC peripheral clock enabling */
& ?0 L7 G5 Q/ w  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);+ i; P9 R" Q' {
  /* Configure and enable Bank1_SRAM1 */5 r0 H2 C+ a: h. i9 o6 ~* D
  FMC_Bank1_R->BTCR[0]  = 0x00005095;: r; U$ [/ M* E. A) Y$ ^- R" Q
  FMC_Bank1_R->BTCR[1]  = 0x4FF104F3;
8 c! ?* ]2 }# h! n! a, Y  FMC_Bank1E_R->BWTR[1] = 0x0FF103F3;5 l4 M0 _; t1 T5 ^# ]# p% J# b/ b
% ]5 {) P8 v- N9 \' ^. c, C5 |

% T" }7 l0 n8 K: N9 M        项目代码地址在http://github.com/babycheng/STM32L4R9AIDISCOVERY.git。研究好了的代码会及时推送上去。8 D- A0 N; d7 y" @+ ]
        项目使用 Arm Compiler 6.9 工具链,调试工具是开发板上集成的STLINK。使用MDK编译以后直接进debug模式运行。程序在SRAM1里面运行。烧进flash运行没有设置。5 j3 p; Q! ~4 w

1 |2 Z' c; {- T# V0 Q4 m# y        本人水平有限,以上如有错误之处,敬请指出。
% p; L  _, c! t) d5 X+ @. H! p        转载请注明出处http://smallcsduck.blog.163.com! v5 H' N& w8 t* I7 L9 L9 e" C, t

  C+ }0 H+ O" b/ Z! |
' ~; Q3 Z+ d4 v$ m- }; G0 O9 a2 J
! S% m& l# H; M& D8 d, Y; Y

" T+ p3 e2 Z' p$ _% p5 W; a* w1 h! `: d* U7 n! m/ T! h2 P
赞 收藏 评论1 发布时间:2018-4-16 22:34

举报

1个回答
zero99 回答时间:2018-4-17 14:48:13
感谢分享,请汇总到4月技术原创2 D( h" F9 [) `5 F' C6 }; c' k- M; M
https://www.stmcu.org.cn/module/forum/thread-615497-1-1.html

所属标签

相似技术帖

官网相关资源

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