⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 initial.c

📁 基于Freescale的MX21处理器的bootloader程序
💻 C
字号:
/*-------------------------------------------------------------------
FILE NAME:
	config.c
DESCRIPTION:
	this file includes modules initialize function. 
AUTHOR:
	WYF
VERSION:
	2005.1122.00
COMPANY:
	DATANG MICROELECTRONICS TECHNOLOGY CO,.LTD
HISTORY:
	2005.1122 Creat this file
	...
--------------------------------------------------------------------*/
#include "ADSmx21_defs.h"

#pragma O0

void Pll_init(void)
{
	int i;
	/* FCLK:266M HCLK:133M */

	/* PRESC:1 | USBDIV:6 | MPLL(in):32.768K | SPLL(in):32.768K  
		BCLKDIV:2 | OSC26M_DIV:1 */
	CSCR = 0x17004607;
	/* MPLL : 266M / FCLK: 266M / HCLK: 133M */
	MPCTL0 = 0x007b1c73;
	/* Restart MPLL */
	CSCR |= 0x00200000;
	/* Check if MPLL is locked */
	do{
		i++;i--;i++;i--;
		i = MPCTL1 & 0x8000;		
	}while(i == 0);

	/* SPLL : 288M / USB:48M */
	SPCTL0 = 0x03b02227;
	/* Restart SPLL */
	CSCR |= 0x00400000;
	/* Check if SPLL is locked */
	do{
		i++;i--;i++;i--;
		i = SPCTL1 & 0x8000;		
	}while(i == 0);

	/* Configure PERCLK1 to 133M */
	PCDR1 &= ~0x3f;
	PCDR1 |= 1;

	/* Set ClockOut, used to check clock configuration */
	CCSR = 0;
}

void Sdram_init(void)
{
	/*********************************************************************
	 MACRO DEFINITIONS 
	*********************************************************************/
#define SDRAMC_CSD0_PRECHARGE_CMD			0x92120300 // 0x92120200
#define SDRAMC_CSD0_AUTOREFRESH_CMD			0xA2120300 // 0xA2120200
#define SDRAMC_CSD0_SET_MODE_CMD			0xB2120300 // 0xB2120200
#define SDRAMC_CSD0_SET_NORMAL_MODE_CMD		0x8212F339 // 0x8212C300
#define SDRAMC_CSD0_PRECHARGE_ALL          (*(volatile unsigned *)0xC0200000)
#define SDRAMC_CSD0_AUTOREFRESH	           (*(volatile unsigned *)0xC0000000)
#define SDRAMC_CSD0_MODE_PARAM             (*(volatile unsigned *)0xC0119800)

	/* Disable the SDRAM controller first */ 
	SDCTL0	= 0;

	/* Set SDRAM ctrlr to precharge command */
	SDCTL0 = SDRAMC_CSD0_PRECHARGE_CMD;

	/* Issue precharge all Command */
	SDRAMC_CSD0_PRECHARGE_ALL = SDRAMC_CSD0_PRECHARGE_CMD;

	/* Set SDRAM ctrlr to auto refresh command */
	SDCTL0 = SDRAMC_CSD0_AUTOREFRESH_CMD;

	// Issue auto refresh Command & repeat 8 times
	SDRAMC_CSD0_AUTOREFRESH = SDRAMC_CSD0_AUTOREFRESH_CMD;
	SDRAMC_CSD0_AUTOREFRESH = SDRAMC_CSD0_AUTOREFRESH_CMD;
	SDRAMC_CSD0_AUTOREFRESH = SDRAMC_CSD0_AUTOREFRESH_CMD;
	SDRAMC_CSD0_AUTOREFRESH = SDRAMC_CSD0_AUTOREFRESH_CMD;
	SDRAMC_CSD0_AUTOREFRESH = SDRAMC_CSD0_AUTOREFRESH_CMD;
	SDRAMC_CSD0_AUTOREFRESH = SDRAMC_CSD0_AUTOREFRESH_CMD;
	SDRAMC_CSD0_AUTOREFRESH = SDRAMC_CSD0_AUTOREFRESH_CMD;
	SDRAMC_CSD0_AUTOREFRESH = SDRAMC_CSD0_AUTOREFRESH_CMD;

	/* Set SDRAM ctrlr to Set Mode Register command */
	SDCTL0 = SDRAMC_CSD0_SET_MODE_CMD;

	/* Issue Mode Register Command */
	SDRAMC_CSD0_MODE_PARAM = SDRAMC_CSD0_SET_MODE_CMD;

	/* Set SDRAM ctrlr to normal mode */
	SDCTL0 = SDRAMC_CSD0_SET_NORMAL_MODE_CMD;

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -