OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4191|回复: 2

探索者F407 外部SRAM(IS62WV51216)

[复制链接]

12

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2014-12-26
在线时间
28 小时
发表于 2017-1-9 23:18:44 | 显示全部楼层 |阅读模式
6金钱
针对探索者板子,SRAM实验,有几个问题不能理解,所以发帖求助下各位大大:

1、原子哥的程序中,在对IS62WV51216控制引脚的初始化中,只是初始化为FSMC,硬件连接如下
//控制引脚硬件连接
BU <------------> PE1
LB <------------> PE0
OE <------------> PD4
WE <------------> PD5
CE <------------> PG10

而在对FSMC的初始化配置中:

[mw_shl_code=c,true] FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM3;//  这里我们使用NE3 ,也就对应BTCR[4],[5]。
  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
  FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_SRAM;// FSMC_MemoryType_SRAM;  //SRAM   
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;//存储器数据宽度为16bit  
  FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =FSMC_BurstAccessMode_Disable;// FSMC_BurstAccessMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
  FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;   
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;  
  FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;        //存储器写使能
  FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;  
  FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; // 读写使用相同的时序
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;  
  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming;
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &readWriteTiming; //读写同样时序

  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);  //初始化FSMC配置[/mw_shl_code]
问题1:
这个地方,读和写同时序。这个是怎么来的?为什么就同时序了?

问题2:
IS62WV51216控制引脚在对SARM的读操作函数和写操作函数中,都没有去特意的设置,请问这是为什么?难道是因为在FSMC初始化的时候,
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;        //存储器写使能  的效果?


[mw_shl_code=c,true]//在指定地址(WriteAddr+Bank1_SRAM3_ADDR)开始,连续写入n个字节.
//pBuffer:字节指针
//WriteAddr:要写入的地址
//n:要写入的字节数
void FSMC_SRAM_WriteBuffer(u8* pBuffer,u32 WriteAddr,u32 n)
{
        for(;n!=0;n--)  
        {                                                                                    
                *(vu8*)(Bank1_SRAM3_ADDR+WriteAddr)=*pBuffer;          
                WriteAddr++;
                pBuffer++;
        }   
}                                                                                                                                                            
//在指定地址((WriteAddr+Bank1_SRAM3_ADDR))开始,连续读出n个字节.
//pBuffer:字节指针
//ReadAddr:要读出的起始地址
//n:要写入的字节数
void FSMC_SRAM_ReadBuffer(u8* pBuffer,u32 ReadAddr,u32 n)
{
        for(;n!=0;n--)  
        {                                                                                            
                *pBuffer++=*(vu8*)(Bank1_SRAM3_ADDR+ReadAddr);   
                ReadAddr++;
        }  
} [/mw_shl_code]
问题3,SRAM的读写有什么要求还是怎么样?在写操作中*(vu8*)(Bank1_SRAM3_ADDR+WriteAddr)=*pBuffer;在读操作中*pBuffer++=*(vu8*)(Bank1_SRAM3_ADDR+ReadAddr);这个为什么要这么写?

以上问题,还请各位大大及原子哥,帮忙说明下,感谢各位了。


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-1-10 10:08:41 | 显示全部楼层
1、读写同时序的问题请看IS62WV51216的数据手册,去看他们的读和写的时序图。
2、FSMC一旦配置好,你就可以直接读写SRAM中的指定地址的数据了!不需要设置什么其他的引脚,这些是FSMC自动完成的!
3、写是对指定地址写,肯定要用指针。读是对指定地址读,也需要用到指针。采用vu8*是为了实现字节读写。更多详细的内容请自行买本C语言书籍认真学习指针章节。
开往春天的手扶拖拉机
回复

使用道具 举报

12

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2014-12-26
在线时间
28 小时
 楼主| 发表于 2017-1-10 21:25:12 | 显示全部楼层
zuozhongkai 发表于 2017-1-10 10:08
1、读写同时序的问题请看IS62WV51216的数据手册,去看他们的读和写的时序图。
2、FSMC一旦配置好,你就可 ...

首先非常感谢您的回复。

我的问题不是说不知道看IS62WV51216的时序图。而是在FSMC初始化的时候,是FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming;
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &readWriteTiming; //读写同样时序。只是想问问为什么要这样。


还有后面我知道是指针的操作,可能我没有表达清楚,这个是我的问题。
我的意思是这个读和写(我帖子中的最后一段代码),难道不按照时序走么?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 20:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表