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

STM32L4R9AI discovery开发板的PSRAM时序设置

[复制链接]
smallcsduck 发布时间:2018-4-16 22:34
本帖最后由 smallcsduck 于 2018-4-16 22:35 编辑 + k, p# K8 @% ]% o+ I

/ @3 P! \0 P6 a$ c; `- o% T        前一段时间拿到了ST官方的STM32L4R9AI discovery开发板研究了一下。可能是刚出的板子,资料比较少,STM32cubeMX附带的例程也非常少。很多功能没有做demo,那就来慢慢给他补上吧。要达到的目标不是能跑起来就行了,要能发挥最大的性能和全部的功能。             这篇就来讲一下开发板板载的型号为IS66WV1M16EBLL的PSRAM初始化时序设置。       0 b! N: c# c/ ~* e, j
     首先是MCU主频是设置在120M。
7 J0 _) v. j# w6 ]& @ 1.png
( A( I2 P6 T- `; F1 y0 ~/ d        PSRAM的FMC接口设置。3 d. ]6 k6 |) O! M# Z
2.png ; n# Y9 ?& h' h9 P" f% D
         时序设置。
3 l" A6 e; q% \3 r' Q6 a0 r 3.png
9 @+ x" A8 ^( z4 z+ w       下面是寄存器设置,可以直接在SystemInit里初始化PSRAM。  k3 O# }& V! U; r6 D' h
__IO uint32_t tmp = 0x00;
" H3 g, J/ B& j4 T" P/ z, Q) S9 q5 j4 j

" u7 b4 L, z5 ^9 m2 c- F& t/*-- GPIOs Configuration -----------------------------------------------------*/
& G" c) [5 d/ K4 G1 p# ?( v   /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */( [  B! C' ^0 ]  d1 V& T
  RCC->AHB2ENR   |= 0x000001FF;# C: n: c# K& @6 v/ J2 m
  /* Delay after an RCC peripheral clock enabling */
9 ^' [2 ^8 ?6 K3 j1 u3 Z  tmp = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_GPIODEN);3 ^, W! J$ _" B, S0 V- a1 E
% @+ u- }- h: }+ F, }1 W
  /* Connect PDx pins to FMC Alternate function */9 g7 r+ X% j$ o+ T" K
  GPIOD->AFR[0]  = 0xC0CC00CC;
, }3 l# E  N  M( m  GPIOD->AFR[1]  = 0xCCCCCCCC;$ E1 e' ^+ n9 ]" O1 t) w
  /* Configure PDx pins in Alternate function mode */  - Y- A5 h) {& w/ S/ B
  GPIOD->MODER   = 0xAAAABAFA;
$ Z5 t' M. L* `. @4 T( j3 K  /* Configure PDx pins speed to 100 MHz */  2 m0 w: V" A0 e) D" u
  GPIOD->OSPEEDR = 0xFFFFCF0F;7 }: l5 v  e/ N3 x7 Z# R4 \
  /* Configure PDx pins Output type to push-pull */  ( ?" k" |  q6 t' |/ G' C4 c
  GPIOD->OTYPER  = 0x00000000;
  c) [3 `& t) ~7 S2 c7 B* ]  /* No pull-up, pull-down for PDx pins */ 7 w! Q/ [* g# e1 s9 {
  GPIOD->PUPDR   = 0x00000000;
! {5 G  |/ d, u% j, p) J3 B$ F
6 ~1 G& y8 s. e# h  /* Connect PEx pins to FMC Alternate function */7 I) k  y: d$ y& `$ ]
  GPIOE->AFR[0]  = 0xC000C0CC;
+ [3 o% m; l6 [  GPIOE->AFR[1]  = 0xCCCCCCCC;
+ c* o$ Y8 `+ P1 T7 P. j  /* Configure PEx pins in Alternate function mode */
* G" C3 B4 h8 @, B7 D  GPIOE->MODER   = 0xAAAABFBA;
6 X' c; G! W* B* [! R6 L# m5 K  /* Configure PEx pins speed to 100 MHz */   b( s" l: P/ I5 \$ s
  GPIOE->OSPEEDR = 0xFFFFC0CF;
9 p/ @: {! I" k% m3 d! t1 d3 p: A  /* Configure PEx pins Output type to push-pull */  % C* C: R) B; E; n0 K
  GPIOE->OTYPER  = 0x00000000;
! I; s# j6 B$ b/ P4 z# t  /* No pull-up, pull-down for PEx pins */ ! q5 m/ h; j) a- o
  GPIOE->PUPDR   = 0x00000000;" h% G8 E* [+ S9 ~
  c0 y% H* H0 ?* _
  /* Connect PFx pins to FMC Alternate function */2 u1 x" e1 ?, J8 R
  GPIOF->AFR[0]  = 0x00CCCCCC;
! W, N6 n! o5 o  GPIOF->AFR[1]  = 0xCCCC0000;
7 f5 P- j- C2 V- T& A2 @  /* Configure PFx pins in Alternate function mode */   ' ]) v3 B6 m7 K
  GPIOF->MODER   = 0xAAFFFAAA;* [( T) O  f) g$ P
  /* Configure PFx pins speed to 100 MHz */
, j8 F6 k4 h5 c2 i& r  GPIOF->OSPEEDR = 0xFF000FFF;
3 u8 Q) ?6 m$ C) {  /* Configure PFx pins Output type to push-pull */  
$ f. x7 B2 U0 O. @) M# U+ u7 o& W  GPIOF->OTYPER  = 0x00000000;" K, Q4 J8 |) h- \
  /* No pull-up, pull-down for PFx pins */ : T! K$ ]/ V5 R( }0 ^+ z) X+ r4 _5 S$ z
  GPIOF->PUPDR   = 0x00000000;8 n) Q9 @# O4 D) e) Q" y

- d5 B& C( t+ ]1 e6 `7 f  /* Connect PGx pins to FMC Alternate function */! a. X! o1 P: P; ?
  GPIOG->AFR[0]  = 0x00CCCCCC;# z# J* a0 A0 W! C% f" y% T
  GPIOG->AFR[1]  = 0x00000000;, v! _5 |4 t7 ]; ~
  /* Configure PGx pins in Alternate function mode */
- d9 z: X4 O: g- `1 ?; h7 F: w  GPIOG->MODER   = 0xFFFFFAAA;. H2 K3 f1 C# c: K4 x
  /* Configure PGx pins speed to 100 MHz */
2 O% D! g* E) n0 w  GPIOG->OSPEEDR = 0x00000FFF;
5 B  `( s  L. m- L8 n  /* Configure PGx pins Output type to push-pull */  $ o+ a/ {: L+ n
  GPIOG->OTYPER  = 0x00000000;
/ _* Z+ L8 ?- q, Z  H% f9 P  /* No pull-up, pull-down for PGx pins */
$ {2 G- z4 v5 `* D$ p  GPIOG->PUPDR   = 0x00000000;4 Q0 Y2 `' G% v, H; B
* Z! k+ t  w+ A
/*-- FMC/FSMC Configuration --------------------------------------------------*/* i4 Z2 T% V0 ~
  /* Enable the FMC/FSMC interface clock */
" k, }% f/ f( G3 [  RCC->AHB3ENR         |= 0x00000001;
4 N# H/ k$ v7 l" U, m. L- ~6 a$ p" }5 b

  [8 F* D0 P) C: t0 u: ~: v" u8 v  /* Delay after an RCC peripheral clock enabling */
( T8 N5 F6 t7 R! u9 U  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
4 h0 T5 c' `8 K1 |. h) _4 O9 Z  /* Configure and enable Bank1_SRAM1 */# Y! Y# }6 y6 I9 o, ?
  FMC_Bank1_R->BTCR[0]  = 0x00005095;$ [6 S3 j$ j: @& h( P
  FMC_Bank1_R->BTCR[1]  = 0x4FF104F3;' U8 u# F1 D3 E, |4 B
  FMC_Bank1E_R->BWTR[1] = 0x0FF103F3;
4 j7 u" P- ~5 j$ S7 H) K& j! Y' C
% h: T# R6 @+ R% u9 M6 l2 H) h7 V8 H
$ X6 E4 e+ q: l* H# u$ B; F/ f! |        项目代码地址在http://github.com/babycheng/STM32L4R9AIDISCOVERY.git。研究好了的代码会及时推送上去。( m7 `( t; j6 F& ?
        项目使用 Arm Compiler 6.9 工具链,调试工具是开发板上集成的STLINK。使用MDK编译以后直接进debug模式运行。程序在SRAM1里面运行。烧进flash运行没有设置。
6 j4 e0 N; s+ m: }
% \, E/ C& h7 W6 u        本人水平有限,以上如有错误之处,敬请指出。- q' o+ Z# ]2 H2 I
        转载请注明出处http://smallcsduck.blog.163.com! W6 [! L1 q# r1 y1 K' l- q, w

7 P- ]& I# V9 d& C/ |  u4 e' e( A4 ?0 n0 \7 G# ~
+ M' h3 o9 K+ t  `  r0 l, z

+ H: l7 f, J! g% o% S8 `! [; ^/ J9 X  G8 i' R; a; |- Y8 u9 r
收藏 评论1 发布时间:2018-4-16 22:34

举报

1个回答
zero99 回答时间:2018-4-17 14:48:13
感谢分享,请汇总到4月技术原创
" f( ]2 E; [! H/ _! V" l: ^6 \% Phttps://www.stmcu.org.cn/module/forum/thread-615497-1-1.html

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版