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

📄 fpga.c

📁 大名鼎鼎的mpc8260的bsp源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
WriteByte(FR_STALH,((unsigned short )(Tone[tone_type].STA))>>8);/*write second tone address high 15~8 bit*/
WriteByte(FR_STALL,(unsigned char)(Tone[tone_type].STA));/*write second tone address  high 7~0 bit*/
WriteByte(FR_STTLH,((unsigned short )(Tone[tone_type].STC))>>8);/*write second tone timer1 high 15~8 bit*/
WriteByte(FR_STTLL,(unsigned char)(Tone[tone_type].STC));/*write second tone timer2 high 7~0 bit*/
#if 1
WriteByte(FR_PTC,PlayFlag);/*停止放音源write start /stop bit 1: start  0:stop*/
#else
WriteByte(FR_PTC,0x1);/*停止放音源write start /stop bit 1: start  0:stop*/
#endif

WriteByte(FR_U1B1,0xff);/*disconnect data  to B1 of u1 channal */
WriteByte(FR_U1B1,0x07);/*play second dial tone */

}
if((dev == 1) ||(dev==3))
{
WriteByte(FR_FTALH2,((unsigned short )(Tone2[tone_type].FTA))>>8);/*write first tone address high 15~8 bit*/
WriteByte(FR_FTALL2,(unsigned char)(Tone2[tone_type].FTA));/*write first tone address high 7~0 bit*/
WriteByte(FR_FTTLH2,((unsigned short )(Tone2[tone_type].FTC))>>8);/*write first tone timer1 high 15~8 bit*/
WriteByte(FR_FTTLL2,(unsigned char)(Tone2[tone_type].FTC));/*write first tone timer1 high 7~0 bit*/

WriteByte(FR_STALH2,((unsigned short )(Tone2[tone_type].STA))>>8);/*write second tone address high 15~8 bit*/
WriteByte(FR_STALL2,(unsigned char)(Tone2[tone_type].STA));/*write second tone address  high 7~0 bit*/
WriteByte(FR_STTLH2,((unsigned short )(Tone2[tone_type].STC))>>8);/*write second tone timer1 high 15~8 bit*/
WriteByte(FR_STTLL2,(unsigned char)(Tone2[tone_type].STC));/*write second tone timer2 high 7~0 bit*/
#if 1
WriteByte(FR_PTC2,PlayFlag);/*停止放音源write start /stop bit 1: start  0:stop*/
#else
WriteByte(FR_PTC2,0x1);/*停止放音源write start /stop bit 1: start  0:stop*/
#endif

WriteByte(FR_U1B2,0xff);/*disconnect data  to B1 of u1 channal */
WriteByte(FR_U1B2,0x08);/*play second dial tone */
}
}
#else
void HW_PlaySecondDialTone(unsigned short tone_type,unsigned char PlayFlag,unsigned char dev)
{

if((dev == 0) ||(dev==2))
{
WriteByte(FR_FTALH,((unsigned short )(Tone[tone_type].FTA))>>8);/*write first tone address high 15~8 bit*/
WriteByte(FR_FTALL,(unsigned char)(Tone[tone_type].FTA));/*write first tone address high 7~0 bit*/
WriteByte(FR_FTTLH,((unsigned short )(Tone[tone_type].FTC))>>8);/*write first tone timer1 high 15~8 bit*/
WriteByte(FR_FTTLL,(unsigned char)(Tone[tone_type].FTC));/*write first tone timer1 high 7~0 bit*/

WriteByte(FR_STALH,((unsigned short )(Tone[tone_type].STA))>>8);/*write second tone address high 15~8 bit*/
WriteByte(FR_STALL,(unsigned char)(Tone[tone_type].STA));/*write second tone address  high 7~0 bit*/
WriteByte(FR_STTLH,((unsigned short )(Tone[tone_type].STC))>>8);/*write second tone timer1 high 15~8 bit*/
WriteByte(FR_STTLL,(unsigned char)(Tone[tone_type].STC));/*write second tone timer2 high 7~0 bit*/
#if 1
WriteByte(FR_PTC,PlayFlag);/*停止放音源write start /stop bit 1: start  0:stop*/
#else
WriteByte(FR_PTC,0x1);/*停止放音源write start /stop bit 1: start  0:stop*/
#endif

WriteByte(FR_U1B1,0xff);/*disconnect data  to B1 of u1 channal */
WriteByte(FR_U1B1,0x07);/*play second dial tone */

}
if((dev == 1) ||(dev==3))
{
WriteByte(FR_FTALH2,((unsigned short )(Tone2[tone_type].FTA))>>8);/*write first tone address high 15~8 bit*/
WriteByte(FR_FTALL2,(unsigned char)(Tone2[tone_type].FTA));/*write first tone address high 7~0 bit*/
WriteByte(FR_FTTLH2,((unsigned short )(Tone2[tone_type].FTC))>>8);/*write first tone timer1 high 15~8 bit*/
WriteByte(FR_FTTLL2,(unsigned char)(Tone2[tone_type].FTC));/*write first tone timer1 high 7~0 bit*/

WriteByte(FR_STALH2,((unsigned short )(Tone2[tone_type].STA))>>8);/*write second tone address high 15~8 bit*/
WriteByte(FR_STALL2,(unsigned char)(Tone2[tone_type].STA));/*write second tone address  high 7~0 bit*/
WriteByte(FR_STTLH2,((unsigned short )(Tone2[tone_type].STC))>>8);/*write second tone timer1 high 15~8 bit*/
WriteByte(FR_STTLL2,(unsigned char)(Tone2[tone_type].STC));/*write second tone timer2 high 7~0 bit*/
#if 1
WriteByte(FR_PTC2,PlayFlag);/*停止放音源write start /stop bit 1: start  0:stop*/
#else
WriteByte(FR_PTC2,0x1);/*停止放音源write start /stop bit 1: start  0:stop*/
#endif

WriteByte(FR_U1B2,0xff);/*disconnect data  to B1 of u1 channal */
WriteByte(FR_U1B2,0x08);/*play second dial tone */
}
}
#endif


/*************************************************************
 *The routine perform data trasmit between U interface and codec 
 *Input:U_channel,dev
 *Output:void
    
 dev : 0  Left handset
	   1: Right handset
	   2: Left Speaker
	   3: Right Spraker
 *

 ***************************************************************/

#if 0
void HW_Connect(unsigned char u ,unsigned char dev)
{
	u=0;
switch(dev)
	{
	case 0:/*left handset*/
		WriteByte(FR_U1B1,0x04);
		WriteByte(FR_LEFT_HANDSET_REG,0x04);
		break;
	case 1:/*right handset*/
		WriteByte(FR_U1B2,0x05);
		WriteByte(FR_RIGHT_HANDSET_REG,0x05);
		break;
	case 2:/* Left Speaker*/
		WriteByte(FR_U1B1,0x06);
		WriteByte(FR_MICRO_SPEAKER_REG,0x04);
		break;

	case 3:/*Right Spraker*/
		WriteByte(FR_U1B2,0x06);
		WriteByte(FR_MICRO_SPEAKER_REG,0x05);
		break;
	default:/*connet left handset and right handset */
		WriteByte(FR_U1B1,0x04);
		WriteByte(FR_LEFT_HANDSET_REG,0x04);
		WriteByte(FR_U1B2,0x05);
		WriteByte(FR_RIGHT_HANDSET_REG,0x05);
	}
}
#else
void HW_Connect(unsigned char dev)
{
switch(dev)
	{
	case 0:/*left handset*/
		WriteByte(FR_U1B1,0x04);
		WriteByte(FR_LEFT_HANDSET_REG,0x04);
		break;
	case 1:/*right handset*/
		WriteByte(FR_U1B2,0x05);
		WriteByte(FR_RIGHT_HANDSET_REG,0x05);
		break;
	case 2:/* Left Speaker*/
		WriteByte(FR_U1B1,0x06);
		WriteByte(FR_MICRO_SPEAKER_REG,0x04);
		break;

	case 3:/*Right Spraker*/
		WriteByte(FR_U1B2,0x06);
		WriteByte(FR_MICRO_SPEAKER_REG,0x05);
		break;
	default:/*connet left handset and right handset */
		WriteByte(FR_U1B1,0x04);
		WriteByte(FR_LEFT_HANDSET_REG,0x04);
		WriteByte(FR_U1B2,0x05);
		WriteByte(FR_RIGHT_HANDSET_REG,0x05);
	}
}

#endif

/*
 *The routine disconnect  dataflow  
 *Input:dev
 *Output:void
 *
 *ref:
 dev : 0  Left handset
	   1: Right handset
	   2: Left Speaker
	   3: Right Spraker
*/
void HW_Disconnect(unsigned char dev)
{
switch(dev)
	{
	case 0:/*disconnect left handset*/
		WriteByte(FR_U1B1,0xff);
		WriteByte(FR_LEFT_HANDSET_REG,0xff);
		break;
	case 1:/* disconnect right handset*/
		WriteByte(FR_U1B2,0xff);
		WriteByte(FR_RIGHT_HANDSET_REG,0xff);
		break;
	case 2:/*disconnect Left Speaker*/
		WriteByte(FR_U1B1,0xff);
		WriteByte(FR_MICRO_SPEAKER_REG,0xff);
		break;

	case 3:/*disconnect Right Spraker*/
		WriteByte(FR_U1B2,0xff);
		WriteByte(FR_MICRO_SPEAKER_REG,0xff);
		break;
	default:/*disconnect all --play silent */
		WriteByte(FR_U1B1,0x0ff);
		WriteByte(FR_LEFT_HANDSET_REG,0x0ff);
		WriteByte(FR_U1B2,0x0ff);
		WriteByte(FR_RIGHT_HANDSET_REG,0x0ff);
		WriteByte(FR_MICRO_SPEAKER_REG,0xff);
	}

}

/* the function perform recorder
input :unsigned char dev 0~3 。The line is all 4,but we can record 1  selected line.
	听					说
0 :left handset
1 :right handset
2 :left speaker
3 :right speaker
*/
void HW_Record_Begin(unsigned char dev)
{
	switch(dev)
		{
		case 0:/*record left handset*/
			WriteByte(FR_RECORD_REG,0x01);
			break;
		case 1:/*record right handset*/
			WriteByte(FR_RECORD_REG,0x02);
			break;
		case 2:/*record left speaker*/
			WriteByte(FR_RECORD_REG,0x03);
			break;
		case 3:/*record right speaker*/
			WriteByte(FR_RECORD_REG,0x04);
			break;
		default:/*nothing record  */
			WriteByte(FR_RECORD_REG,0xff);
			
		}
}

void HW_Record_Stop(void)
{
WriteByte(FR_RECORD_REG,0xff);
}


/*************************************************************
 *The routine Test  FPGA randomly
 *Input:val
 *Output:BOOL  1:success  0:fail
 *
 *
 ***************************************************************/

int HW_Test_FPGA(unsigned char val)
{
	WriteByte(FR_Test,val);
	if(ReadByte(FR_Test) == val)
		return 1;
	else
		return 0;
}

void HW_LCDPower_Control(unsigned char val)
{
	return;
}


/*
val : 0 关闭录音设备
	1 启动录音设备
*/
void HW_Record_Control(unsigned char val)
{
    
	if(val == 0)/*turn off  recorder*/
		WriteByte(FR_RECORD_CONTROL,0x88);
	else if(val == 1)/*turn on recorder*/
		WriteByte(FR_RECORD_CONTROL,0xff);
	else/*turn off  recorder*/
	  	WriteByte(FR_RECORD_CONTROL,0x88);

}

#if 1
void playdial(unsigned char  postion,unsigned char channel_sel)
{

HW_Play_Tone(postion,1,1,channel_sel,0);
}


void playbusy(unsigned char  postion,unsigned char channel_sel)
{

HW_Play_Tone(postion,2,1,channel_sel,0);
}

void stop(unsigned char  postion,unsigned char channel_sel)
{
HW_Play_Tone(postion,1,0,channel_sel,0);
}
#endif

⌨️ 快捷键说明

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