访问手机版页面
你的位置:老古开发网 > STM32单片机的FSMC > 正文  
STM32系列第15篇--灵活的静态存储控制器FSMC
内容导读:
FSMC特性FSMC管理1GB空间,拥有4个Bank连接外部存储器每个Bank有独立的片选信号每个Bank有独立的时序配置同步批量传输访问最高频率可达60MHzfCLK= HCLK /2静态地址映射存储器支持的存储器类型SRAMPSRAMNOR/ONENANDRO

FSMC特性

FSMC管理1GB空间,拥有4个Bank连接外部存储器
每个Bank有独立的片选信号
每个Bank有独立的时序配置

同步批量传输访问最高频率可达60MHz
fCLK= HCLK /2

静态地址映射存储器支持的存储器类型
SRAM
PSRAM
NOR/ONENAND
ROM

LCD接口-支持8080和6800模式

NANDFlash和16位PCCard,NAND Flash具有硬件ECC

结构

FSMC分为四块BANK,每块各占256M字节空间,每块分为四个区,每个区占64M。

NOR/PSRAM 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]

Bank1的四个区的地址范围:

控制LCD源码讲解:

//LCD地址结构体typedefstruct{vu16LCD_REG;vu16LCD_RAM;}LCD_TypeDef;//使用NOR/SRAM的Bank1.sector4,地址位HADDR[27,26]=11A10作为数据命令区分线//注意设置时STM32内部会右移一位对其!#defineLCD_BASE((u32)(0x6C000000|0x000007FE))#defineLCD((LCD_TypeDef*)LCD_BASE)12345678910

LCD_BASE,须根据外部电路的连接来确定,如Bank1.sector4就是从地址0X6C000000开始,而0X000007FE,则是A10的偏移量。以A10为例,7FE换成二进制为:111 1111 1110,而16位数据时,地址右移一位对齐,对应到地址引脚,就是:A10:A0=011 1111 1111,此时A10是0,但是如果16位地址再加1(对应到8位地址是加2,即7FE+0X02),那么:A10:A0=100 0000 0000,此时A10就是1了,即实现了对RS的0和1的控制。

我们将这个地址强制转换为LCD_TypeDef结构体地址,那么可以得到LCD->LCD_REG的地址就是0X6C00,07FE,对应A10的状态为0(即RS=0),而LCD-> LCD_RAM的地址就是0X6C00,0800(结构体地址自增),对应A10的状态为1(即RS=1),从而实现对RS的控制。

根据8080时序和FSMC写寄存器对比:

//8080时序写寄存器voidLCD_WR_REG(u16data){LCD_RS_CLR;LCD_CS_CLR;DATAOUT(data);LCD_WR_CLR;LCD_WR_SET;LCD_CS_SET;}//FSMC写寄存器voidLCD_WR_REG(u16regval){LCD->LCD_REG=regval;}//用FSMC程序要简便很多,但是在初始化LCD时需要对FSMC进行初始化


标签: fsmc,stm32系列,静态存储控制器,
来源:互联网 作者:karen 时间:2018/10/4 8:20:02
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐