FSMC配置

发布者:烟雨江湖最新更新时间:2016-10-11 来源: eefocus关键字:FSMC  配置 手机看文章 扫描二维码
随时随地手机看文章
FSMC配置

控制一个NOR闪存存储器,需要FSMC提供下述功能:
●选择合适的存储块映射NOR闪存存储器:共有4个独立的存储块可以用于与NOR闪存、SRAM和PSRAM存储器接口,每个存储块都有一个专用的片选管脚。
●使用或禁止地址/数据总线的复用功能。
●选择所用的存储器类型:NOR闪存、SRAM或PSRAM。
●定义外部存储器的数据总线宽度:8或16位。
●使用或关闭同步NOR闪存存储器的突发访问模式。
●配置等待信号的使用:开启或关闭,极性设置,时序配置。
●使用或关闭扩展模式:扩展模式用于访问那些具有不同读写操作时序的存储器。
因为NOR闪存/SRAM控制器可以支持异步和同步存储器,用户只须根据存储器的参数配置使用到的参数。
FSMC提供了一些可编程的参数,可以正确地与外部存储器接口。依存储器类型的不同,有些参数是不需要的。
当使用一个外部异步存储器时,用户必须按照存储器的数据手册给出的时序数据,计算和设置下列参数:
●ADDSET:地址建立时间
●ADDHOLD:地址保持时间
●DATAST:数据建立时间
●ACCMOD:访问模式 这个参数允许 FSMC可以灵活地访问多种异步的静态存储器。共有4种扩展模式允许以不同的时序分别读写存储器。 在扩展模式下,FSMC_BTR用于配置读操作,FSMC_BWR用于配置写操作。(译注:如果读时序与写时序相同,只须使用FSMC_BTR即可。)
如果使用了同步的存储器,用户必须计算和设置下述参数:
●CLKDIV:时钟分频系数
●DATLAT:数据延时
如果存储器支持的话,NOR闪存的读操作可以是同步的,而写操作仍然是异步的。
当对一个同步的NOR闪存编程时,存储器会自动地在同步与异步之间切换;因此,必须正确地设置所有的参数。

 


2. 时序计算
如上所述,对于异步NOR闪存存储器或类似的存储,有不同的访问协议。首先要确定对特定存储器所需要使用的操作协议,选择的依据是不同的控制信号和存储器在读或写操作中的动作。
对于异步NOR闪存存储器,需要使用模式2协议。如果要使用的存储器有NADV信号,则需要使用扩展的模式B协议。
我们将使用模式2操作M29W128FL,不使用任何扩展模式,即读和写操作的时序是一样的。这时NOR闪存控制器需要3个时序参数:ADDSET、DATAST和ADDHOLD。
需要根据NOR闪存存储器的特性和STM32F10xxx的时钟HCLK来这些计算参数。
基于图3和图4的NOR闪存存储器访问时序,可以得到下述公式:
写或读访问时序是存储器片选信号的下降沿与上升沿之间的时间,这个时间可以由FSMC时序参数的函数计算得到:
写/读访问时间 = ((ADDSET + 1) + (DATAST + 1)) × HCLK
在写操作中,DATAST用于衡量写信号的下降沿与上升沿之间的时间参数:
写使能信号从低变高的时间 = tWP = DATAST × HCLK
为了得到正确的FSMC时序配置,下列时序应予以考虑:
●最大的读/写访问时间
●不同的FSMC内部延迟
●不同的存储器内部延迟
因此得到:
((ADDSET + 1) + (DATAST + 1)) × HCLK = max (tWC, tRC)
DATAST × HCLK = tWP
DATAST必须满足:
DATAST = (tAVQV + tsu(Data_NE) + tv(A_NE))/HCLK – ADDSET – 4
二、程序分析


 /*-- FSMC Configuration
----------------------------------------------------*/
 
p.FSMC_AddressSetupTime = 0x05;     /*ADDSET  地址建立时间*/
 
p.FSMC_AddressHoldTime = 0x00;    /*ADDHOLD 地址保持时间*/
  p.FSMC_DataSetupTime =
0x07;     /*DATAST 数据建立时间*/
  p.FSMC_BusTurnAroundDuration = 0x00;  
/*BUSTURN 总线返转时间*/
  p.FSMC_CLKDivision = 0x00;      /*CLKDIV 时钟分频*/
 
p.FSMC_DataLatency = 0x00;     /*DATLAT 数据保持时间*/
  p.FSMC_AccessMode =
FSMC_AccessMode_B;   /*访问模式*/

 

/*NOR/SRAM的存储块,共4个选项*/

 

  FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM2;   

 

/*是否选择地址和数据复用数据线*/

 

  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux =
FSMC_DataAddressMux_Disable; 

 

/*连接到相应存储块的外部存储器类型*/

 

  FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;  

 

/*存储器数据总线宽度*/

 

  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth =
FSMC_MemoryDataWidth_16b; 

 

/*使能或关闭同步NOR闪存存储器的突发访问模式设置是否使用迸发访问模式(应该就是连续读写模式吧)*/
 
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =
FSMC_BurstAccessMode_Disable;  

 

/*设置WAIT信号的有效电平*/

 

  FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity =
FSMC_WaitSignalPolarity_Low;  

 

 /*设置是否使用环回模式*/
  FSMC_NORSRAMInitStructure.FSMC_WrapMode =
FSMC_WrapMode_Disable;   

 

/*设置WAIT信号有效时机*/

 

  FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive =
FSMC_WaitSignalActive_BeforeWaitState;

 

/*设定是否使能写操作*/

 

  FSMC_NORSRAMInitStructure.FSMC_WriteOperation =
FSMC_WriteOperation_Enable; 

 

/*设定是否使用WAIT信号*/

 

  FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;  

 

/*使能或关闭扩展模式,扩展模式用于访问具有不同读写操作时序的存储器,设定是否使用单独的写时序*/     

 

  FSMC_NORSRAMInitStructure.FSMC_ExtendedMode =
FSMC_ExtendedMode_Disable; 

 

/*设定是否使用异步等待信号*/

 

  FSMC_NORSRAMInitStructure.FSMC_AsyncWait = FSMC_AsyncWait_Disable; 

 

/*设定是否使用迸发写模式*/  
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst =
FSMC_WriteBurst_Disable; 

 

 /*设定读写时序*/

 

  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;   
//     

 

  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;   
//
                 
 
FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);        //

 

  /* Enable FSMC Bank1_NOR Bank */
  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM2,
ENABLE);        //
}

 
关键字:FSMC  配置 引用地址:FSMC配置

上一篇:STM32 SHT10温湿度传感器的信号采集
下一篇:STM32库程序编程出现的串口,时钟配置与实际的不同的问题

推荐阅读最新更新时间:2024-03-16 15:14

KUKA机器人电伺服焊钳配置及力的建立过程V4.21
可以通过目录管理单独添加SGB选件包中未包括的目录元素。 必须添加目录元素“ VW_SGB”。 通过文件插入合适的钳子→目录管理 通过拖放将钳子从目录插入项目中。该名称通常对应于上的名称(请注意铭牌) 根据配置,将钳子悬挂在单元配置中的法兰上。 机器人制钳的电路如下: 配置焊枪 必须配置来自焊枪的多个信号。双击钳子并选择中间显示窗口中的选项卡“ServoGun”。 可以使用以下信号:更改: 外力激活:如果未使用KUKA力传感器,则取下挂钩 选择钳子类型:C枪或X枪 补偿类型:如果使用气动A补偿,请选择“空气补偿”,并
[机器人]
Moto Z4 Play配置及概念渲染图曝光将支持5G网络
集微网消息,近日知名爆料大神Onleaks放出了Moto Z4 Play的概念渲染图。从图中可以了解到,Moto Z4 Play将采用6.2英寸的水滴屏设计,背部延续了摩托罗拉家族的模块化设计,可连接Moto Mods,并且推测该机可能搭载屏幕指纹技术。 另外,Moto Z4 Play还可能会支持5G网络。去年8月份摩托罗拉推出的旗舰Moto Z3可通过5G模块连接5G网络,实现更快速的网络传输,只是目前尚不清楚该机的具体规格。
[手机便携]
Moto Z4 Play<font color='red'>配置</font>及概念渲染图曝光将支持5G网络
STM32的RCC配置流程
在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。 ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。 ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 用户可通过预分频器配置AHB,APB2,APB1总线的频率,AHB和APB2域的最大频率是72MHZ。APB1域的最大允许频
[单片机]
STM32应用简章之串口配置
①串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd(); ③GPIO端口模式设置:GPIO_Init(); ④串口参数初始化:USART_Init(); ⑤开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤) NVIC_Init(); USART_ITConfig(); ⑥使能串口:USART_Cmd(); ⑦编写中断处理函数:USARTx_IRQHandler(); ⑧串口数据收发: void USART_SendData();//发送数据到串口,DR uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的
[单片机]
STM8 可配置时钟输出寄存器
STM8可配置时钟输出寄存器 地址偏移值:0x09 复位值:0x00 位7 保留。始终为0。 位6 CCOBSY:可配置时钟输出忙 由硬件置位或清除。用于指示所选的CCO时钟源正处于切换状态或稳定状态。当CCOBSY为1 时,CCOSEL位域将被写保护。CCOBSY保持为1直至CCO时钟被使能。 0:CCO时钟空闲 1:CCO时钟忙 位5 CCORDY:可配置时钟输出准备就绪 由硬件置位或清除。用于指示CCO时钟的状态 0:CCO时钟可用 1:CCO时钟不可用 位4:1 CCOSEL :可配置时钟输出源选择 由软件写入。用于选择CLK_CCO管脚上的输出时钟源。当CCOBSY=1时,该位域被写保护。 0000:fHSI
[单片机]
STM8 可<font color='red'>配置</font>时钟输出寄存器
STM32——PWM基本知识及配置过程
将通用定时器分为四个部分: 1,选择时钟 2,时基电路 3,输入捕获 4,输出比较 本节定时器PWM输出主要涉及到定时器框图右下方部分,即输出比较部分 和上一讲相同,时基时钟来源于内部默认时钟 对此有疑问请参考 : 定时器中断实验 中 定时器时钟选择部分 和 定时器时钟来源部分 什么是PWM 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 PWM工作过程 每个定时器有四个通道,每一个通道都有一个捕获比较寄存器, 将寄存器
[单片机]
STM32——PWM基本知识及<font color='red'>配置</font>过程
一加6信息汇总:配置8GB内存+骁龙845
    价格方面,64GB在33999卢比~36999卢比之间,约合人民币3299元到3590元之间。128GB在38999卢比到42999卢比之间,约合人民币3785元到4173元;8+256GB顶配则是44999卢比到48999卢比之间,约合人民币4367元到4755元。对于即将到来的一加手机6,除了已经确认的高通骁龙845处理器之外,更多的规格信息可以借鉴参考刚刚发售的OPPO R15。外媒推测今年的一加手机6会装备分辨率为2220*1080,长宽比为19:9的6.0英寸屏幕,配8GB的LPDDR4X内存,会提供64GB/128GB/256GB,相机方面会装备2000万像素f/1.7和1600万像素f.1.7双摄像头,指纹会
[手机便携]
一文学会手动配置CANoe VLAN
随着汽车智能化发展,车内通信带宽需求日益增长,车载以太网逐渐成为车内骨干网络。为了实现更彻底的域间功能解绑,提升信息处理效率,提升网络安全等目的,VLAN被广泛应用在车载以太网通信领域。 VLAN能够将一个物理网络拆分为多个逻辑网络,域内无缝通信,域间相互隔离。交换机或网络通信节点可以在数据帧中添加、移除VLAN Tag字段,来标记、识别数据帧是否属于当前功能域/安全域。 本文使用VN5000系列接口卡作为交换机,介绍车载以太网络仿真、测试过程中的VLAN手动配置方法。整体来说,共有两个位置可以手动配置VLAN信息,分别是硬件驱动侧和CANoe软件侧。其中:硬件侧的配置,相当于配置交换机。软件侧的配置,相当于配置网络通信节点。
[嵌入式]
一文学会手动<font color='red'>配置</font>CANoe VLAN
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved