一、SRAM芯片:
STM32F4直接与SRAM芯片连接,具体型号为:IS62WV51216
引脚如下:
除开基本的电源和地线,IS62WV51216的管脚大概可以这么来分类:
所以IS62WV51216的管脚总的来说大致分为:电源线、地线、地址线、数据线、片选线、写使能端、读使能端和数据掩码信号线。
IS62WV51216的容量为:2的19次方的地址*16位宽的数据(即2字节)=1M字节
二、STM32F4的FSMC
FSMC控制SRAM为例来说明:
FSMC_NE[1:4]决定了FSMC可以控制多个存储器。
FSMC的地址映射如下:
有一点我们必须明白,对于32位的stm32单片机来说,它能够管理的地址大小为4GB,而stm32将4GB的地址空间中的0x60000000到0x9FFFFFFF共1GB的空间分给外部内存。
然后强势的FSMC就接管了这1GB的空间,FSMC将图中的1GB大小的External RAM存储区域分成了4个Bank区域,每个Bank对应于stm32内部寻址空间的不同地址范围。那么为什么要分为不同的Bank区域呢?因为不同的Bank可以来管理不同的外部存储设备,比如NOR Flash及SRAM存储器只能使用Bank1的地址,NAND Flash存储器只能使用Bank2和Bank3的地址,等。
Bank内部的256MB空间又被分成4个小块,每块64M,各自有相应的控制引脚用于连接片选信号。以Bank1为例,见下图:
OK!重点来了!
刚刚前面提到的FSMC_NE[4:1]信号线就分别对应图中的FSMC bank1 NOR/PSRAM4到FSMC bank1 NOR/PSRAM1。当STM32访问0x68000000-0x6BFFFFFF地址空间时,会访问到Bank1的第3小块区域:FSMC bank1 NOR/PSRAM3相应的FSMC_NE3信号线会输出控制信号(即片选信号),如果这个时候FSMC_NE3处刚好接上IS62WV51216的CS端,那么IS62WV51216就可以任由我们摆布啦。
因此,对于你使用IS62WV51216来说,一定要注意你的CS端是接的FSMC的哪个FSMC_NE端,这决定你在程序访问哪个地址范围。
对于上边原理图中需要注意的是,除了FSMC_NE3 的连接不固定外,其他的管脚都要按照图中的方式连,为什么呢?因为对于FSMC来说,它已经集成到了单片机内部,它的提供给的管脚已经确定了,是不能改动的。唯一具有灵活性的就是FSMC_NE,具体用哪个FSMC_NE管脚来和你的SRAM相连,当然是你的自由,但是不要忘了,你要找到你选的FSMC_NE所对应的地址范围,不然写程序的时候就搞不清喏!
关键字:STM32F4 外部SRAM
引用地址:
STM32F4的外部SRAM_原理部分
推荐阅读最新更新时间:2024-03-16 16:16
STM32F4 CAN2配置
通信协议 基本知识 特别注意 CAN2配置时,滤波器要从 开始配置。 代码块 #define CAN2_PORT CAN2 #define CAN2_GPIO_PORT GPIOB #define CAN2_RX_PIN GPIO_Pin_12 #define CAN2_TX_PIN GPIO_Pin_13 #define CAN_ID_Chassis 130 struct CAN_Socket { unsigned int u32_StdId; unsigned int u32_ExtId; unsigned char u8_IDE; unsigned char u8_RTR;
[单片机]
stm32f407之通用定时器产生PWM波
1.初始化 1.定义相关变量 GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_OCInitTypeDef TIM_OCInitStructure; 2.打开定时器和GPIO时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); 3.配置GPIO口为复用功能输出 GPIO_PinAFConfig(GPIOF, GPI
[单片机]
HAL库-STM32F4 UART-IT
注:参考ST公司HAL库附带UART-IT例程。 参考资料:ST-《STM32F4xx中文参考手册》、野火-《零死角玩转STM-F429》 主要数据类型: UART_HandleTypeDef UartHandle; 主要HAL函数: 初始化函数: HAL_StatusTypeDef HAL_UART_Init ( UART_HandleTypeDef * huart ); void HAL_UART_MspInit ( UART_HandleTypeDef *huart ) ; 回调函数: void HAL_UART_TxCpltCallback( UART_HandleTypeDef * UartHandle ); v
[单片机]
STM32F407-串口通信基本原理
1.处理器与外部设备通信的两种方式: 并行通信 -传输原理:数据各个位同时传输。 -优点:速度快 -缺点:占用引脚资源多 串行通信 -传输原理:数据按位顺序传输。 -优点:占用引脚资源少 -缺点:速度相对较慢 2.串行通信 按照数据传送方向,分为: 单工: 数据传输只支持数据在一个方向上传输 半双工:允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信; 全双工: 允许数据同时在两个方向上传输,因此,全双工通信是两个 单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。 3.串行通信的通
[单片机]
STM32f4---外部中断实验代码(01)
exit.c文件总共包含5 个函数。一个是外部中断初始化函数void EXTIX_Init(void),另外 4个都是中断服务函数。 void EXTI0_IRQHandler(void)是外部中断0 的服务函数,负责WK_UP 按键的中断检测; void EXTI2_IRQHandler(void)是外部中断2 的服务函数,负责KEY2按键的中断检测; void EXTI3_IRQHandler(void)是外部中断3 的服务函数,负责KEY1按键的中断检测; void EXTI4_IRQHandler(void)是外部中断4 的服务函数,负责KEY0按键的中断检测; extic.c代码如下: //外部中断0服务程序 void
[单片机]
STM32F407学习笔记----GPIO
1、GPIO InitTypeDef 初始化所需要的IO口 typedef struct { uint32_t GPIO_Pin; /*! Specifies the GPIO pins to be configured.指定需要配置的引脚 This parameter can be any value of @ref GPIO_pins_define */ GPIOMode_TypeDef GPIO_Mode; /*! Specifies the operating mode for the selected pins.模式 in/out?
[单片机]
stm32f4在液晶上画圆及填充圆的几种方法
先说下画圆,根据圆的对称性将圆8等分,求出其中一份,其他可以通过坐标变换得到。得到过程可以百度中点画圆法。 程序: void LCD_Draw_Circle(uint16_t Xpos,uint16_t Ypos,uint16_t Radius) { int16_t mx=Xpos,my=Ypos,x=0,y=Radius; int16_t d=1-Radius; while(y x) { putpixel(x+mx,y+my); putpixel(-x+mx,y+my); putpixel(-x+mx,-y+my); putpixel(x+mx,-y+my); putpixel(y+mx,x+my); putpixel(-y+m
[单片机]
STM32F4时钟系统初探(一)
在开始之前先解释几个名词: HSI: High Speed Internal clock, 高速内部时钟, STM32F429xx默认为16MHz. HSE: High Speed External clock, 高速外部时钟, 最大可接受50MHz时钟(可外接最大的晶振为26MHz). LSI: Low Speed Internal clock, 低速内部时钟, 32KHz. LSE: Low Speed External clock, 低速外部时钟, 一般为32.768KHz. PLL: Phase-Locked loops, 锁相环, 用于倍频时钟. VCO: Voltage-Controlled Oscillator, 压
[单片机]