用户工具

站点工具


icore4trtt_10
银杏科技有限公司旗下技术文档发布平台
技术支持电话0379-69926675-801
技术支持邮件Gingko@vip.163.com
版本 日期 作者 修改内容
V1.0 2020-10-28 yang 初次建立

iCore4T_RTT_10_添加SDRAM驱动

  • SDRAM是同步动态随机存储器,iCore4T ARM+FPGA双核心板挂有一片容量为32M的外部SDRAM,在前面项目的基础上,分享RTT的SDRAM驱动移植,最后实现外部SDRAM的读写测试。

1、首先按照银杏知识库iCore4T双核心板系列教程(STM32CubeMX教程六十——LCD实验驱动4.3寸液晶屏)来对项目Cube进行配置。需要配置时钟、GPIO、TIM12、FMC。要与教程配置保持一致,配置完成后重新生成MDK工程。

2、复制刚刚生成的src文件夹main.c文件中的函数SystemClock_Config(void)到board.c。这里内核初始化时要调用该函数进行时钟配置。

3、修改board文件夹下kconfig文件,在menu "Onboard Peripheral Drivers"中添加配置SDRAM的选项。

4、在board文件夹下新建ports文件夹,用来存放接口头文件。在ports下新建sdram_port.h文件,并添加接口头文件路径到board/SConscript中,文件内容如下:

#ifndef __SDRAM_PORT_H
#define __SDRAM_PORT_H
#ifdef __cplusplus
 extern "C" {
#endif
 
#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) 
#define SDRAM_REFRESH_COUNT                     ((uint32_t)0x0603)
 
#define LOADTOACTIVEDELAY                        2
#define EXITSELFREFRESHDELAY                     7
#define SELFREFRESHTIME                          4
#define ROWCYCLEDELAY                            7
#define WRITERECOVERYTIME	                       2
#define RPDELAY                                  2
#define RCDDELAY                                 2
 
#define SDRAM_BANK_ADDR                          ((uint32_t)0xC0000000)
#define SDRAM_SIZE                               ((uint32_t)0x2000000)
#define SDRAM_DATA_WIDTH                         16
 
#define SDRAM_TARGET_BANK                        1
#define SDRAM_COLUMN_BITS                        9
#define SDRAM_ROW_BITS                           13
#define SDRAM_CAS_LATENCY                        3
#define SDCLOCK_PERIOD                           2
#define SDRAM_RPIPE_DELAY                        1
 
#ifdef __cplusplus
}
#endif
#endif /*__ SDRAM_PORT_H */

5、进入stm32h750-gingko-icore4t文件夹下,右击空白处,选择ConEmu Here,使用scons命令,键入scons --target=mdk5,生成MDK5工程。

6、打开stm32h750-gingko-icore4t下的project.uvprojx工程,编译,烧录,就可以进行外部SDRAM测试了。

7、打开终端,选择对应COM口,比特率115200,可以看到系统启动信息,sdram init success,外部SDRAM映射地址为0xC0000000,大小为32M。运行sdram_test读写测试程序,

至此说明我们的外部SDRAM驱动已经添加成功。

8、源代码

源代码可以移步这里下载:

链接:https://pan.baidu.com/s/1fcLU4WaRDlgr0mNYwZj1Yg  提取码:zstq

icore4trtt_10.txt · 最后更改: 2022/04/01 11:10 由 sean