1 /****************************************************************************************************************************************** 2 * 文件名称: SWM320_sram.c 3 * 功能说明: SWM320单片机的SRAM驱动程序 4 * 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1 5 * 注意事项: 6 * 版本日期: V1.1.0 2017年10月25日 7 * 升级记录: 8 * 9 * 10 ******************************************************************************************************************************************* 11 * @attention 12 * 13 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 14 * REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 15 * FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 16 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN- 17 * -ECTION WITH THEIR PRODUCTS. 18 * 19 * COPYRIGHT 2012 Synwit Technology 20 *******************************************************************************************************************************************/ 21 #include "SWM320.h" 22 #include "SWM320_sram.h" 23 24 25 /****************************************************************************************************************************************** 26 * 函数名称: SRAM_Init() 27 * 功能说明: SRAM控制器初始化 28 * 输 入: SRAM_InitStructure * initStruct 包含 SRAM 控制器相关设定值的结构体 29 * 输 出: 无 30 * 注意事项: 无 31 ******************************************************************************************************************************************/ SRAM_Init(SRAM_InitStructure * initStruct)32void SRAM_Init(SRAM_InitStructure * initStruct) 33 { 34 uint32_t i; 35 36 // 配置SRAM前需要刷新下SDRAM控制器 37 do { 38 SYS->CLKEN |= (1 << SYS_CLKEN_SDRAM_Pos); 39 40 while(SDRAMC->REFDONE == 0); 41 SDRAMC->REFRESH &= ~(1 << SDRAMC_REFRESH_EN_Pos); 42 43 for(i = 0; i < 1000; i++) __NOP(); 44 SYS->CLKEN &= ~(1 << SYS_CLKEN_SDRAM_Pos); 45 } while(0); 46 47 SYS->CLKEN |= (1 << SYS_CLKEN_RAMC_Pos); 48 for(i = 0; i < 10; i++) __NOP(); 49 50 SRAMC->CR = (initStruct->ClkDiv << SRAMC_CR_RWTIME_Pos) | 51 (initStruct->DataWidth << SRAMC_CR_BYTEIF_Pos) | 52 (0 << SRAMC_CR_HBLBDIS_Pos); // 使能字节、半字访问 53 } 54