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

📄 sysinit.c

📁 用来测试mcf5249的嵌入式测试程序
💻 C
📖 第 1 页 / 共 2 页
字号:
{
	imm->dramc.DCR = 0x8022;	    	// DCR
	                                	// An auto-refresh period for 4096 rows
	                                	// to receive 64 mS of refresh every
                                    	// 15.625 us for each row
                                    	// (312 bus clocks at 19.992 MHz)
                                    	// RC = (312/16)-1 = 18.56 = 0x12
	imm->dramc.DACR0 = 0x40002224;		// DACR0
	//imm->dramc.DMR0 = 0x00fc0075;		// DMR0 for 16M
	imm->dramc.DMR0 = 0x007c0075;		// DMR0 for 8M
	imm->dramc.DACR0 = 0x4000222c;		// DACR0
	*((volatile uint32 *)(0x40000000)) = 0xA5A59696;
	imm->dramc.DACR0 = 0x4000a224;		// DACR0


	delay100ms();

	imm->dramc.DACR0 = 0x4000a264;		// DACR0
	*((volatile uint32 *)(0x40000800)) = 0xA5A59696;
}

/****************************************************************/
uint16 mcf5249_sdram_test(void)
{
	uint32 i,b;
	uint16 b0,b1;
	
	DRAMBuffer = (uint16 *)(SDRAM_ADDRESS);
	for(i=0; i<0x400000; i++)           // 0x800000(8Mx16Bits)
	{
		DRAMBuffer[i] = 0;
	}
	for(i=0; i<0x200000; i++)
	{
		DRAMBuffer[2*i] = i>>16;
		DRAMBuffer[2*i+1] = i;
	}
	for(i=0; i<0x200000; i++)
	{
		b1 = DRAMBuffer[2*i];
		b0 = DRAMBuffer[2*i+1];
		b = b1<<16 | b0;
		if(b!=i)
		{
			return 1;
		}
	}
	
	return 0;
}

/****************************************************************/
uint16 mcf5249_flash_test(void)
{
	uint32 i;
	
	DRAMBuffer = (uint16 *)(FLASH_ADDRESS);
	for(i=0; i<0x100000; i++)           // 0x100000(1Mx16Bits)
	{
		if(DRAMBuffer[i]!=0x0000) return 1;
	}
	
	return 0;
}

/****************************************************************/
void mcf5249_gpio_init(void)
{
    imm2->gpio.GOR &= ~MCF5249_GPIO25;  //DM9000 reset
    imm2->gpio.GFR |= MCF5249_GPIO25;
    imm2->gpio.GER |= MCF5249_GPIO25;

    imm2->gpio.G1OR &= ~MCF5249_GPIO38; //SMC_ce
    imm2->gpio.G1FR |= MCF5249_GPIO38;
    imm2->gpio.G1ER |= MCF5249_GPIO38;

    imm2->gpio.GOR |= MCF5249_GPIO19;   //IDE_reset
    imm2->gpio.GFR |= MCF5249_GPIO19;
    imm2->gpio.GER |= MCF5249_GPIO19;

    imm2->gpio.GOR |= MCF5249_GPIO18;   //CFC_reset
    imm2->gpio.GFR |= MCF5249_GPIO18;
    imm2->gpio.GER |= MCF5249_GPIO18;

    imm2->gpio.G1OR |= MCF5249_GPIO33;  //D12_reset
    imm2->gpio.G1FR |= MCF5249_GPIO33;
    imm2->gpio.G1ER |= MCF5249_GPIO33;

    imm2->gpio.GOR &= ~MCF5249_GPIO9;   //D12_suspd
    imm2->gpio.GFR |= MCF5249_GPIO9;
    imm2->gpio.GER |= MCF5249_GPIO9;

    imm2->gpio.GOR |= MCF5249_GPIO5;    //INT5-
    imm2->gpio.GFR |= MCF5249_GPIO5;
    imm2->gpio.GER &= ~MCF5249_GPIO5;
    imm2->gpio.GIEN = 0;                //Disable all PIN interrupt
    imm2->gpio.GIS = 0x0000FFFF;

    imm2->gpio.G1OR |= MCF5249_GPIO56;  //LCD_Reset
    imm2->gpio.G1FR |= MCF5249_GPIO56;
    imm2->gpio.G1ER |= MCF5249_GPIO56;

    imm2->gpio.G1OR &= ~MCF5249_GPIO36; //LCD_RS
    imm2->gpio.G1FR |= MCF5249_GPIO36;
    imm2->gpio.G1ER |= MCF5249_GPIO36;

    imm2->gpio.GFR |= MCF5249_GPIO3;	//SCL2
    imm2->gpio.GOR |= MCF5249_GPIO3;
    imm2->gpio.GER |= MCF5249_GPIO3;

    imm2->gpio.G1FR |= MCF5249_GPIO55;	//SDA2
    imm2->gpio.G1OR |= MCF5249_GPIO55;
    imm2->gpio.G1ER |= MCF5249_GPIO55;

    imm2->gpio.GOR &= ~MCF5249_GPIO15;  //LED1
    imm2->gpio.GFR |= MCF5249_GPIO15;
    imm2->gpio.GER |= MCF5249_GPIO15;

    imm2->gpio.GOR &= ~MCF5249_GPIO23;  //LED2
    imm2->gpio.GFR |= MCF5249_GPIO23;
    imm2->gpio.GER |= MCF5249_GPIO23;

    imm2->gpio.G1OR &= ~MCF5249_GPIO50; //LED3
    imm2->gpio.G1FR |= MCF5249_GPIO50;
    imm2->gpio.G1ER |= MCF5249_GPIO50;

    imm2->gpio.G1OR &= ~MCF5249_GPIO46; //LED4
    imm2->gpio.G1FR |= MCF5249_GPIO46;
    imm2->gpio.G1ER |= MCF5249_GPIO46;

    imm2->gpio.G1OR &= ~MCF5249_GPIO55; //LED5
    imm2->gpio.G1FR |= MCF5249_GPIO55;
    imm2->gpio.G1ER |= MCF5249_GPIO55;

    imm2->gpio.GOR &= ~MCF5249_GPIO3;   //LED6
    imm2->gpio.GFR |= MCF5249_GPIO3;
    imm2->gpio.GER |= MCF5249_GPIO3;
}

/****************************************************************/
void mcf5249_ide_init(void)
{
    imm2->ide.IDECFG1 = ( 0
    		| 0x00005400
    		| MCF5249_IDE_CFG1_BUFEN1CS2 );
    imm2->ide.IDECFG2 = 0x000C0400;
}

/****************************************************************/
void mcf5249_iis_init(void)
{
    imm2->iis.IIS2CONFIG = 0x0800;    /* Reset IIS2 to 1 sample remaining */
    imm2->iis.IIS2CONFIG = 0xc310;    /* Route PDOR3 to IIS2, 
                                       IIS2 clock = Audio clock/2 = 2.8224MHz,
                                       16 bits per sample, Philips mode,
                                       32 clocks per word */
    imm2->iis.AUDIOGLOB = 0x0000;
    imm2->iis.AUDIOINTERRUPTEN = 0;   //MCF5249_IIS_INT_IIS2TXEMPTY;
    imm2->iis.AUDIOINTERRUPTSTA = 0;
    asm(nop);
    imm2->iis.PDOR3 = 0x00000000;
}

/****************************************************************/
void mcf5249_qspi_init(void)
{
	imm->qspi.QMR = 0xe308;             //MSTR=1, DOHIE=1, BITS=1000(8bits)
	                                    //BAUD=8, 39.984MHz/2/8=2.499MHz
}

/********************************************************************/
/********************************************************************/
/********************************************************************/
/********************************************************************/
/********************************************************************/
void SET_SMCMP3player(void)
{
    imm2->gpio.GOR &= ~MCF5249_GPIO9;   //USB_Connet output '0'
    imm2->gpio.GER |= MCF5249_GPIO9;

    imm2->gpio.G1OR |= MCF5249_GPIO35;  //USB_CS output '1'

    imm2->gpio.GOR &= ~MCF5249_GPIO5;   //IDE_CS output '0'

    imm2->gpio.G1OR &= ~MCF5249_GPIO33; //Reset IDE
    delay10ms();
    imm2->gpio.G1OR |= MCF5249_GPIO33;

    delay10ms();
}

/********************************************************************/
uint16 SET_USBmass(void)
{
    imm2->gpio.GOR |= MCF5249_GPIO5;    //IDE_CS output '1'

    imm2->gpio.G1OR &= ~MCF5249_GPIO35; //USB_CS output '0'

    imm2->gpio.GER &= ~MCF5249_GPIO9;   //Check USB_Connet
    delay10ms();
    if((imm2->gpio.GRR)&MCF5249_GPIO9)
    {
    	return 1;
    }
    else
    {
    	imm2->gpio.GOR &= ~MCF5249_GPIO9;   //USB_Connet output '0'
    	imm2->gpio.GER |= MCF5249_GPIO9;

    	imm2->gpio.G1OR |= MCF5249_GPIO35;  //USB_CS output '1'

    	imm2->gpio.GOR &= ~MCF5249_GPIO5;   //IDE_CS output '0'
    	return 0;
    }
}

/********************************************************************/
void plldelay(void)
{
	uint32 i;
	
	for(i=0; i<0x00001000; i++)
	{
		asm(nop);
	}
}

/********************************************************************/
void delayIIC(void)
{
	uint32 i;
	
	for(i=0; i<0x00000020; i++)
	{
		asm(nop);
	}
}

/********************************************************************/
void delay1ms(void)
{
	uint32 i;
	
	for(i=0; i<0x00000228; i++)
	{
		asm(nop);
	}
}

/********************************************************************/
void delay10ms(void)
{
	uint32 i;
	
	for(i=0; i<0x00005700; i++)
	{
		asm(nop);
	}
}

/********************************************************************/
void delay100ms(void)
{
	uint32 i;
	
	for(i=0; i<0x00038000; i++)
	{
		asm(nop);
	}
}

⌨️ 快捷键说明

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