打印
[其他ST产品]

stm32cubeMX配置stm32h743 SDRAM

[复制链接]
楼主: 和下土
手机看帖
扫描二维码
随时随地手机跟帖
21
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
本帖最后由 和下土 于 2024-5-1 00:34 编辑

实验结果
编译,下载到开发板中,在串口助手中查看实验结果:

使用特权

评论回复
22
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:34 编辑

使用特权

评论回复
23
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:36 编辑

总结于:stm32cubemx读写SDRAM-W9825G6KH不知道为啥,这个地方一定要2分频,不然无法成功:

本篇详细的记录了如何使用STM32CubeMX配置 STM32F767IGT6 的硬件FMC外设与 SDRAM 通信(W9825G6KH)。

使用特权

评论回复
24
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:36 编辑

准备工作
硬件准备

使用特权

评论回复
25
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:37 编辑

开发板
首先需要准备一个开发板,这里我准备的是STM32F767IGT6的核心板。

SDRAM
核心板板载一片SDRAM,型号为 W9825G6KH,大小为 32 MB。


使用特权

评论回复
26
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:37 编辑

软件准备
需要准备一份 W9825G6KH-6 的数据手册。

2. STM32 FMC外设概述
2.1. 什么是FMC
FMC全称Flexible Memory Controller,灵活的内存控制器,顾名思义,其主要作用是:负责向外部扩展的存储类设备提供控制信号。

FMC内存控制器支持的存储设备有:

Nor Flash、SRAM、PSRAM
Nand Flash
SDRAM
网卡DM9000(类存储设备)
此外,FMC外设还可以通过配置与LCD控制器连接,它提供Intel 8080并口模式和Motorola 6080并口模式,并且可以灵活的配置为指定的LCD接口类型。

使用特权

评论回复
27
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:37 编辑

FMC外设的功能框图

使用特权

评论回复
28
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:38 编辑

外部设备的地址映射(重点)

从FMC的角度来看,外部的存储设备被分为几个固定大小的Bank,每个bank 256 MB

整个FMC外设映射地址的划分如图:

使用特权

评论回复
29
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:38 编辑

2.3.1. Bank1

Bank1的地址空间为:0x6000 0000 - 0x6FFF FFFF,支持外接Nor Flash、PSRAM、SRAM等设备,还可以外接DM9000等类存储设备。

整个Bank1的地址空间被划分为四个子bank,每个子bank的大小为64MB,刚好对应FMC外设的地址总线(FMC_A[0:25])有26条(2^26=64MB)。

FMC还有两条内部总线ADDR[27:26],用这两路控制片选信号,如下表:

2.3.2. Bank3

只能外接Nand Flash设备。

2.3.3. SDRAM Bank

只能外接SDRAM设备。

使用特权

评论回复
30
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:39 编辑

使用STM32CubeMX生成工程
选择芯片型号
打开STM32CubeMX,打开MCU选择器:

使用特权

评论回复
31
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:39 编辑

搜索并选中芯片STM32F767IGT6:

使用特权

评论回复
32
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:40 编辑

配置时钟源
  • 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
  • 如果使用默认内部时钟(HSI),这一步可以略过;
这里我都使用外部时钟:

使用特权

评论回复
33
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:41 编辑

配置串口

开发板板载了一个CH340换串口,连接到USART1,但是引脚不是默认引脚,需要手动修改。

接下来开始配置USART1并修改引脚:


使用特权

评论回复
34
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:41 编辑

配置FMC外设
在配置FMC外设的时候,需要了解所用SDRAM的一些参数

FMC配置

开发板上SDRAM(W9825G6KH)的原理图如下:


使用特权

评论回复
35
和下土|  楼主 | 2024-4-30 23:44 | 只看该作者
本帖最后由 和下土 于 2024-5-1 00:41 编辑

通过原理图可以看出:

数据总线位宽使用了16bit:FMC D0 - FMC D15;
地址总线位宽使用了13bit:FMC A0 - FMC A12;
BANK选择信号线有两条:FMC BA0 和 FMC BA1;
时钟使能信号使用FMC SDCKE0,片选信号使能使用FMC SDME0,可以看出使用SDRAM区域1;
其它通用信号线:FMC SDNWE、FMC SDNCAS、FMC SDNRAS、FMC SDCLK;
数据掩码信号线使用 FMC NBL0 和 FMC NBL1,分别控制输出高8位还是低8位;

使用特权

评论回复
36
和下土|  楼主 | 2024-5-1 00:42 | 只看该作者
根据这些信息,在STM32CubeMX中先配置SDRAM1的基本设置:

使用特权

评论回复
37
和下土|  楼主 | 2024-5-1 00:42 | 只看该作者
SDRAM基本参数配置
这部分信息从 SDRAM(W9825G6KH) 的数据手册中即可看到。

① 速度等级:当CL=3时最高速度为166Mhz。因为STM32F767的HCLK=216Mhz,所以需要进行二分频,使SDRAM的时钟频率为108Mhz。

使用特权

评论回复
38
和下土|  楼主 | 2024-5-1 00:42 | 只看该作者
行地址宽度和列地址宽度:有A0-A12 总共13条行地址线,有A0-A8总共9条列地址线。

使用特权

评论回复
39
和下土|  楼主 | 2024-5-1 00:42 | 只看该作者
最后配置如下:

使用特权

评论回复
40
和下土|  楼主 | 2024-5-1 00:43 | 只看该作者
SDRAM时序参数配置
通过之前的设置,SDRAM的时钟频率为108Mhz,一个时钟周期就是9.26 ns,所以下面参数的单位都是9.26ns。

① LoadToActiveDelay:TMRD 定义加载模式寄存器的命令与激活命令或刷新命令之间的延迟,最小值为2个clk。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则