stm32——fmsc控制外部SRAM——小结
近期项目中使用到了 IS64LV25616AL 的芯片,因此我要总结一下。
IS64LV25616AL这个是256*16的的,数据格式是16位,所以一共有512KB的空间,比较大了,stm32F103zet6才64KB内部SRAM。
可以使能byte enable,进行8位的访问,只要设置好了后,可以像片内的sram一样,随意访问的片外的sram,可以使用指针形式,可以at绝对地址定位的方式(ac5、ac6两种方式都可以,但是有所区别)。
stm32把片内外设的1GB的空间用于访问 nor/psram nand pcsd等,也就是书上说的地址映射,而且每个块都是4*64MB,共4个,既4*4*64MB。而且在nor/psram这个bank1的区域又分为4个小区域,这个小区域都有地址分配的,可以参考stm32的参考手册,而且每个小区域有相应的NE片选引脚,可以在stm32cubemx中进行设置,所以NE引脚是要结合硬件设计手动来选择的,而且也不能随便设置。其他的地址线、数据线、信号线等等,stm32cubemx会自动设置好,我们只要关心NE片选即可,十分方便。
另外stm32F103ze系列是有fsmc控制器的,引脚数目小于100的是没有的,其他高性能的stm32也是有的,具体就是要看芯片手册了。
把外部SRAM当做外部存储器来使用,上面的步骤就结束了的,而如果把外部SRAM当做内存使用,或者把部分堆栈空间放到外部SRAM,还需要做一些其他的设置,可以参考安富莱的教程和strongerhuang的博客。
网上的资料:
STM32F103ZET(基于秉火开发板)+Cubemx(F1 V1.60库)+FSMC读写SRAM或者液晶屏的控制芯片
首先说明下开发条件:
1、开发板:秉火霸道,STM32F103ZET
2、软件:Cubemx V4.23(F1 V1.60库)
3、硬件:SRAM:IS62WV51216 1MByte 或者 ILI9341的液晶控制器芯片
问题描述:读写SRAM时高字节无效!
问题原因:Bytes使能选项没有选择!
解决办法:
因为SRAM是16位的数据线,需要高8位和低8位分别有效,所以这个选项需要选择上!
如果是ILI9341的液晶控制器芯片的控制芯片则需要看您是使用哪根地址线模拟D/CX (数据/信号)的,根据具体情况进行选择!比如在控制液晶屏的时候就没有选择bytes使能,但是也没有出错,因为在数据传输的时候都是发送的8位!所以保险起见,应该将这个选项选上!