FSMC静态存储器控制器_第1页
FSMC静态存储器控制器_第2页
FSMC静态存储器控制器_第3页
FSMC静态存储器控制器_第4页
FSMC静态存储器控制器_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、STM32 FSMC 学习笔记FSMC 全称 “静态存储器控制器 ”。使用 FSMC 控制器后, 可以把 FSMC 提供的 FSMC_A25:0作为地址线, 而把 FSMC 提供的 FSMC_D15:0 作为数据总线。(1) 当存储数据设为 8 位时, (FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b)地址各位对应 FSMC_A25:0 ,数据位对应 FSMC_D7:0(2) 当存储数据设为 16 位时, (FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FS

2、MC_MemoryDataWidth_16b)地址各位对应 FSMC_A24:0 ,数据位对应 FSMC_D15:0FSMC 包括 4 个模块:(1)AHB 接口(包括 FSMC 配置寄存器)(2)NOR 闪存和 PSRAM 控制器(驱动 LCD 的时候 LCD 就好像一个 PSRAM 的里面只有 2 个 16 位的存储空间,一个是 DATA RAM 一个是 CMD RAM )(3) NAND 闪存和 PC 卡控制器(4) 外部设备接口注 : FSMC 可以请求 AHB 进行数据宽度的操作。如果AHB 操作的数据宽度大于外部设备( NOR 或 NAND 或 LCD )的宽度, 此时 FSMC

3、将 AHB 操作分割成几个连续的较小的数据宽度,以适应外部设备的数据宽度。6000 OOOOh6FFF FFFFh?ooo ax»h7FFFFFyFtieooo oooorHFFF FFFPh9000 COOQhElirjksSuppO1*d rnemorytypeFUWk 14 x &4 MBBvik24k FU MH&enK J d x MBNOi CL;RAMFl.i&hBEW1K 4X MHPC CardQFFFrrFrhFSMC对外部设备的地址映像从0x6000 0000开始,到0x9FFF FFFF结束,共分4个地址块,每个地址块256M 字节。可

4、以看岀,每个地址块又分为4个分地址块,大小64M。对NOR的地址映像来说,我们可以通过选择HADDR27:26 来确定当前使用的是哪个 64M的分地址块,如下页表格。而这四个分存储块的片选,则使用NE4:1来选择。数据线/地址线/控制线是共享的。NE1 - >Bank1NE2- >Bank2NE3- >Bank3NE4- >Bank4若NE1 连接,贝9HADDR27:26选择的存储块00存储块 1 NOR/PSRAM 101存储块 1 NOR/PSRAM 210存储块 1 NOR/PSRAM 311存储块 1 NOR/PSRAM 4每小块 NOR/PSRAM 64M第

5、一块:60000000h-63ff ffffh (DATA 长度为8位情况下,由地址线FSMC_A25:0决定;DATA长度为16位情况下,由地址线FSMC_A24:0 决定)第二块:64000000h-67ffffffh第二块 :6800 0000h-6bff ffffh第三块 :6c00 0000h-6fff ffffh注: 这里的 HADDR 是需要转换到外部设备的内部 AHB 地址线,每个地址对应一个字节单元。因此,若外部设备的地址宽度是8位的,则 HADDR25:0 与STM32的CPU引脚FSMC_A25:0对应,最大可以访问 64M 字节的空间。若外部设备的地址宽度是 16 位的

6、,则是 HADDR25:1 与 STM32 的 CPU 引脚 FSMC_A24:0 一一对应。在应用的时候,可以将 F SMC_A 总线连接到存储器或其他外设的地址总线引脚上。例: STM32F10XX FCMS 控制 LCD 的驱动FSMC 提供了所有的 LCD 控制器的信号:FSMC_D16:016bit 的数据总线FSMC NEx :分配给 NOR 的 256M ,再分为 4 个区,每个区用来分配一个外设,这四个外设的片选分为是NE1-NE4 ,对应的引脚为: PD7NE1, PG9NE2 , PG10-NE3 , PG12 NE4FSMC NOE :输出使能,连接 LCD 的 RD 脚

7、。FSMC NWE :写使能,连接 LCD 的 RW 脚。FSMC Ax :用在LCD显示RAM和寄存器之间进行选择的地址线,即该线用于选择LCD的RS脚,该线可用地址线的任意一根线,范围: FSMC_A25:0。注: RS = 0 时,表示读写寄存器; RS = 1 表示读写数据 RAM 。举例 1 :选择 NOR 的第一个存储区,并且使用 FSMC_A16 来控制 LCD 的 RS 引脚,则我们访问 LCD 显示 RAM 的基址为 0x6002 0000 ,访问 LCD 寄存器的地址为:0x60000000 。因为数据长度为 16bit ,所以 FSMC_A24:0 对应 HADDR25:

8、1 所以显示 RAM 的基址=0x60000000+216*2=0x60000000+0x20000=0x60020000举例 2 :选择 NOR 的第四个存储区,使用 FSMC_A0 控制 LCD 的 RS 脚,则访问 LCD 显示 RAM 的基址为 0x6c000002 ,访问 LCD 寄存器的地址为:0x6c000000 。例:FSMC_D15:0 ,连 16bit 数据线; FSMC_NE1 ,连片选:只有 bank1 可用FSMC NOE :输出使能FSMC NEW : FSMC 写使能FSMC Ax:连接 RS,可用范围 FSMC_A24:0一般使用模式B来做LCD的接口控制,不适

9、用外扩模式。并且读写操作的时序一样。此种情况下,我们需要使用三个参数:DDSET,DATAST ,ADDHOLD。这三个参数在位域 FSMC_TCRx 中设置。当HCLK的频率是72MHZ,使用模式 B,则有如下时序:地址建立时间:0x1地址保持时间:0x0数据建立时间:0x2注:这里地址建立地址保持数据建立三个时间不知道怎么设出来的。我是根据别人的经验来设定的。高手知道这个设置不同有什么区别的话,请指教,谢谢:)*函数名:LCD_CtrlLinesConfig*参数:无*返回:无*功能:配置LCD控制口线,FSMC管脚设置为复用功能*/staticvoidLCD_CtrlLinesConfi

10、g(void )GPIO_lnitTypeDef GPIO_lnitStructure;/* 使能 FSMC, GPIOD, GPIOE, GPIOF, GPIOG和 AFIO 时钟 */RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |RCC_APB2Periph_AFIO,

11、 ENABLE);/* 设置 PD.00(D2), PD.01(D3), PD.04(NOE), PD.05(NWE), PD.08(D13), PD.09(D14),PD.10(D15), PD.14(D0), PD.15(D1)为复用推挽输出 */GPIO_lnitStructure.GPIO_Pin = GPIO_Pin_0 | GPI0_Pin_1 | GPI0_Pin_4 | GPI0_Pin_5 |GPI0_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |GPIO_Pin_15;/ | GPI0_Pin_7;GPIO_lnitStru

12、cture.GPIO_Speed = GPIO_Speed_50MH z;GPIO_lnitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOD, & GPIO_lnitStructure);/* 设置 PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7), PE.11(D8), PE.12(D9), PE.13(D10),PE.14(D11), PE.15(D12)为复用推挽输出 */* PE3,PE4用于 A19, A20, STM32F103ZE-EK(REV 2.0)必须使能*/* PE5,P

13、E6用于 A19, A20, STM32F103ZE-EK(REV 2.0)必须使能*/GPIO_lnitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |GPIO_Pin_15 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6;GPIO_Init(GPIOE, & GPIO_lnitStructure);/*设置PF.00(A0

14、 (RS)为复用推挽输出*/GPIO_lnitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_Init(GPIOF, & GPIO_lnitStructure);/* 设置 PG.12(NE4 (LCD/CS)为复用推挽输出 -CE3(LCD /CS) */GPIO_lnitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_Init(GPIOG, & GPIO_lnitStructure);GPIO_lnitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_lnitStructure.GPIO_Mode

15、 = GPIO_Mode_Out_PP;GPIO_lnitStructure.GPIO_Speed = GPIO_Speed_50MH z;GPIO_lnit(GPIOB, & GPIO_lnitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_1);static void LCD_FSMCConfig( void ) FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;FSMC_NORSRAMTiminglnitTypeDef FSMC_NORSRAMTiminglnitStructure;*/*- FSM

16、C Configuration/*SRAM Bank 4*/* FSMC_Bank1_NORSRAM4 configuration */FSMC_NORSRAMTiminglnitStructure.FSMC_AddressSetupTime =1;FSMC_NORSRAMTiminglnitStructure.FSMC_AddressHoldTime =0;FSMC_NORSRAMTiminglnitStructure.FSMC_DataSetupTime =2;FSMC_NORSRAMTiminglnitStructure.FSMC_BusTurnAroundDuration =0;FSM

17、C_NORSRAMTiminglnitStructure.FSMC_CLKDivision =0;FSMC_NORSRAMTiminglnitStructure.FSMC_DataLatency =0;FSMC_NORSRAMTiminglnitStructure.FSMC_AccessMode = FSMC_AccessMode_B;/* Color LCD configurationLCD configured as follow:-Data/Address MUX = Disable-Memory Type = SRAM-Data Width = 16bit-Write Operatio

18、n = EnableExtended Mode = EnableAsynchronous Wait = Disable */FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;FSMC_NORSRAMInitStructure.FSMC_MemoryDa

19、taWidth = FSMC_MemoryDataWidth_16b;FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_Wait

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论