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

📄 icetek-c6713-a.h

📁 tms320c6713AD与DA的程序,能够实现AD与DA的连接
💻 H
字号:
#include "scancode.h"
//#include <csl.h>
//#include <csl_pll.h>
//#include <csl6713.lib>

// emif  --------------------------------------------------------
#define EMIF_GCTL       0x01800000
#define EMIF_CE1        0x01800004
#define EMIF_CE0        0x01800008
#define EMIF_CE2        0x01800010
#define EMIF_CE3        0x01800014
#define EMIF_SDRAMCTL   0x01800018
#define EMIF_SDRAMTIM   0x0180001C
#define EMIF_SDRAMEXT   0x01800020
#define EMIF_CCFG       0x01840000;
// interrupt  --------------------------------------------------
#define IMH (*(unsigned int *)0x19c0000)
#define IML (*(unsigned int *)0x19c0004)
//pll -----------------------------------------------------------
#define PLLCSR (*(unsigned int *)0x01B7C100)
#define PLLM (*(unsigned int *)0x01B7C110)
#define PLLDIV0 (*(unsigned int *)0x01B7C114)
#define PLLDIV1 (*(unsigned int *)0x01B7C118)
#define PLLDIV2 (*(unsigned int *)0x01B7C11C)
#define PLLDIV3 (*(unsigned int *)0x01B7C120)
#define OSCDIV1 (*(unsigned int *)0x01B7C124)
// timer  -------------------------------------------------------
#define TIMER1CTL (*(unsigned int *)0x01980000)
#define TIMER1PRD (*(unsigned int *)0x01980004)
// McBSP0  ------------------------------------------------------
#define SPCR0 (*(unsigned int *)0x018c0008)
#define PCR0 (*(unsigned int *)0x018c0024)
#define SPCR1 (*(unsigned int *)0x01900008)
#define PCR1 (*(unsigned int *)0x01900024)
// ICETEK-C6713-A -----------------------------------------------
#define LBDS (*(unsigned short int *)0x90100000)
// ICETEK-CTR  --------------------------------------------------
#define CTRGR (*(unsigned short int *)0x0901f0000)
#define CTRKEY (*(unsigned short int *)0x0901f0002)
#define CTRCLKEY (*(unsigned short int *)0x0901f0004)
#define CTRLA (*(unsigned short int *)0x0901f000a)
#define CTRLR (*(unsigned short int *)0x0901f000e)
#define CTRLCDCMDR (*(unsigned short int *)0x0901f0002)
#define CTRLCDCR (*(unsigned short int *)0x0901f0004)
#define CTRLCDLCR (*(unsigned short int *)0x0901f0006)
#define CTRLCDRCR (*(unsigned short int *)0x0901f0008)
// Special values -----------------------------------------------
#define LCDCMDTURNON 0x3f
#define LCDCMDTURNOFF 0x3e
#define LCDCMDSTARTLINE 0xc0
#define LCDCMDPAGE 0xb8
#define LCDCMDVERADDRESS 0x40
// C6713DSP Registers  ------------------------------------------
cregister unsigned int IER,IFR,CSR,ICR,ISTP;

// Variables
unsigned char ledbuf[8],ledx[8];
unsigned char ledkey[10][8]=
{
	{0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00},	//0
	{0x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00},	//1
	{0x00,0x00,0x84,0xC2,0xA2,0x92,0x8C,0x00},	//2
	{0x00,0x00,0x44,0x92,0x92,0x92,0x6C,0x00},
	{0x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00},
	{0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00},
	{0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00},
	{0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00},
	{0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00},
	{0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00}
};
#define nMusicNumber 52
unsigned int music[nMusicNumber][2]=
{
	{101,1920},{121,1440},{114,480},{101,1920},{151,1920},
	{151,480},{135,480},{121,480},{101,480},{114,960},{121,960},{135,3840},
	{121,480},{114,480},{101,480},{91,480},{101,960},{101,960},
	{76,1920},{101,1920},{114,960},{121,960},{135,1440},{151,480},{151,1920},{0,1920},
	{101,1920},{121,1440},{114,480},{101,1920},{151,1920},
	{151,480},{135,480},{121,480},{101,480},{114,960},{121,960},{135,3840},
	{121,480},{114,480},{101,480},{91,480},{101,960},{101,960},
	{76,1920},{101,1920},{114,960},{121,960},{135,1440},{151,480},{151,1920},{0,1920}
};
unsigned int pwm[8]={ 0x86,0x87,0x83,0x8b,0x89,0x8d,0x8c,0x8e };
unsigned char dbClearKey;

// Functions
void PLL_Init(void);				// 初始化时钟
void INT_DisableGlobal(void);		// 关全局中断
void INT_EnableGlobal(void);		// 开全局中断
void InitInterrupt(void);			// 初始化中断
void init_emif( void );				// 初始化emif接口寄存器
void InitCTR();						// 初始化ICETEK-CTR
void CloseCTR();					// 关闭ICETEK-CTR上各设备
void Delay(unsigned int nTime);		// 延时子程序
void Delay1(unsigned int nTime);	// 延时子程序(带LED显示刷新)
unsigned char GetKey();				// 读取键盘输入
void RefreshLEDArray();				// 刷新发光二极管阵列显示
void SetLEDArray(int nNumber);		// 修改发光二极管阵列显示内容
char ConvertScanToChar(unsigned char cScanCode);	// 将键盘扫描码转换成字符
void LCDCMD(unsigned char dbCommand);	// 向液晶显示器发送命令
void LCDWriteLeft(unsigned char dbData);	// 写液晶显示器左半屏
void LCDCLS();							// 清除液晶显示器显示
void TurnOnLCD();						// 打开液晶显示器

/*void PLL_Init(void)
{
	*(int *)PLLM		 = 0x00000004;  //PLL4倍频
	*(int *)PLLCSR       = 0x00000025;  //PLL通路状态
} */
/*void PLL_Init(void)
{   int i;
    // Turn the PLL off
    *(int *)PLLCSR &= ~0x01; //pll enable = 0; 
    for(i=0; i<10 ;i++);    //等待pll进入旁路状态

    // reset PLL 
    *(int *)PLLCSR &= 0x08; //pll rst = 1; 

    *(int *)PLLM &= 0xc04;//把旁路下倍频数为4倍
    for(i=0; i<10 ;i++);
    *(int *)PLLCSR &= 0x0; //pll rst = 0,退出复位;  
    for(i=0; i<15000 ;i++);  //wait for lock
    // Enable the PLL and 
    *(int *)PLLCSR |= 0x01;//pll enable = 1;
    for(i=0;i<10;i++);//小延时

}*/
/*void PLL_Init(void)
{
 //Initialize PLL Registers         
		// Put PLL in bypass 
	PLL_bypass();
	PLLDelay(20);
	
		//Reset PLL
	PLL_reset();
	PLLDelay(20);
	
		//Set main multiplier/divisor
 	PLL_RSET(PLLM, 8);                         // 50MHz  x 8 = 400MHz
    PLL_RSET(PLLDIV0, PLL_PLLDIV0_RMK(1, 0));  // 400MHz / 1 = 400MHz
    PLL_RSET(OSCDIV1, PLL_OSCDIV1_RMK(1, 4));  // 25MHz  / 5 = 5Mhz

    // Set DSP clock 
    PLL_RSET(PLLDIV1, PLL_PLLDIV1_RMK(1, 1));  // 400MHz / 2 = 200MHz
    PLLDelay(20);
    
    // Set peripheral clock
    PLL_RSET(PLLDIV2, PLL_PLLDIV2_RMK(1, 3));  // 400MHz / 4 = 100MHz
    PLLDelay(20);
    
    //Set EMIF clock
    PLL_RSET(PLLDIV3, PLL_PLLDIV3_RMK(1, 4));  // 400MHz / 5 = 80MHz
    PLLDelay(20);
    
    	//Take PLL out of reset
    PLL_deassert();
    PLLDelay(1500);
    
    	// Enalbe PLL 
    PLL_enable();
    PLLDelay(20);
}*/

void INT_EnableGlobal(void)
{
	CSR|=0x1;	// 开中断 GIE=1
}

void INT_DisableGlobal(void)
{
	CSR&=0xfffffffe;	// 关中断 GIE=0
}

// Enable NMI (non-maskable interrupt); must be enabled 
// or no other interrupts can be recognized by 'C6000 CPU */
void enableNMI(void)
{
  IER = _set(IER, 1, 1);
}

//Enable a specific interrupt; 
//  (INTnumber = {4,5,6,...,15})                      
void enableSpecificINT(int INTnumber)
{
  IER = _set(IER, INTnumber, INTnumber); 
}

void init_emif( void )
{
	*(int *)EMIF_GCTL     = 0x00000078;
	*(int *)EMIF_CE0      = 0xffffbf93;  /* CE0 SDRAM 16-bit              */
	*(int *)EMIF_CE1      = 0xffffff13;  /* CE1 Flash 16-bit              */
	*(int *)EMIF_CE2      = 0xffffff23;  /* CE2 Daughtercard 32-bit async */
	*(int *)EMIF_CE3      = 0xffffff23;  /* CE3 Daughtercard 32-bit async */
	*(int *)EMIF_SDRAMCTL = 0x53115000;  /* SDRAM control                 */
	*(int *)EMIF_SDRAMTIM = 0x00000578;  /* SDRAM timing (refresh)        */
	*(int *)EMIF_SDRAMEXT = 0x000a8529;  /* SDRAM Extension register      */
}

void CloseCTR()
{
    CTRGR=0; 				 
    CTRLR=0; CTRLR=0x40;
    CTRLR=0x0c0;
	LCDCMD(LCDCMDTURNOFF);	
	dbClearKey=CTRCLKEY;
	LBDS=0;
}

void LCDCMD(unsigned char dbCommand)
{
	CTRLCDCMDR=dbCommand;		
	CTRLCDCR=0;
}

unsigned char GetKey()
{
	unsigned char dbReturn;
	
	dbReturn=CTRKEY;
	dbClearKey=CTRCLKEY;
	return dbReturn;
}

char ConvertScanToChar(unsigned char cScanCode)
{
	char cReturn;
	
	cReturn=0;
	switch ( cScanCode )
	{
		case SCANCODE_0: cReturn='0'; break;
		case SCANCODE_1: cReturn='1'; break;
		case SCANCODE_2: cReturn='2'; break;
		case SCANCODE_3: cReturn='3'; break;
		case SCANCODE_4: cReturn='4'; break;
		case SCANCODE_5: cReturn='5'; break;
		case SCANCODE_6: cReturn='6'; break;
		case SCANCODE_7: cReturn='7'; break;
		case SCANCODE_8: cReturn='8'; break;
		case SCANCODE_9: cReturn='9'; break;
		case SCANCODE_Plus: cReturn='+'; break;
		case SCANCODE_Minus: cReturn='-'; break;
	}
	return cReturn;
}

void InitCTR()
{
    CTRGR=0; CTRGR=0x80; CTRGR=0;
    CTRLR=0; CTRLR=0x40;
    CTRLR=0x0c0;
	LCDCMD(LCDCMDTURNOFF);	
	dbClearKey=CTRCLKEY;
	LBDS=0;
}

void Delay(unsigned int nDelay)
{
	int ii,jj,kk=0;
	for ( ii=0;ii<nDelay;ii++ )
	{
		for ( jj=0;jj<1024;jj++ )
		{
			kk++;
		}
	}
}

void Delay1(unsigned int nDelay)
{
	int ii,jj,kk=0;
	for ( ii=0;ii<nDelay;ii++ )
	{
		for ( jj=0;jj<64;jj++ )
		{
			RefreshLEDArray();
			kk++;
		}
	}
}

void RefreshLEDArray()
{
	int i;
	for ( i=0;i<8;i++ )
	{
		CTRGR=ledx[i];
		CTRLA=ledbuf[i];
	}
}

void SetLEDArray(int nNumber)
{
	int i;
	for ( i=0;i<8;i++ )
		ledbuf[i]=~ledkey[nNumber][7-i];
}

void LCDWriteLeft(unsigned char dbData)
{
	CTRLCDLCR=dbData;
	CTRLCDCR=0;
}

void LCDWriteRight(unsigned char dbData)
{
	CTRLCDRCR=dbData;
	CTRLCDCR=0;
}

void TurnOnLCD()
{
	LCDCMD(LCDCMDTURNON);
}

void LCDCLS()
{
	int i,j;
	LCDCMD(LCDCMDSTARTLINE);
	for ( i=0;i<8;i++ )
	{
		LCDCMD(LCDCMDPAGE+i);
		LCDCMD(LCDCMDVERADDRESS);
		for ( j=0;j<64;j++ )
			LCDWriteLeft(0);
		LCDCMD(LCDCMDPAGE+i);
		LCDCMD(LCDCMDVERADDRESS);
		for ( j=0;j<64;j++ )
			LCDWriteRight(0);
	}
}

⌨️ 快捷键说明

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