stm32f429 利用stm32cube配置FMC接口

本文详细介绍了STM32F4系列微控制器如何通过FMC接口扩展SDRAM,包括SDRAM芯片W9825G6KH的特性、FMC接口的工作原理、STM32CubeMX配置步骤、软件编程技巧以及实验注意事项。

目录

一、为什么使用SDRAM

二、SDRAM芯片W9825G6KH

三、stm32f4的fmc接口

四、stm32cubemx配置fmc

五、实验现象:

六、源码:

七、注意事项:

八、参考记录:


硬件平台:正点原子阿波罗stm32f429

一、为什么使用SDRAM

STM32控制器芯片内部有一定大小的SRAM及FLASH作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在STM32芯片的外部扩展存储器了。

STM32F429系列芯片扩展内存时可以选择SRAM和SDRAM,由于SDRAM的"容量/价格"比较高,即使用SDRAM要比SRAM要划算得多。我们以SDRAM为例讲解如何为STM32扩展内存。

给STM32芯片扩展内存与给PC扩展内存的原理是一样的,只是PC上一般以内存条的形式扩展,内存条实质是由多个内存颗粒(即SDRAM芯片)组成的通用标准模块,而STM32直接与SDRAM芯片连接。


二、SDRAM芯片W9825G6KH

该芯片有4个bank,每个bank13行,9列,数据位为16bit,所以整体大小为:4*(2^13)*(2^9)*16=32M。

引脚顺序如下:

SDRAM 的信号线如表 18.1.1.1 所示:

信号线 说明
CLK 时钟信号,在该时钟的上升沿采集输入信号
CKE 时钟使能,禁止时钟时, SDRAM 会进入自刷新模式
CS# 片选信号,低电平有效
RAS# 行地址选通信号,低电平时,表示行地址
CAS# 列地址选通信号,低电平时,表示列地址
WE# 写使能信号,低电平有效
A0~A12 地址线(行/列)
BS0, BS1 BANK 地址线
DQ0~15 数据线
LDQM,UDQM 数据掩码,表示 DQ 的有效部分

三、stm32f4的fmc接口

1、简介:

STM32F429使用FMC外设来管理扩展的存储器,FMC是Flexible Memory Controller的缩写,译为可变存储控制器。它可以用于驱动包括SRAM、SDRAM、NOR FLASH以及NAND FLSAH类型的存储器。在其它系列的STM32控制器中,只有FSMC控制器(Flexible Static Memory Controller),译为可变静态存储控制器,所以它们不能驱动SDRAM这样的动态存储器,因为驱动SDRAM时需要定时刷新,STM32F429的FMC外设才支持该功能,且只支持普通的SDRAM,不支持DDR类型的SDRAM。我们只讲述FMC的SDRAM控制功能。
 

STM32F429 FMC 接口的 SDRAM控制器,具有如下特点:

两个 SDRAM 存储区域,可独立配置
支持 8 位、 16 位和 32 位数据总线宽度
支持 13 位行地址, 11 位列地址, 4 个内部存储区域: 4x16Mx32bit (256MB)、
4x16Mx16bit(128 MB)、 4x16Mx8bit (64 MB)
支持字、半字和字节访问
自动进行行和存储区域边界管理
多存储区域乒乓访问
可编程时序参数
支持自动刷新操作,可编程刷新速率
自刷新模式
读 FIFO 可缓存,支持 6 行 x32 位深度( 6 x14 位地址标记)/

2、框图

3、引脚对照表

名称 引脚 引脚号 功能
FMC_SDNCAS PG15 P160 列地址选通信号
FMC_SDNRAS PE11 P59 行地址选通信号
FMC_SDNE0 PC2 P34 片选信号SDNE0:SDRAM 存储区域 1 芯片使能

SDNE1:SDRAM 存储区域 2 芯片使能
FMC_SDNE1 PH6 P83
FMC_BA0
下载积分重新调回5个。。 00__LIBRARIES 00_STM32F4xx_HAL_DRIVERS 00_STM32F4xx_STANDARD_PERIPHERAL_DRIVERS 00_STM32_SVD 01_STM32F4xx_Keil_CMSIS_Default_Project 01_STM32F4xx_Keil_CMSIS_USB_Default_Project 02__LED_BUTTON 03__DELAY 03__DELAY_CREATE_TIMER 03__DELAY_TIM 03__DELAY_TIME 04__USART 04__USART_CUSTOM_PINS 04__USART_STRING 05__SPI 05__SPI_CUSTOM_PINS 06__ADC 06__ADC_VBAT 07__DAC 08__ILI9341 09__I2C 09__I2C_CUSTOM_PINS 09__I2C_SEARCH_DEVICES 10__STMPE811 11__ILI9341_BUTTON 12__ONEWIRE 12__ONEWIRE_MULTI 13__DS18B20 14__SDRAM 14__SDRAM_VARIABLES 15__DS1307 16__HD44780 17__nRF24L01P_RECEIVER 17__nRF24L01P_RECEIVER_IRQ 17__nRF24L01P_TRANSMITTER 17__nRF24L01P_TRANSMITTER_IRQ 18__ILI9341_LTDC 18__ILI9341_LTDC_PINS_USED 19__RTC 19__RTC_ALARM 19__RTC_BKP 19__RTC_SETDATETIME_STRING 19__RTC_SUBSECONDS 20__WATCHDOG 20__WATCHDOG_DBGMCU_STOP 21__FATFS 21__FATFS_READ_BENCHMARK 21__FATFS_SDRAM 22__RNG 23__MFRC522 24__USB_VCP 25__AM2301 26__ROTARY_ENCODER 27__GPS 27__GPS_CUSTOM 27__GPS_ILI9341 27__GPS_NUCLEO 28__L3GD20 29__FATFS_USB_MSC_HOST 29__FATFS_USB_MSC_HOST_SD_CARD 30__HCSR04 31__USB_HID_HOST 32__KEYPAD 33__PWM 33__PWM_SERVO 33__PWM_SERVO_KEYPAD 34__USB_HID_DEVICE 35_STM32F4_LIS3DSH_LIS302DL 36__DAC_SIGNAL 37__BMP180 38__EXTI 39__LOW_POWER_MODE_SLEEP 39__LOW_POWER_MODE_STANDBY 39__LOW_POWER_MODE_STOP 40__MCO_OUTPUT 41__STDIO_INPUT_OUTPUT 41__STDIO_OUTPUT 42__SERVO 43__MPU6050 43__MPU6050_2DEVICES 44__IDENTIFICATION 45__BKPSRAM 46__SWO 47__CRC 48__PWMIN 49__OTP 50__EMWIN 50__EMWIN_GRAPH 51__GRAPHIC_DMA2D 52__ETHERNET_CLIENT 52__ETHERNET_CLIENT_COOCOX 52__ETHERNET_DHCP 52__ETHERNET_DHCP_COOCOX 52__ETHERNET_SERVER 52__ETHERNET_SERVER_COOCOX 52__ETHERNET_SERVER_SDCARD 52__ETHERNET_SERVER_SDCARD_COOCOX 53__GPIO 54__GENERAL 55__USART_DMA 56__SPI_DMA 57__BUTTONS 58__STRINGS 59__RCC_PLL 60__CPU_LOAD 61__SSD1306 62__FFT 63__DMA 63__HMC5883L
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值