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

STM32L4R9AI discovery开发板的PSRAM时序设置

[复制链接]
smallcsduck 发布时间:2018-4-16 22:34
本帖最后由 smallcsduck 于 2018-4-16 22:35 编辑
) ?; g/ s+ ~& `4 i2 i6 E* f) W0 m7 @9 e" }7 R
        前一段时间拿到了ST官方的STM32L4R9AI discovery开发板研究了一下。可能是刚出的板子,资料比较少,STM32cubeMX附带的例程也非常少。很多功能没有做demo,那就来慢慢给他补上吧。要达到的目标不是能跑起来就行了,要能发挥最大的性能和全部的功能。             这篇就来讲一下开发板板载的型号为IS66WV1M16EBLL的PSRAM初始化时序设置。       ( e; k9 f" I0 R& z9 W
     首先是MCU主频是设置在120M。$ X6 L( p. R( S8 q
1.png
/ {9 _" D0 y) p  c8 ^7 L/ N        PSRAM的FMC接口设置。( R2 D4 [; e6 L* r% B; g0 D
2.png
( h& P# o+ L) q5 @0 z         时序设置。% \0 w& _6 L( a. V% c  R2 y
3.png - g. ^# s: W, l8 t
       下面是寄存器设置,可以直接在SystemInit里初始化PSRAM。
7 w) I+ J2 v% j__IO uint32_t tmp = 0x00;% }- O4 \7 s" [* M

' I: y9 k" U# W% i: {5 i$ M/ @7 Y$ ?  K0 I" M7 A
/*-- GPIOs Configuration -----------------------------------------------------*/
3 s! n* a  M" j5 e7 t   /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */
7 [: T7 g6 X& G5 C4 p# Z/ P  RCC->AHB2ENR   |= 0x000001FF;
1 ?- w* m& A, o( D2 a  /* Delay after an RCC peripheral clock enabling */8 e  v" P$ _: [7 k+ Y3 J) i1 X
  tmp = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN);
# d1 _% |$ X+ ]: C6 `3 V* ~: x
6 m3 e7 d. i8 g  /* Connect PDx pins to FMC Alternate function */  @7 o* {7 q0 `5 z3 O
  GPIOD->AFR[0]  = 0xC0CC00CC;
) B1 r5 y1 q- S0 ]2 _3 N* \8 t1 d  GPIOD->AFR[1]  = 0xCCCCCCCC;
' A* W7 d! t, P8 R  /* Configure PDx pins in Alternate function mode */  & c6 C/ W1 A0 T1 {' r1 _) ]7 h8 [
  GPIOD->MODER   = 0xAAAABAFA;
! y; K: Y, C! c& Q3 B1 j  /* Configure PDx pins speed to 100 MHz */  
* g' B  Y2 f3 q  GPIOD->OSPEEDR = 0xFFFFCF0F;
( H2 w% D* E, e: f& I( k2 z  /* Configure PDx pins Output type to push-pull */  
2 H; X- I! u  l# S  GPIOD->OTYPER  = 0x00000000;
8 S0 w8 Z# i- h: N% x1 f+ ~3 ]! M/ E  /* No pull-up, pull-down for PDx pins */
1 _) C! H; e7 x# L0 C  GPIOD->PUPDR   = 0x00000000;
  q5 `/ W) p# r. }# H
# g2 n& D. m9 Z* j/ x; u  /* Connect PEx pins to FMC Alternate function */7 N4 t8 _+ T  F. N. ]6 U6 n0 l
  GPIOE->AFR[0]  = 0xC000C0CC;5 f8 c" b8 q* m1 D. J# K
  GPIOE->AFR[1]  = 0xCCCCCCCC;
; z8 w: S6 p6 I6 w5 b, b9 T  o  /* Configure PEx pins in Alternate function mode */ - s* O* h/ T1 D
  GPIOE->MODER   = 0xAAAABFBA;
' e, O1 ]6 ?2 Q3 e) w$ H3 ]- |  /* Configure PEx pins speed to 100 MHz */
! B: o0 C$ h* |0 s! t  GPIOE->OSPEEDR = 0xFFFFC0CF;
( O; B4 G) l* k3 ?" Y/ }) S  /* Configure PEx pins Output type to push-pull */  
& g0 S0 L8 ]2 ^- y$ U* K8 c: K  GPIOE->OTYPER  = 0x00000000;
6 Z* j; u* S6 X2 [6 q/ w  H8 s7 Z. U  /* No pull-up, pull-down for PEx pins */
  C6 x+ B  [% J. _$ B2 m: N  GPIOE->PUPDR   = 0x00000000;
- K/ E4 @- H- K! x# v. D  k' ?3 {. k& ?/ O5 Z! E2 L$ X" R
  /* Connect PFx pins to FMC Alternate function */( f% S1 Q& D/ ]7 A9 S
  GPIOF->AFR[0]  = 0x00CCCCCC;* r+ y9 Z1 y( k/ d. m, P
  GPIOF->AFR[1]  = 0xCCCC0000;
; `  G$ L$ O4 S+ M3 w  /* Configure PFx pins in Alternate function mode */   6 O2 N* P% k+ N& ?6 C7 ?# h
  GPIOF->MODER   = 0xAAFFFAAA;! q! U! e/ W# m) E& l* [' F) ]
  /* Configure PFx pins speed to 100 MHz */
2 a: }- [+ J/ K7 R8 V; s. c, R  GPIOF->OSPEEDR = 0xFF000FFF;
- k8 Q4 U  ]: u5 G5 Z  Y  /* Configure PFx pins Output type to push-pull */  
6 Q$ V) t" X# U& Y8 F% N$ W  GPIOF->OTYPER  = 0x00000000;1 z  `1 @6 o+ ?3 H5 W8 q) t7 H2 V
  /* No pull-up, pull-down for PFx pins */ ; v$ F+ t7 ~/ c) ]
  GPIOF->PUPDR   = 0x00000000;
+ F/ W4 b  o* y$ X% l! M. U
; r6 d. }# B; g, ?; N  /* Connect PGx pins to FMC Alternate function */
  c, L& l. e2 P. G3 Y* @) E  GPIOG->AFR[0]  = 0x00CCCCCC;
  O1 Y0 J6 P! d& u1 c$ G! o" @  GPIOG->AFR[1]  = 0x00000000;+ D: X3 V' W$ K! i6 u  h* c- I3 E
  /* Configure PGx pins in Alternate function mode */
& Q' A5 H/ Q) H; L+ h) E  GPIOG->MODER   = 0xFFFFFAAA;
8 C& V% j7 f1 c0 T8 `/ `1 E4 U  /* Configure PGx pins speed to 100 MHz */
$ I$ P* l3 K* p/ b2 B" L/ P. f# M  GPIOG->OSPEEDR = 0x00000FFF;% W& d0 t. [0 k
  /* Configure PGx pins Output type to push-pull */  
' O, x8 |& p- [) U- v; i, ?  GPIOG->OTYPER  = 0x00000000;
& r+ P: V; ]% t, {* L# n# |, ~8 m  /* No pull-up, pull-down for PGx pins */
( Q' `) u; Z0 Z  GPIOG->PUPDR   = 0x00000000;) Y0 E8 i! ^2 R
" g. q) h% @. g! ^
/*-- FMC/FSMC Configuration --------------------------------------------------*/7 A( i1 ~# y- {
  /* Enable the FMC/FSMC interface clock */
& {: _+ j. I+ z1 t: u* S  RCC->AHB3ENR         |= 0x00000001;
7 ]/ O1 ~( z7 t: ]. a' L
& F3 S' t4 r0 D# U- S4 Y0 b
: v3 m8 J3 a+ _' z$ M, E, P0 _, n  /* Delay after an RCC peripheral clock enabling */
, C( I% A8 J7 w; W# [  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
: `, C0 t. o, }% N: ~8 b  /* Configure and enable Bank1_SRAM1 */9 e# `4 \8 \3 A3 L- A
  FMC_Bank1_R->BTCR[0]  = 0x00005095;# }5 z$ w8 k3 M9 b4 o
  FMC_Bank1_R->BTCR[1]  = 0x4FF104F3;
; [6 I; v# y1 F, U  r4 J$ s; I  FMC_Bank1E_R->BWTR[1] = 0x0FF103F3;
  m. J7 w# b+ t6 a3 K2 d' }7 V9 X
9 l1 x* m. n& c0 `: F1 T0 ^: w
  Z2 M0 ~. ~- J! a/ K4 D1 T+ V        项目代码地址在http://github.com/babycheng/STM32L4R9AIDISCOVERY.git。研究好了的代码会及时推送上去。2 w# e7 W6 n- K( g* m) L
        项目使用 Arm Compiler 6.9 工具链,调试工具是开发板上集成的STLINK。使用MDK编译以后直接进debug模式运行。程序在SRAM1里面运行。烧进flash运行没有设置。. d, G3 E/ {6 H2 y1 r0 t! ~

; G" L% F% C! v0 L        本人水平有限,以上如有错误之处,敬请指出。% e* z5 u& u8 }/ @
        转载请注明出处http://smallcsduck.blog.163.com
, v" V0 `  r# M* [% X" V6 L3 ?- k% \5 R7 n/ c
5 C4 t6 N7 S+ I5 I$ p6 h
& K4 ~/ b" l& e0 T
: ^. G9 R# S6 a
- z& l* a' g5 U9 g4 s& P
收藏 评论1 发布时间:2018-4-16 22:34

举报

1个回答
zero99 回答时间:2018-4-17 14:48:13
感谢分享,请汇总到4月技术原创6 W  W- J5 J" @! L: |# M* q
https://www.stmcu.org.cn/module/forum/thread-615497-1-1.html
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版