STNOR/PSRAM地址映射NOR/PSRAM是"staticmemorymap"设备:256M字节的空间需要28根地址线寻址HADDR是内部AHB地址总线HADDR[25:0]来自外部存储器地址FSMC[25:0]28根地址线HADDR[26:27]对4个region分别寻址无论外接8位/16位宽度设备,FSMCA[01永远连接外部设备的地址A[0]外接16位宽度存储器:HADDR[25:1]>FSMC_A[24:0]外接8位宽度存储器:HADDR[25:0]>FSMC_A[25:0]HADDR所选的Bank片选信号地址范围[27:26][25:0]00Bank1.region1FSMCNE10x6000.0000~63FF.FFFF01Bank1.region2FSMCNE20x6400.0000~67FFFFFFFSMC_A[25:0]10Bank1.region3FSMCNE30x6800.0000~6BFF.FFFF11Bank1.region4FSMCNE40x6C00.0000~6FFF.FFFFSTMicroelectronics11
11 NOR/PSRAM地址映射 NOR/PSRAM是”static memory map”设备:256M字节的空间需要28根地 址线寻址 HADDR是内部AHB地址总线 HADDR[25:0]来自外部存储器地址FSMC[25:0] HADDR[26:27]对4个region分别寻址 无论外接8位/16位宽度设备,FSMC_A[0]永远连接外部设备的地址A[0] 外接16位宽度存储器:HADDR[25:1] FSMC_A[24:0] 外接8位宽度存储器:HADDR[25:0] FSMC_A[25:0] 所选的Bank 片选信号 地址范围 HADDR [27:26] [25:0] Bank1.region1 FSMC_NE1 0x6000,0000~63FF,FFFF 00 FSMC_A[25:0] Bank1.region2 FSMC_NE2 0x6400,0000~67FF,FFFF 01 Bank1.region3 FSMC_NE3 0x6800,0000~6BFF,FFFF 10 Bank1.region4 FSMC_NE4 0x6C00,0000~6FFF,FFFF 11 28根地址线
STFSMC外接SRAM、NOR、NANDA1邢舰舰租限想权福标社行社社局C+TV3DY22VDEVDI11015VS8vSS1丽NAND512W3A2CN6EA4吧NANDSIPW3AHNHEvCC-GNDFS2世2DSST39LF0403VVS6ILV64160RIK7FSMNTR4>R30FSMN4K7>K+3V3U10STMicroelectronics12
12 FSMC外接SRAM、NOR、NAND
STNOR/PSRAM地址映射的使用(1)举例1:在Bank1的region2挂了一个8位宽度的NORFlashFSMC NOR_WriteByte(u32WriteAddr,u8 Data)/* 1. */NOR WRITE(ADDR SHIFT(0x5555),0xAA);NOR WRITE(ADDR SHIFT(0x2AAA),0x55);NOR WRITE(ADDR SHIFT(0x5555),0xA0);*2.往目标地址写入目标数据*NOR WRITE((Bank1 NOR2_ADDR + WriteAddr), Data);/*3.等待NOR内部写逻辑完成*#defineBank1NOR2ADDR((u32)0x64000000)#define ADDR_SHIFT(A) (Bank1_NOR2_ADDR + (1* (A)#define NOR_WRITE(Address, Data) (*(vu8 *)(Address)= (Data))Command1stBus2ndBus3rdBus4thBus5thBus6thBusSequenceWrite CycleWriteCycleWriteCycleWriteCycleWriteCycleWriteCycleAddr1Addr1Addr1Addr1Addr1Addr1DataDataDataDataDataDataBA2AAH55HByte-Program5555H2AAAH5555HAOHDataSTMicroelectronics13
13 NOR/PSRAM地址映射的使用(1) 举例1:在Bank1的region2挂了一个8位宽度的NOR Flash FSMC_NOR_WriteByte(u32 WriteAddr, u8 Data) /* 1. */ NOR_WRITE(ADDR_SHIFT(0x5555), 0xAA); NOR_WRITE(ADDR_SHIFT(0x2AAA), 0x55); NOR_WRITE(ADDR_SHIFT(0x5555), 0xA0); /* 2. 往目标地址写入目标数据 */ NOR_WRITE((Bank1_NOR2_ADDR + WriteAddr), Data); /* 3. 等待NOR内部写逻辑完成 */ . #define Bank1_NOR2_ADDR ((u32)0x64000000) #define ADDR_SHIFT(A) (Bank1_NOR2_ADDR + (1 * (A))) #define NOR_WRITE(Address, Data) (*(vu8 *)(Address) = (Data))
STNOR/PSRAM地址映射的使用(2)举例1:在Bank1的region2挂了一个16位宽度的NORFlashFSMC_NOR_WriteByte(u32WriteAddr,u8Data)* 1. *INOR_WRITE(ADDR_SHIFT(0x5555), 0xAA);NOR WRITE(ADDR_SHIFT(0x2AAA),0x55);NORWRITE(ADDRSHIFT(0x5555),0xA0);*2.往且标地址写入且标数据*NOR WRITE((Bank1_NOR2_ADDR + WriteAddr), Data);/*3.等待NOR内部写逻辑完成*/#define ADDR_SHIFT(A) (Bank1_NOR2_ADDR + (2 * (A))#define NOR_WRITE(Address, Data) (*(vu16*)(Address)= (Data)STMicroelectronics
14 NOR/PSRAM地址映射的使用(2) 举例1:在Bank1的region2挂了一个16位宽度的NOR Flash FSMC_NOR_WriteByte(u32 WriteAddr, u8 Data) /* 1. */ NOR_WRITE(ADDR_SHIFT(0x5555), 0xAA); NOR_WRITE(ADDR_SHIFT(0x2AAA), 0x55); NOR_WRITE(ADDR_SHIFT(0x5555), 0xA0); /* 2. 往目标地址写入目标数据 */ NOR_WRITE((Bank1_NOR2_ADDR + WriteAddr), Data); /* 3. 等待NOR内部写逻辑完成 */ . #define ADDR_SHIFT(A) (Bank1_NOR2_ADDR + (2 * (A))) #define NOR_WRITE(Address, Data) (*(vu16 *)(Address) = (Data))
SNAND/PCCard地址映射NAND/PCCard控制器管理3个Bank每个Bank占据256M存储空间(64*4)Bank2、Bank3挂NANDFlash每个Bank又分成两个section:Common和AttributeBank4挂PCCard该Bank分成三个section:Common、Attribute和l/O存储空间空间大小地址范围FSMCBank时序寄存器64MBCommonFSMCPMEM20x7000.0000~73FF.FFFFBank2(NAND)64MBAttributeFSMC PATT20X7800.0000~7BFFFFFFFSMC PMEM364MB0x8000.0000~83FF.FFFFCommonBank3(NAND)64MBAttributeFSMCPATT30x8800.0000~8BFFFFFF64MBCommonFSMC PMEM40x9000.0000~93FFFFFFBank464MBAttributeFSMCPATT40x9800.0000~9BFF.FFFF(PC Card)VOFSMCPIO464MB0x9C00.0000~9FFFFFFFSTMicroelectronics15
15 NAND/PC Card地址映射 NAND/PC Card控制器管理3个Bank 每个Bank占据256M存储空间(64*4) Bank2、Bank3挂NAND Flash 每个Bank又分成两个section:Common和Attribute Bank4挂PC Card 该Bank分成三个section:Common、Attribute和I/O FSMC Bank 存储空间 时序寄存器 空间大小 地址范围 Bank2 (NAND) Common FSMC_PMEM2 64MB 0x7000,0000~73FF,FFFF Attribute FSMC_PATT2 64MB 0x7800,0000~7BFF,FFFF Bank3 (NAND) Common FSMC_PMEM3 64MB 0x8000,0000~83FF,FFFF Attribute FSMC_PATT3 64MB 0x8800,0000~8BFF,FFFF Bank4 (PC Card) Common FSMC_PMEM4 64MB 0x9000,0000~93FF,FFFF Attribute FSMC_PATT4 64MB 0x9800,0000~9BFF,FFFF I/O FSMC_PIO4 64MB 0x9C00,0000~9FFF,FFFF