📄 fpga.c
字号:
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 + -