野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22124|回复: 5

F767野火V1核心板:CubeMX 配置 SDRAM 没成功(求解)

[复制链接]
发表于 2021-2-14 16:48:19 | 显示全部楼层 |阅读模式
【想用 野火老大的 F767 核心板V1 驱动液晶屏。】
第一步就需要:启用外挂的 SDRAM 啊 [url=]F767_SDRAM.rar[/url]。。。
——于是按照 CubeMX 的配置步骤:依次激活:
HSE、HSI、RTC、SYS(SWD) 和 FMC 就这么简单的工程。
0.jpg
上图 依次是 左右 上下 的 芯片 管脚图 。。。
5.jpg
按照这个 原理图 :SDRAM 首地址 应该是 0xD000 0000 吧 !?
IAR 设置指定位置的 数组在 0xD000 0000 编译链接都无错哦。
1.jpg
程序能正常 运行到 SDRAM 结构体 的位置。可是下面就坏啦 。
2.jpg
  在 FMC 初始化之后 ,数组 就 无效 了 ???
【想 挪移 数组语句的位置,在 FMC 之后、却编译 报错 啊】
3.jpg
——奇怪的是:把 数组地址改为 0xA000 0000 却能运行16次。
4.jpg

请问:野火老大:究竟怎么才能 “从头开始用 CubeMX” 配置你的
F767 核心板 的 SDRAM 啊 ??



F767_SDRAM.rar

2.73 KB, 下载次数: 1

回复

使用道具 举报

 楼主| 发表于 2021-2-14 17:12:15 | 显示全部楼层
本帖最后由 caosix 于 2021-2-14 17:13 编辑

先 解决一个 最最 基础的问题 :
零开始  CubeMX 自动生成 初始化代码 之后 ,
是否还需要 额外的 某些设置 语句呢 ? ?
回复 支持 反对

使用道具 举报

发表于 2021-2-15 00:05:52 | 显示全部楼层
等年后HAL视频录到SDRAM章节
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-2-15 13:43:49 | 显示全部楼层
WishWish 发表于 2021-2-15 00:05
等年后HAL视频录到SDRAM章节

/* USER CODE BEGIN PV */
  uint16_t ContN;
  #pragma location = 0xD0000800
  uint16_t sdram_buf[32];     // 故意避开 D000 0000 还是失败 。
/* Private variables ---------------------------------------------------------*/
#define Bank1   (1)
#define Bank2   (2)
#define SDRAM_MODEREG_BURST_LENGTH_1             ((uint16_t)0x0000)
#define SDRAM_MODEREG_BURST_LENGTH_2             ((uint16_t)0x0001)
#define SDRAM_MODEREG_BURST_LENGTH_4             ((uint16_t)0x0002)
#define SDRAM_MODEREG_BURST_LENGTH_8             ((uint16_t)0x0004)
#define SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL      ((uint16_t)0x0000)
#define SDRAM_MODEREG_BURST_TYPE_INTERLEAVED     ((uint16_t)0x0008)
#define SDRAM_MODEREG_CAS_LATENCY_2              ((uint16_t)0x0020)
#define SDRAM_MODEREG_CAS_LATENCY_3              ((uint16_t)0x0030)
#define SDRAM_MODEREG_OPERATING_MODE_STANDARD    ((uint16_t)0x0000)
#define SDRAM_MODEREG_WRITEBURST_MODE_PROGRAMMED ((uint16_t)0x0000)
#define SDRAM_MODEREG_WRITEBURST_MODE_SINGLE     ((uint16_t)0x0200)

uint8_t SDRAM_SendCommand(uint32_t CommandMode, uint32_t Bank, uint32_t RefreshNum, uint32_t RegVal)
{
    uint32_t CommandTarget;
    FMC_SDRAM_CommandTypeDef Command;
   
    if(Bank == 1)
        CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
    else if(Bank == 2)
        CommandTarget = FMC_SDRAM_CMD_TARGET_BANK2;
   
    Command.CommandMode = CommandMode;
    Command.CommandTarget = CommandTarget;
    Command.AutoRefreshNumber = RefreshNum;
    Command.ModeRegisterDefinition = RegVal;
    if(HAL_SDRAM_SendCommand(&hsdram1, &Command, 0x1000) == HAL_OK)
        return 1;
    else
        return 0;
}
// 在主函数中调用下面的 SDRAM_Init()函数后即可使用SDRAM。
void SDRAM_Init(void)
{
    uint32_t temp;
   
    SDRAM_SendCommand(FMC_SDRAM_CMD_CLK_ENABLE,Bank2, 1, 0);        //步骤3:使能时钟信号,SDCKE0 = 1
    HAL_Delay(1);                                                   //步骤4:至少延时200us
    SDRAM_SendCommand(FMC_SDRAM_CMD_PALL,Bank2, 1, 0);              //步骤5:发送全部预充电命令
    SDRAM_SendCommand(FMC_SDRAM_CMD_AUTOREFRESH_MODE,Bank2, 8, 0);  //步骤6:设置自动刷新次数
   
    temp = SDRAM_MODEREG_BURST_LENGTH_1     |                       //设置突发长度:1
      SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL   |                       //设置突发类型:连续
      SDRAM_MODEREG_CAS_LATENCY_3           |                       //设置CAS值:3
      SDRAM_MODEREG_OPERATING_MODE_STANDARD |                       //设置操作模式:标准
      SDRAM_MODEREG_WRITEBURST_MODE_SINGLE;                         //设置突发写模式:单点访问
   
    SDRAM_SendCommand(FMC_SDRAM_CMD_LOAD_MODE,Bank2, 1, temp);      //步骤7:装载模式寄存器的值
   
    //SDRAM刷新周期是64ms,行数是8192行,时钟频率是168MHz/2=84MHz
    //所有COUNT = (64ms/8192)/(1/84us)-20 = 64000*84/8192-20 = 636
    HAL_SDRAM_ProgramRefreshRate(&hsdram1,1572);                    //步骤8:设置刷新速率
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-15 13:49:22 | 显示全部楼层
WishWish 发表于 2021-2-15 00:05
等年后HAL视频录到SDRAM章节

谢谢,谢谢,,春节 假期 算是 白耽误了 。
附加了 SDRAM 的后续 程序 ,还是 失败 啊 。。
444.jpg
【期待你们的教程】:核心板其实 就两个“外设”
一个是:SDRAM ,,另一个是:四线 存储器


【期望你们单独 从“空白开始” 用 CubeMX创建工程】


回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-15 15:35:56 | 显示全部楼层
WishWish 发表于 2021-2-15 00:05
等年后HAL视频录到SDRAM章节

期望 你们春节后 的教程 不要 【偏题 啊】。。
我们不是要去设计核心板、我们只是使用:空白核心板
——期望教程简单实用:
1、STM32CubeMX 创建全新的 SDRAM 工程 。
    可以省略(HSE、HSI、RTC、SYS(SWD) 步骤)
2、直观给出针对F767核心板V1的 FMC 的设置参数图片。
3、生成全新的工程文件。
4、【重点】不要额外使用 include() 自动创建的除外,直观
    的给出针对F767野火V1板子的 SDRAM_Init() 各条语句
5、这样用户才能很快速的:使用上你们的 F767 核心板 。
——【不要讲那些:与 “快速使用” 无关的 东西。。。】
46546.jpg


回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-6-8 07:55 , Processed in 0.032313 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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