S(2)NAND/PCCard地址映射NAND的Common和Attribute空间又可细分为Data section(第一个64KB空间)■软件从这个空间的任何地方执行读、写数据操作Commandsection(第二个64KB空间)软件往这个空间里任何地方写入命令字节■这个空间任何地址都是Addr[16]=1(CLE为高电平)Addresssection(下一个128KB空间)一软件往这个空间的任何地方写入地址字节序列这个空间任何地址都是Addr[17]=1(ALE为高电平)Section外部信号地址范围HADDR[17:16]数据00ALE=CLE=00x00.0000~0.FFFF命令01ALE=0,CLE=10x01,0000~01,FFFF地址1xCLE=0ALE=1,0x02.0000~03,FFFF注意:ALE就是FSMC_A[17]:CLE就是FSMC_A[16]STMicroelectronics16
16 NAND/PC Card地址映射(2) NAND的Common和Attribute空间又可细分为 Data section(第一个64KB空间) 软件从这个空间的任何地方执行读、写数据操作 Command section(第二个64KB空间) 软件往这个空间里任何地方写入命令字节 这个空间任何地址都是Addr[16]=1(CLE为高电平) Address section(下一个128KB空间) 软件往这个空间的任何地方写入地址字节序列 这个空间任何地址都是Addr[17]=1(ALE为高电平) Section HADDR[17:16] 外部信号 地址范围 数据 00 ALE=CLE=0 0x00,0000~0,FFFF 命令 01 ALE=0,CLE=1 0x01,0000~01,FFFF 地址 1x ALE=1,CLE=0 0x02,0000~03,FFFF 注意:ALE就是FSMC_A[17];CLE就是FSMC_A[16]
STFSMC外接SRAM、NOR、NANDA1邢舰舰租限想权福标社行社社局C+TV3DY22VDEVDI11015VS8vSS1丽NAND512W3A2CN6EA4吧NANDSIPW3AHNHEvCC-GNDFS2世2DSST39LF0403VVS6ILV64160RIK7FSMNTR4>R30FSMN4K7>K+3V3U10STMicroelectronics17
17 FSMC外接SRAM、NOR、NAND
STNAND地址映射的使用举例:在Bank2上挂了一块NAND512W3A2FSMCNANDReadID(NAND IDTypeDef*NAND_ID)/*1.SendCommandtothecommandarea*/*( IO uint8 t *)(Bank NAND ADDR /CMD AREA) =0x90*(IO uint8_t *)(Bank_NAND_ADDRIADDR_AREA) =Ox00;/* 2. Sequence to read ID from NAND flash */data = *(IO uint32_t *)(Bank _NAND_ADDR | DATA_AREA);/* 3. process returned data */#defineBankNANDADDR((uint32 t)0x70000000)#defineDATAAREA((uint32_t)0x00000000)#defineADDRAREA(uint32 _t)(1<<17) /* A17 = ALE high */(uint32_t)(1<<16) /* A16 = CLE high */#defineCMDAREABus Write Operations(1)CommandacceptedCommandduring busy3rdCYCLE1stCYCLE2ndCYCLE90hReadElectronicSignatureSTMicroelectronics18
18 NAND地址映射的使用 举例:在Bank2上挂了一块NAND512W3A2 FSMC_NAND_ReadID(NAND_IDTypeDef* NAND_ID) /* 1. Send Command to the command area */ *(_IO uint8_t *)(Bank_NAND_ADDR | CMD_AREA) = 0x90; *(_IO uint8_t *)(Bank_NAND_ADDR | ADDR_AREA) = 0x00; /* 2. Sequence to read ID from NAND flash */ data = *(_IO uint32_t *)(Bank_NAND_ADDR | DATA_AREA); /* 3. process returned data */ #define Bank_NAND_ADDR ((uint32_t)0x70000000) #define DATA_AREA ((uint32_t)0x00000000) #define ADDR_AREA (uint32_t)(1<<17) /* A17 = ALE high */ #define CMD_AREA (uint32_t)(1<<16) /* A16 = CLE high */
S培训内容FSMC特性简介和FSMC框图外挂存储器地址映射AHB接口NOR/PSRAM控制器接口信号支持的存储器和访问方式异步传输同步突发传输NAND/PCcard控制器接口信号支持的存储器和访问方式NAND操作ECC计算PCcard/CompactFlash操作STMicroelectronics19
19 培训内容 FSMC特性简介和FSMC框图 外挂存储器地址映射 AHB接口 NOR/PSRAM控制器 接口信号 支持的存储器和访问方式 异步传输 同步突发传输 NAND/PC card控制器 接口信号 支持的存储器和访问方式 NAND操作 ECC计算 PC card/Compact Flash操作
STFSMC模块的AHB接口AHB总线上的主设备通过它访问外部静态存储器32位的AHB读写访问转换成连续的8位读写操作,如果访问8位宽度存储器:16位读写操作,如果访问16位宽度存储器FSMC模块的参考时钟:HCLK所有输出控制信号都在HCLK的上升沿改变可能的错误情况出错的影响错误原因CPUDMA对没有使能的Bank进行读写操作读写的NOR所在region禁止访问:产生DMA传输中断产生hardfault中断FACCEN@FSMCBCRX=O该DMA通道自动关闭读写的PCCard对应的FSMCCD(卡在检测引脚电平为低STMicroelectronics20
20 FSMC模块的AHB接口 AHB总线上的主设备通过它访问外部静态存储器 32位的AHB读写访问转换成连续的 8位读写操作,如果访问8位宽度存储器 16位读写操作,如果访问16位宽度存储器 FSMC模块的参考时钟:HCLK 所有输出控制信号都在HCLK的上升沿改变 可能的错误情况 错误原因 出错的影响 CPU DMA 对没有使能的Bank进行读写操作 产生hard fault中断 产生DMA传输中断 该DMA通道自动关闭 读写的NOR所在region禁止访问: FACCEN@ FSMC_BCRx=0 读写的PC Card对应的FSMC_CD (卡在检测)引脚电平为低