OpenEdv-开源电子网

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

sdram实验使用fmc的bank6出现问题

[复制链接]

9

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
256
金钱
256
注册时间
2018-8-8
在线时间
50 小时
发表于 2019-12-3 11:34:35 | 显示全部楼层 |阅读模式
8金钱
本帖最后由 走投无路的卡卡 于 2019-12-3 21:25 编辑

————————————————————————————————————————————————————————————————————————————————————————————

原子哥的实验使用的是fmc的bank5,基地址是0xC0000000,现在我想尝试用bank6,基地址为0xD0000000,其他功能不变,把相应的地方的代码修改后,程序运行不正常。代码修改后如下:
————————————————————————————————————————————————————————————————————————————————————————————
main.c

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "sdram.h"

u16 testsram[25] __attribute__((at(0XD0000000)));

void fsmc_sdram_test()
{  
        u32 i=0;            
        u32 temp=0;           
        u32 sval=0;        
        for(i=0;i<16*25*1024;i+=16*1024)
         {
                  *(vu32*)(Bank6_SDRAM_ADDR+i)=temp;
                  temp++;
         }
         for(i=0;i<16*25*1024;i+=16*1024)
         {        
                    temp=*(vu32*)(Bank6_SDRAM_ADDR+i);
                  if(i==0)sval=temp;
                   else if(temp<=sval)break;
                  printf("SDRAM Capacity:%dKB\r\n",(u16)(temp-sval+1)*16);
          }                                         
}        

int main(void)
{
                u8 key;                 
                u8 i=0;            
                u32 ts=0;
          u8 lcd_id[12];

    HAL_Init();                     
    Stm32_Clock_Init(360,25,2,8);
    delay_init(180);
    uart_init(115200);
    LED_Init();
    KEY_Init();
    SDRAM_Init();

        for(ts=0;ts<25;ts++)
        {
                testsram[ts]=ts;
        //        printf("%d,%d\r\n",testsram[ts],ts);
        }         
        while(1)
        {
                 key=KEY_Scan(0);
                 if(key==KEY0_PRES)
                 fsmc_sdram_test();
                 if(key==KEY1_PRES)
                 {
                            for(ts=0;ts<25;ts++)
                            {
                      //                LCD_ShowxNum(30,190,testsram[ts],6,16,0);
                                                                      printf("%x",(u32 *)&testsram[ts]);
                                      printf("testsram[%d]:%d\r\n",ts,testsram[ts]);
                            }

                 }else delay_ms(10);   
                  i++;
                  if(i==20)
                 {
                           i=0;
                           LED0=!LED0;
  }
        }
}
———————————————————
sdram.c


sdram中就改了两块地方,如图。
——————————————————————————————————
sdram.h中添加了0xD0000000的基地址宏定义

——————————————————————————————————
运行结果跟原子哥的不一样,数组中读出来的数据都是0xFFFF,内存显示不对,请问大家更换bank还需要改其他哪些地方吗?

sdram.c修改后

sdram.c修改后

sdram.c修改后

sdram.c修改后

最佳答案

查看完整内容[请看2#楼]

问题找到了,开发板的硬件决定了sdram只能使用fmc的bank5,所以软件上无法更改为bank6
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
256
金钱
256
注册时间
2018-8-8
在线时间
50 小时
 楼主| 发表于 2019-12-3 11:34:36 | 显示全部楼层
问题找到了,开发板的硬件决定了sdram只能使用fmc的bank5,所以软件上无法更改为bank6
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-12-3 13:54:16 | 显示全部楼层
帮顶                                   
成功没有捷径
回复

使用道具 举报

9

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
256
金钱
256
注册时间
2018-8-8
在线时间
50 小时
 楼主| 发表于 2019-12-3 18:16:41 | 显示全部楼层
配置完bank6之后,在执行FMC_SDRAM_SendCommand函数时,数组中的数据全部跳变为0xFFFF,求大神解答问题所在
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 11:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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