| **银杏科技有限公司旗下技术文档发布平台** |||| |技术支持电话|**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工程。 ==== http://www.gkwiki.cn/doku.php?id=icore4t_60 ==== 2、复制刚刚生成的src文件夹main.c文件中的函数SystemClock_Config(void)到board.c。这里内核初始化时要调用该函数进行时钟配置。 ==== ==== 3、修改board文件夹下kconfig文件,在menu "Onboard Peripheral Drivers"中添加配置SDRAM的选项。 ==== {{ :icore4t:iCore4T_RTT_10_1.png?direct |}} {{ :icore4t:iCore4T_RTT_10_2.png?direct |}} ==== 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 */ {{ :icore4t:iCore4T_RTT_10_3.png?direct |}} ==== 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读写测试程序, ==== {{ :icore4t:iCore4T_RTT_10_4.png?direct |}} 至此说明我们的外部SDRAM驱动已经添加成功。 ==== 8、源代码 ==== 源代码可以移步这里下载: 链接:https://pan.baidu.com/s/1fcLU4WaRDlgr0mNYwZj1Yg  提取码:zstq