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

STM32L4R9AI discovery开发板的PSRAM时序设置

[复制链接]
smallcsduck 发布时间:2018-4-16 22:34
本帖最后由 smallcsduck 于 2018-4-16 22:35 编辑 : y' k9 n" b2 m+ ]3 X

) p- X  C3 B% q        前一段时间拿到了ST官方的STM32L4R9AI discovery开发板研究了一下。可能是刚出的板子,资料比较少,STM32cubeMX附带的例程也非常少。很多功能没有做demo,那就来慢慢给他补上吧。要达到的目标不是能跑起来就行了,要能发挥最大的性能和全部的功能。             这篇就来讲一下开发板板载的型号为IS66WV1M16EBLL的PSRAM初始化时序设置。       ; y; d' j' i! O& @& X6 Z* `/ J
     首先是MCU主频是设置在120M。
2 ]9 i3 @- C; J, t3 r) h. H 1.png
( }1 I& o. b7 T0 c0 V/ z, v3 i. r        PSRAM的FMC接口设置。
$ d0 Q; r  H. H# E9 |) B 2.png
: [! c9 l  B6 C! |( p         时序设置。( m; u! C2 w/ C) k+ W6 D
3.png
0 B- O* }) ^: J# q- D       下面是寄存器设置,可以直接在SystemInit里初始化PSRAM。+ l, C: Y, z. \
__IO uint32_t tmp = 0x00;8 t. L4 y+ G  |( e/ U

  T- f, o* C) v- z8 e0 ?; Q  v. o. ^) f6 }( M, a) }' F
/*-- GPIOs Configuration -----------------------------------------------------*/4 `1 L7 o- f$ k2 g* f* @
   /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */4 P4 @9 a& Z1 W6 G& j1 |
  RCC->AHB2ENR   |= 0x000001FF;- G( J* Q% Y) l- o. y1 L& O. m
  /* Delay after an RCC peripheral clock enabling */
& C- w$ w% Y2 e2 Q2 w9 I3 B( d  tmp = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN);5 I2 ~+ x  k+ \4 w- Z9 H* K% H
; F! S  P" E2 @8 [' b; g
  /* Connect PDx pins to FMC Alternate function */4 Z0 c( G8 B* {! I" t
  GPIOD->AFR[0]  = 0xC0CC00CC;
) a. g  l; i( X& a  GPIOD->AFR[1]  = 0xCCCCCCCC;
) C2 D( H/ x) ^. I$ J' @: t  /* Configure PDx pins in Alternate function mode */  4 B, U1 P- w5 t1 {3 Q# g: ~
  GPIOD->MODER   = 0xAAAABAFA;5 f1 g" K, z) @9 L6 `5 _
  /* Configure PDx pins speed to 100 MHz */  ' V/ z& r: F. ]
  GPIOD->OSPEEDR = 0xFFFFCF0F;' V" _/ _5 ~  a& [
  /* Configure PDx pins Output type to push-pull */  6 A1 Y, Z1 o3 z0 R0 r3 T
  GPIOD->OTYPER  = 0x00000000;" z# X( Z6 E0 D6 H0 b
  /* No pull-up, pull-down for PDx pins */
; t) H! M4 N% U3 B9 O$ |: N: g8 z- O8 I  GPIOD->PUPDR   = 0x00000000;
: R, K& U+ ~% u! @: H7 O0 R& r+ K& R; n* i+ q/ F1 c
  /* Connect PEx pins to FMC Alternate function */
, E/ M* q3 p, u) v) S. I# p. C  GPIOE->AFR[0]  = 0xC000C0CC;
4 N" q' K) Q* L, u) P9 h) C  GPIOE->AFR[1]  = 0xCCCCCCCC;( H  c2 ~, s7 Z! A: |
  /* Configure PEx pins in Alternate function mode */ $ P2 s2 L- o/ j) B; a
  GPIOE->MODER   = 0xAAAABFBA;# N( V* A* z- l% X9 E7 p$ o
  /* Configure PEx pins speed to 100 MHz */ 6 u( Z3 Q* l/ }- B" T9 x
  GPIOE->OSPEEDR = 0xFFFFC0CF;
, r5 ?+ V- }! F9 N! @- f- J4 c  /* Configure PEx pins Output type to push-pull */  
7 L% q/ I! P* r! B" c  GPIOE->OTYPER  = 0x00000000;
& g5 n% u& d5 ^- F3 b5 i6 Z  /* No pull-up, pull-down for PEx pins */ $ }) P5 G- q- |/ `; ?) x
  GPIOE->PUPDR   = 0x00000000;/ j" s# m& v% K) P" t* i0 b6 d: v
! u) _" @. l9 }
  /* Connect PFx pins to FMC Alternate function */
1 V4 L: W$ F& N, B: _. ~6 G- U  GPIOF->AFR[0]  = 0x00CCCCCC;
# G3 Q7 w% e; q# _  GPIOF->AFR[1]  = 0xCCCC0000;
8 x2 p: q& Q+ I. J/ K4 ^  /* Configure PFx pins in Alternate function mode */   - r0 u9 G: U/ k6 m& @; s8 h* c
  GPIOF->MODER   = 0xAAFFFAAA;3 _% x& ?9 B4 F$ v$ u0 X
  /* Configure PFx pins speed to 100 MHz */ 9 d9 ~& z0 G# m5 o
  GPIOF->OSPEEDR = 0xFF000FFF;- n6 E% \/ S/ C+ M
  /* Configure PFx pins Output type to push-pull */  
- Q' |$ G# J' I/ v  GPIOF->OTYPER  = 0x00000000;
2 D: Y( h' D1 M* B( L  /* No pull-up, pull-down for PFx pins */
" }/ u4 ~2 @6 \+ i* D" I! c  GPIOF->PUPDR   = 0x00000000;
  x) p% ]5 I" k! z; ^! P/ p( ]4 [3 p. }7 s- Y. {
  /* Connect PGx pins to FMC Alternate function */
, S: `/ n* k, a/ ]& e  GPIOG->AFR[0]  = 0x00CCCCCC;
% T7 v. |- A9 W' C  GPIOG->AFR[1]  = 0x00000000;
8 b8 q$ B, Q; h' i4 h7 z* n  /* Configure PGx pins in Alternate function mode */ 9 G6 A* b, d, e0 e
  GPIOG->MODER   = 0xFFFFFAAA;
9 Z3 A3 m- r+ @  L$ {  /* Configure PGx pins speed to 100 MHz */ ) I# Q: c3 C9 A: d2 o% k3 |6 y: R) @
  GPIOG->OSPEEDR = 0x00000FFF;$ e  w  C3 j% O( B1 a
  /* Configure PGx pins Output type to push-pull */  
, E# F% q# H$ `$ H: A2 ^  GPIOG->OTYPER  = 0x00000000;
1 A4 W8 ^0 B6 h' J8 N+ R  /* No pull-up, pull-down for PGx pins */ , I7 ^6 Z* W4 X7 R
  GPIOG->PUPDR   = 0x00000000;
$ h! p( B& t9 ^: [/ Z
) ]2 A* b6 X; `9 p/*-- FMC/FSMC Configuration --------------------------------------------------*/7 \% J3 ]1 o' `/ x
  /* Enable the FMC/FSMC interface clock */& V8 }5 c. w" n( \% c! u4 M& |5 {$ O3 b
  RCC->AHB3ENR         |= 0x00000001;
" c$ B- [& n+ ~! W6 g  ^8 {0 k4 B$ K
% w* ]$ [- a; `9 @  P* `* @
  /* Delay after an RCC peripheral clock enabling */
' K9 x# ~/ M2 G1 ?# h  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);$ c, X, e1 `- S$ W8 O9 F" b
  /* Configure and enable Bank1_SRAM1 */
( u4 a2 q( s9 L+ }, S1 b/ Y  a  FMC_Bank1_R->BTCR[0]  = 0x00005095;
  C  {2 N$ i' ?% |! L4 {. ?  FMC_Bank1_R->BTCR[1]  = 0x4FF104F3;/ O6 m# E4 ]2 W1 i2 n  h  @
  FMC_Bank1E_R->BWTR[1] = 0x0FF103F3;
# J6 Z6 O+ h9 L7 _" U( f8 P% S
7 \* v7 E9 E, b  a0 p
9 k2 g2 o' M0 L) e        项目代码地址在http://github.com/babycheng/STM32L4R9AIDISCOVERY.git。研究好了的代码会及时推送上去。
! Y" v* R# z7 E: @4 q; j        项目使用 Arm Compiler 6.9 工具链,调试工具是开发板上集成的STLINK。使用MDK编译以后直接进debug模式运行。程序在SRAM1里面运行。烧进flash运行没有设置。
  U! F1 G& o0 x5 d% w$ R
& ^+ b( Q4 ]9 [6 ?1 U  o' ]; m        本人水平有限,以上如有错误之处,敬请指出。+ N- Z2 p# @8 L
        转载请注明出处http://smallcsduck.blog.163.com
( }* X  C! n* u# R7 S9 g) w( d2 H: D: W* l/ X$ }
! `1 y# j: _2 i( H0 p) Z% t
) M3 i8 T, a! f8 o* H
: u1 ~) t" C9 ]4 [) q; o

; B/ q1 G: d, \" a& F
收藏 评论1 发布时间:2018-4-16 22:34

举报

1个回答
zero99 回答时间:2018-4-17 14:48:13
感谢分享,请汇总到4月技术原创9 \* h8 M  |7 v. K
https://www.stmcu.org.cn/module/forum/thread-615497-1-1.html

所属标签

相似技术帖

官网相关资源

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