关于f407如何利用自带的初始化调用外部ram IS62WV51216自测好用

2019-07-20 10:52发布

最近,一直在使用f407的最小系统版做大数据量处理,需要使用到外部ram,看了正点原子的外部sram以及内存管理方法,根据与f103的对比找到了一种方法
利用f407 systeminitl.c 内的函数调用1M的IS62WV51216。
发现:systeminitl.c自带的  SystemInit_ExtMemCtl(); 有问题,与正点原子的接线并不匹配。
下面我就对比说一下这个程序改法。
1、使用的硬件连接方式是正点原子的接线方式,从图中我们可以看出IS62WV51216的CE接在NE3就是PG10就是第三区地址为0x6800.。。
微信截图_20171123104439.png
2、systeminitl.c程序
首先需要打开#define DATA_IN_ExtSRAM,使得初始化可以进入外存初始化配置
微信截图_20171123105046.png
3、下面我对比着说一下自带的和我改的void SystemInit_ExtMemCtl(void)(重点)
(1)官方配置的:
官方配置是PG9的NE2二区地址为0x6400.。。。。且FSMC的寄存器配置也不一样,说明官方函数并不是为正点原子的外部ram IS62WV51216而设计的配置
(2)我配置的:
绝大多数用户使用的是正点原子配置我就按照正点原子的修改程序:
更改PG9的NE3三区地址为0x6800.。。。这样就需要把GPIO_G口重新配置一边
微信截图_20171123105858.png
下面更改三个寄存器,三区对应的是【4】【5】,然后特别注意BTCR这个寄存器,我是用的902,9和2是控制hclk的周期数,这里我没有理解为什么,这个数是我试出来的,保证数据能够完整读写。
微信截图_20171123110035.png
疑惑需要讨论:
我的处理数据长度是32k长度的float型,最疑惑寄存器BTCR的设置,RD高电平与低电平时间(就是hclk周期数也就是BTCR寄存器的ADDSET[3:0]:地址建立时间 与 DATAST[7:0]:数据保持时间。)应该如何确定,我觉得这个和时序与hclk有关请高手说一下。






0条回答

一周热门 更多>