打印

求救STM32的外扩SRAM问题!!!

[复制链接]
4427|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
feilusia|  楼主 | 2013-8-2 21:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的CPU是STM32F103ZET6,外扩SRAM是EM681FV16AU-55LF,它的大小是512K*16BIT。
我现在的问题是:
  如果这么发是正确的:
FSMC_SRAM_WriteBuffer(&temp,0,1);
FSMC_SRAM_ReadBuffer(&temp1,0,1);
temp++;
FSMC_SRAM_WriteBuffer(&temp,1,1);
FSMC_SRAM_ReadBuffer(&temp1,1,1);
temp++;
  如果这么发就出错:
FSMC_SRAM_WriteBuffer(&temp,0,1);
temp++;
FSMC_SRAM_WriteBuffer(&temp,1,1);
FSMC_SRAM_ReadBuffer(&temp1,0,1);
FSMC_SRAM_ReadBuffer(&temp1,1,1);

我试着不倍频到72M依然是这个问题,真不知道要怎么调了,大神们求救!!!··········
沙发
feilusia|  楼主 | 2013-8-2 21:40 | 只看该作者
我的SRAM配置是这么写的
#include "SRAM.H"
#define Bank1_SRAM3_ADDR    ((u32)(0x68000000))
/*******************************************************************************
* Function Name  : FSMC_SRAM_Init
* Description    : FSMC控制外部SRAM的相关配置
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void FSMC_SRAM_Init(void)
{
  RCC->AHBENR|=1<<8;           //使能FSMC时钟  
RCC->APB2ENR|=1<<5;           //使能PORTD时钟
RCC->APB2ENR|=1<<6;           //使能PORTE时钟
RCC->APB2ENR|=1<<7;           //使能PORTF时钟
RCC->APB2ENR|=1<<8;           //使能PORTG时钟
// RCC->APB2ENR|=1<<0;           //使能复用功能时钟  
GPIOD->CRH&=0X00000000;     //PORTD复用推挽输出(0,1,4,5,8~15)
GPIOD->CRH|=0XBBBBBBBB;         
GPIOD->CRL&=0XFF00FF00;
GPIOD->CRL|=0X00BB00BB;               
GPIOE->CRH&=0X00000000;     //PORTE复用推挽输出(0,1,7~15)
GPIOE->CRH|=0XBBBBBBBB;
GPIOE->CRL&=0X0FFFFF00;
GPIOE->CRL|=0XB00000BB;   
GPIOF->CRH&=0X0000FFFF;       //PORTF复用推挽输出(0~5,12~15)
GPIOF->CRH|=0XBBBB0000;      
GPIOF->CRL&=0XFF000000;
GPIOF->CRL|=0X00BBBBBB;         
GPIOG->CRH&=0XFFFFF0FF;       //PORTG复用推挽输出(0~5,10)
GPIOG->CRH|=0X00000B00;   
GPIOG->CRL&=0XFF000000;
GPIOG->CRL|=0X00BBBBBB;

FSMC_Bank1->BTCR[4]=0X00000000;
  FSMC_Bank1->BTCR[5]=0X00000000;
  FSMC_Bank1E->BWTR[4]=0X00000000;
  FSMC_Bank1->BTCR[4]|=1<<12;//存储器写使能
  FSMC_Bank1->BTCR[4]|=1<<4; //存储器数据宽度为16bit                           
  FSMC_Bank1->BTCR[5]|=5<<8;  
//数据保持时间(DATAST)为4个HCLK 4/72M=55ns        
  FSMC_Bank1->BTCR[5]|=0<<4; //地址保持时间(ADDHLD)未用到        
  FSMC_Bank1->BTCR[5]|=0<<0; //地址建立时间(ADDSET)为1个HCLK   
  //闪存写时序寄存器   
  FSMC_Bank1E->BWTR[4]=0x0FFFFFFF;//默认值
  //使能BANK1区域3
  FSMC_Bank1->BTCR[4]|=1<<0;
}                                                                                                  
/*******************************************************************************
* Function Name  : FSMC_SRAM_WriteBuffer
* Description    : 在指定地址(WriteAddr+Bank1_SRAM3_ADDR)开始,连续写入n个字节.
* Input          : pBuffer:字节指针,WriteAddr:要写入的地址,n:要写入的字节数
* Output         : None
* Return         : None
*******************************************************************************/
void FSMC_SRAM_WriteBuffer(u8 *pBuffer,u32 WriteAddr,u32 n)
{
for(;n!=0;n--)
{                                                                       
  *(vu8*)(Bank1_SRAM3_ADDR+WriteAddr)=*pBuffer;     
  WriteAddr++;
  pBuffer++;
}  
}                                                                                                                                      
/*******************************************************************************
* Function Name  : FSMC_SRAM_ReadBuffer
* Description    : 在指定地址((WriteAddr+Bank1_SRAM3_ADDR))开始,连续读出n个字节.
* Input          : pBuffer:字节指针,WriteAddr:要读出的起始地址,n:要读出的字节数
* Output         : None
* Return         : None
*******************************************************************************/
void FSMC_SRAM_ReadBuffer(u8 *pBuffer,u32 ReadAddr,u32 n)
{
for(;n!=0;n--)
{                                                                              
  *pBuffer=*(vu8*)(Bank1_SRAM3_ADDR+ReadAddr);
  pBuffer++;  
  ReadAddr++;
}
}   

使用特权

评论回复
板凳
feilusia|  楼主 | 2013-8-12 09:34 | 只看该作者
搞定了,这句修改下就可以用了
GPIOE->CRH&=0X00000000;                                 //PORTE复用推挽输出(0,1,7~15,3456作为译码器的片选端)
GPIOE->CRH|=0XBBBBBBBB;

使用特权

评论回复
地板
PSRAM| | 2016-12-25 21:25 | 只看该作者
片上SRAM资源太少,可以采用IPS3204JSQ SQPI PSRAM,容量4MB,最高时钟104MHz,只要有SPI或Quad SPIJ接口就可以使用,价格还非常便宜

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

135

主题

1960

帖子

94

粉丝