在STM32上跑UCOS_II和UCGUI时,要想让屏幕安稳不闪,显现作用多样化,并且分配给每个使命的仓库空间满足,STM32内部的RAM肯定是缺乏的。最好的办法便是装备FSMC使内部RAM作为仓库运用,而外部RAM作为变量存储和UCOS_II的使命仓库。现在介绍FSMC以及怎么装备,并写出发动文件中需求修正的当地。
FSMC简介
为什么能够运用FSMC来运用外部RAM呢,先了解一下STM32里的FSMC。大容量且引脚数在100脚以上的STM32F103芯片都带有FSMC接口。FSMC是灵敏的静态存储操控器,能够与同步或异步存储器和16位PC存储器卡接口,STM32的FSMC接口支撑包含SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器。FSMC框图:
FSMC办理1 GB的映射地址空间。该空间划分为4个巨细为256 MB的BANK,每个BANK又划分为4个64 MB的子BANK,FSMC的2个操控器办理的映射地址空间不同。NOR Flash操控器办理第1个BANK,NAND/PC Card操控器办理第2~4个BANK。如图是FSMC的存储空间地址映射:
这次的重点是用上外部的RAM,所以只介绍Bank1。STM32的FSMC存储块1被分为4个区,每个区办理64M字节空间,每个区都有独立的寄存器对衔接的存储器进行装备。Bank1的256M字节空间由28根地址先寻址。当Bank1接的是16位宽的设备,HADDR[25:1]->FSMC[24:0]。当Bank1接的是8为宽度存储器的时分:HADDR[25:0]->FSMC[25:0]。
对FSMC的基本信息介绍便是上面这几点,重点是重视每一个区的地址规模。由于鄙人面的内容会用到。
FSMC装备
根据此原理图进行装备:
如图是以FSMC的BANK1区域3来操控IS63WV51216这个1M字节容量的SRAM芯片。开端装备FSMC,现在是运用FSMC来操作外部SRAM。所以在挑选存储器类型时就挑选SRAM。上图能够看出地址总线和数据总线是分隔的,所以装备的时分挑选不复用总线。也要留意的是芯片的数据宽度是16位。在装备完成后使能操控块就能够了。如下是装备代码
LDR R0,= 0x00000114
LDR R1,= 0x40021014
STR R0,[R1] ;使能FSMC时钟
LDR R0, =0X000001E0
LDR R1, =0X40021018
STR R0,[R1] ;GPIOD,GPIOE,GPIOF,GPIOG时钟使能
LDR R0,= 0x44BB44BB
LDR R1,= 0x40011400
STR R0,[R1]
LDR R0,= 0xBBBBBBBB
LDR R1,= 0x40011404
STR R0,[R1] ;装备GPIOD
LDR R0,= 0xB44444BB
LDR R1,= 0x40011800
STR R0,[R1]
LDR R0,= 0xBBBBBBBB
LDR R1,= 0x40011804
STR R0,[R1] ;装备GPIOE
LDR R0,= 0x44BBBBBB
LDR R1,= 0x40011C00
STR R0,[R1]
LDR R0,= 0xBBBB4444
LDR R1,= 0x40011C04
STR R0,[R1] ;装备GPIOF
LDR R0,= 0x44BBBBBB
LDR R1,= 0x40012000
STR R0,[R1]
LDR R0,= 0x44444B44
LDR R1,= 0x40012004
STR R0,[R1] ;装备GPIOG