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

📄 examplec.c

📁 DSP 5402 声音压缩 Demo板测试程序
💻 C
字号:
/***************************************************************************/
/*                                                                         */
/*     test . C                                                       */
/*                                                                         */
/*                                                                         */
/*                                                                         */
/***************************************************************************/
#include "54regs.h"			//54寄存器定义

//#include "mcbsp54.h"
	
#include "defdef.h"			//宏定义
#include "vardef.h"			//变量

/***************************************************************************/
/*                                                                         */
/*     定义函数		                                                       */
/*                                                                         */
/*                                                                         */
/*                                                                         */
/***************************************************************************/

void ini_dsp(void);

unsigned int data_ram_check(void);
unsigned int pro_ram_check(void);
unsigned int flash_check(void);
unsigned int uart_check(void);
void LEDTest();

void delay(unsigned int period);
void ini_fifo();

void FlashErase();

void ByteWrite(int tadd,int page,int data);
void interrupt c_xint0(void);

volatile int* err_state = (volatile int*)0x4ff;
int c[16];
/***************************************************************************/
/*                                                                         */
/*     MAIN   		                                                       */
/*                                                                         */
/*                                                                         */
/*                                                                         */
/***************************************************************************/
main()
{    
	int temp;


	*err_state=0;	

	ini_dsp();
	
/*	
	while (1)
	{
	int c=0x20;
	int j=0;
	UART_LCR=c;
	j=UART_LCR;
	
	}
*/
/*
	while (1)
	{
	ini_fifo();
	
	UART_THR=0;
		delay(20);
	}
*/	
	LEDTest();
	
	temp=3;
	LED=temp;
	delay(2000);
	
	if (data_ram_check())
	{
		*err_state|=0x01;	
	}
	if (pro_ram_check())
	{
		*err_state|=0x02;
	}
	if (uart_check())
	{
		*err_state|=0x04;	
	}
	
	if (flash_check())
	{
		*err_state|=0x08;	
	}
		
	FlashErase();
	LED=0;
	
	while(1)
	{
		*ST1^=0x2000;
		delay(1000);
	}
	

}       





/****************************************************************************/
/*                                                                         */
/*     初始化DSP	                                                       */
/*                                                                         */
/*                                                                         */
/*                                                                         */
/***************************************************************************/
void ini_dsp(void)
{
	//初始化中断
	*PMST=0x0fc0;


	* CLKMD =0x9007;

	//设置 IO等待周期为7,RAM等待周期为1,ROM等待周期为1
	* SWSR=0;
	* SWWSR=SPEED;



	/*启动时钟*/
//	*TCR0=TCR0_data;
	
	/*启动中断*/
//	asm ("	RSBX	INTM	");
	

}




void ini_fifo()
{
	
	UART_FCR=0x03;

	UART_LCR=UART_LCR&0xff7f;	
	
	UART_IER=0x04;
	
	UART_LSR=0x00;
	
	UART_LCR=0x03;
	
	UART_MCR=0x00;

	UART_LCR=UART_LCR|0x0080;
		
	UART_DLL=0x10;
	
	UART_DLM=0x0;

	UART_LCR=UART_LCR&0xff7f;
}


unsigned int uart_check(void)
{
	int i;
//	int err;
	ini_fifo();

		UART_THR=0;
		delay(20);



		UART_THR=1;
		delay(20);
		
		
		UART_THR=2;
		delay(20);
		
		
		UART_THR=3;
		delay(20);
		
		
		UART_THR=4;
		delay(20);
		
		
		UART_THR=5;
		delay(20);
		
		
		UART_THR=6;
		delay(20);
		
		UART_THR=7;
		delay(20);
		
		
		UART_THR=8;
		delay(20);
		
		
		UART_THR=9;
		delay(20);		
		UART_THR=10;
		delay(20);
		
		
		UART_THR=11;
		delay(20);
		
		
		UART_THR=12;
		delay(20);
		
		
		UART_THR=13;
		delay(20);
		
		
		UART_THR=14;
		delay(20);
		
		

		
		UART_THR=15;
		delay(20);		

		

	for (i=0;i<16;i++)
	{
		c[i]=UART_RBR&0x00ff;
		if (i!=c[i])
			return(1);
		delay(20);
	}
	delay(10);
	return(0);
}
unsigned int data_ram_check(void)
{
	volatile int* data_ram_point = (volatile int*)0x500;
	unsigned int j = 0;
	
	for( j=0;j <0xfb00;j++)
	{
		*(data_ram_point+j) = 0x0000;
		delay(1);
		if (*(data_ram_point+j) != 0) 
		return(1);
		*(data_ram_point+j) = 0x5555;
		delay(1);
		if (*(data_ram_point+j) != 0x5555) 
		return(1);
		*(data_ram_point+j) = 0x0aaaa;
		delay(1);
		if ((*(data_ram_point+j)) != 0x0aaaa) 
		return(1);
		*(data_ram_point+j) = 0x0ffff;
		delay(1);
		if ((*(data_ram_point+j)) != 0x0ffff) 
		return(1);
		
	}
	return(0);		


} 


unsigned int pro_ram_check(void)
{
	unsigned int Datetmp;
   	int start;
	int data;
	int i=0;

    
	for( start=0x1000;start <0xf000;start++)
	{
	Datetmp=0;
	DtoP(start,&Datetmp,0);
	PtoD(start,&data,0);
		if (data != 0) 
		return(1);
	i++;
	Datetmp=0x5555;
	DtoP(start,&Datetmp,0);
	PtoD(start,&data,0);
		if (data != 0x5555) 
		return(1);
	
	Datetmp=0xaaaa;
	DtoP(start,&Datetmp,0);
	PtoD(start,&data,0);
		if (data != 0x0aaaa) 
		return(1);
	
	Datetmp=0xFFFF;
	DtoP(start,&Datetmp,0);
	PtoD(start,&data,0);
		if (data!= 0x0ffff) 
		return(1);
		
	}
	return(0);		


} 

unsigned int flash_check(void)
{
	int start;
	int data;
	FlashErase();

	for( start=0x1000;start <0xf000;start++)
	{
		ByteWrite(start,2,0x5555);
		delay(5);
		PtoD(start,&data,2);
		if (data != 0x5555) 
			return(1);
	}
	FlashErase();
	for( start=0x1000;start <0xf000;start++)
	{
		ByteWrite(start,2,0xaaaa);
		delay(5);
		PtoD(start,&data,2);
		if (data != 0xaaaa) 
			return(1);
	}	
	return(0);		


} 

void FlashErase()
{
    unsigned int Datetmp;
    Datetmp=0xaaaa;
	DtoP(0x5555,&Datetmp,4);
    Datetmp=0x5555;
	DtoP(0x2aaa,&Datetmp,4);
    Datetmp=0x8080;
	DtoP(0x5555,&Datetmp,4);
    Datetmp=0xaaaa;
	DtoP(0x5555,&Datetmp,4);
    Datetmp=0x5555;
	DtoP(0x2aaa,&Datetmp,4);
    Datetmp=0x1010;
	DtoP(0x5555,&Datetmp,4);
	
	delay(500);
}


void ByteWrite(int tadd,int page,int data)
{
    unsigned int Datetmp;
    Datetmp=0xaaaa;
	DtoP(0x5555,&Datetmp,page);
    Datetmp=0x5555;
	DtoP(0x2aaa,&Datetmp,page);
    Datetmp=0xa0a0;
	DtoP(0x5555,&Datetmp,page);
    Datetmp=data;
	DtoP(tadd,&Datetmp,page);
}

void LEDTest(void)
{

	int count=5;
	while(count)
	{   
		*ST1^=0x2000;
		delay(500);
		LED=0;
		delay(500);
		LED=1;
		delay(500);
		LED=2;
		delay(500);
		LED=3;
		delay(500);
		
		count--;
	}

}

void delay(unsigned int period)
{
    int periodi, periodj;
    
    for(periodi=0; periodi<period; periodi++)
    {
        for(periodj=0; periodj<period>>1; periodj++);
    }
} 

void interrupt c_xint0(void)
{

}

⌨️ 快捷键说明

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