PT2313中文资料及其程序电路图与pdf(音效处理芯片)中文资料及其程序电路图与pdf(音效处理芯片)下面是PT2313的应用电路图与引脚图:pt2313是一款npc110p 芯片,这里我.芯片的功能比npc110p 芯片差好多,所以驱动也很pt2316的pdf资料下载:特点:1、支持3个音源通道输入切换(可以做音频混合),四组音(前、后、左、右)2、支持调节高、低音音效、音量、前后左右增益与均衡控I2C通信协议,直接按照官方给定的格式通过写入芯片即可。
芯片I2C地址: 0x88命令格式:地址+音量设置命令格式: 0000 B2 B1 B0 A2 A1 A0B2\B1\B0:每阶 -10dB 衰减A2\A1\A0: 每阶 -1.25dB 衰减左右声道衰减命令:110(左)、111(右)11x B1 B0 A2 A1 A0B1\B0:每阶 -10dB 衰减A2\A1\A0: 每阶 -1.25dB 衰减B1\B0\A2\A1\A0:全为1 则是是Mute静音。
具体数值参考 pt2014规格书.pdf音源通道切换、响度、增益控制:010010 G1 G0 S2 S1 S0010:命令标识G1\G0: 增益值,00:+11.25dB 01:+7.5dB 10:+3.75dB S2:0->启用指定音源通道 1->关闭指定音源通道S1\S0:源通道选择,00:通道1 01:通道2 10:通道3 11:通4(2314才有)(对应芯片 RINx\LINx 引脚)高低音设置命令:0111(高)、0110(低)011x C3 C2 C1 C0C3\C2\C1\C0:每加1 增益+2dB 从 -14dB ~ +14dB 值的单片机程序下载地址:1、设置音源通道// 音源命令、0dB、启用、音源通道1temp = 0x40 | 0x18 | 0x00 | x00;I2C_Write_Byte(temp);2、设置高低音// 高音命令、0dBtemp = 0x60 | 0x07;I2C_Write_Byte(temp);// 低音命令、0dBtemp = 0x70 | 0x07;I2C_Write_Byte(temp);3、设置音量值// 音量命令、-17.5dBtemp = 0x00 | 0x0E;I2C_Write_Byte(temp);4、设置左右声道衰减调试信息 __ISDEBUG__ 宏被定义则打印调试信息,未__ISDEBUG__极限控制,用于判断指定值是否超过一维数组大小,若超防止数组访问越界实例代码:可靠性及稳定性欠考验,仅用于理解 PT2313芯)数据结构10x88 // 芯片地址0x00 // 音源通道选0x010x020x030x00 // 控制命令0xc00xe00x800xa00x400x600x700x18 //0dB0x10 //0.75dB0x08 //7.5dB0x00 //12.25dB0x000x0410 // 默认值77200x00 // 音效0x010x020x030x040x05极限控制,用于判断指定值是否超过一维数组大小,若超typedef structunsigned char CrtAudioCh;unsigned char LoudnessSta;unsigned char MasterVolVal;unsigned char TempVolVal;unsigned char TrebleVal;unsigned char BassVal;unsigned char FadeVal;unsigned char BalVal;unsigned char EQ;// 全局变用于保存设置值I2C_ERROR,I2C_SUCCESS// 高0x00,//-14dB0x01,//-12dB0x02,//-10dB0x03,//-8dB0x04,//-6dB0x05,//-4dB0x06,//-2dB0x07,//0dB0x0e,//2//2dB0x0d,//4//4dB0x0c,//6dB0x0b,//8dB0x0a,//10dB0x09,//12dB0x08,//14dB音效 *//* bass treble effect */{0x0e,0x0d}, /* 02db 04db pop 流行 */ {0x0e,0x0e}, /* 02db 02db clas 古典 */ {0x0c,0x07}, /* 06db 00db rock 摇滚 */ {0x0a,0x0e}, /* 10db 02db jazz 爵士 */ {0x07,0x07}, /* 00db 00db normal正常 *//*step:1.25db 音量值0x3f,//-78.75dB0x3c,//-75.00dB0x3a,//-72.50dB0x38,//-70.00dB0x36,//-67.50dB0x34,//-65.00dB0x32,//-62.50dB0x30,//-60.00dB0x2e,//-57.50dB0x2c,//-55.00dB0x2a,//-52.50dB0x28,//-50.00dB0x26,//-47.50dB0x24,//-45.00dB0x22,//-42.50dB0x3f,//-78.75dB0x20,//-40.00dB0x1e,//-37.50dB0x1c,//-35.00dB0x1a,//-32.50dB0x18,//-30.00dB0x16,//-27.50dB0x14,//-25.00dB0x12,//-22.50dB0x10,//-20.00dB0x0e,//-17.50dB0x0c,//-15.00dB0x0a,//-12.50dB0x08,//-10.00dB0x06,//-7.50dB0x04,//-5.00dB0x02,//-2.50dB0x00,//-0.00dB//rear front……fader //right left ……balance {0x06,0x00},{0x05,0x00},{0x04,0x00},{0x03,0x00},{0x02,0x00},{0x01,0x00},{0x00,0x00},{0x00,0x01},{0x00,0x02},{0x00,0x03},{0x00,0x04},{0x00,0x05},{0x00,0x06},0x00,0x03,0x06,0x09,0x0c,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,数据结构控制int ret = 0;ret = i2c_master_send(g_pt2313_Dev->client, if(ret == 0)printk(" --> Fun: %s, Line: %05dreturn 0;unsigned char i;for(i=0; i<num; i++){DEBUGOUT("I2C_Write_Byte = 0X%X", *buf); I2C_Write_Byte(*buf++);}音频通道切换 */unsigned char temp = 0;channel > 3 ? channel = 3 : channel;DEBUGOUT("Audio Channel = %d ", channel); switch(channel){case 1:temp = SwitchCtrlCmd | Stereo1;temp |= GAIN0;break;temp = SwitchCtrlCmd | Stereo2; temp |= GAIN0;break;case 3:temp = SwitchCtrlCmd | Stereo3; temp |= GAIN0;break;default:temp = SwitchCtrlCmd | Stereo1; temp |= GAIN0;break;}if(AUDVAR.LoudnessSta == OFF) temp |= LOUDOFF;elsetemp |= LOUDON;I2C_Buffer[0] = temp;I2C_Write(PT2313_Addr,I2C_Buffer,1);低音控制 */unsigned char temp;if(AUDVAR.EQ == USER) //{ISVal(AUDVAR.TrebleVal, ToneTbl); // 超temp = ToneTbl[AUDVAR.BassVal];}else{AUDVAR.EQ --;ISVal(AUDVAR.EQ, SoundEffect); //temp = SoundEffect[AUDVAR.EQ][0]; // }I2C_Buffer[0] = BassCtrlCmd | temp;I2C_Write(PT2313_Addr,I2C_Buffer,1); 高音控制 */unsigned char temp;if(AUDVAR.EQ == USER){if(AUDVAR.TrebleVal >AUDVAR.TrebleVal =ISVal(AUDVAR.TrebleVal, ToneTbl); //temp = ToneTbl[AUDVAR.TrebleVal]; }else{AUDVAR.EQ --;ISVal(AUDVAR.EQ, SoundEffect); // temp = SoundEffect[AUDVAR.EQ][1];}I2C_Buffer[0] = TreblwCtrlCmd | temp;I2C_Write(PT2313_Addr,I2C_Buffer,1);平衡音量控制 */unsigned char temp;unsigned char BR;// balance right 平衡右unsigned char BL;// balance left 平衡左unsigned char FF;// balance front 平衡前unsigned char FR;// balance rear 平衡后// 超限判断ISVal(AUDVAR.BalVal, BalanceFaderTbl);超限控制ISVal(AUDVAR.FadeVal, BalanceFaderTbl); 超限控制BR = BalanceFaderTbl[AUDVAR.BalVal][0]; FF = BalanceFaderTbl[AUDVAR.FadeVal][1]; BL = BalanceFaderTbl[AUDVAR.BalVal][1]; FR = BalanceFaderTbl[AUDVAR.FadeVal][0]; //front voltemp = ATT_TBL[FF+BR];I2C_Buffer[0] = ATTFRCtrlCmd | temp;I2C_Write(PT2313_Addr,I2C_Buffer,1); temp = ATT_TBL[FF+BL];I2C_Buffer[0] = ATTFLCtrlCmd | temp;I2C_Write(PT2313_Addr,I2C_Buffer,1);//rear voltemp = ATT_TBL[FR+BL];I2C_Buffer[0] = ATTRRCtrlCmd | temp;I2C_Write(PT2313_Addr,I2C_Buffer,1); temp = ATT_TBL[FR+BR];I2C_Buffer[0] = ATTRLCtrlCmd | temp; I2C_Write(PT2313_Addr,I2C_Buffer,1); 主音量控制 */unsigned char temp;ISVal(Val, MasterVolTbl);temp = MasterVolTbl[Val];I2C_Buffer[0] = VolCtrlCmd | temp;I2C_Write(PT2313_Addr,I2C_Buffer,1); BalanceFaderControl();静音控制 */if(MuteOn) // 静{DEBUGOUT("Mute on...");I2C_Buffer[0] = ATTRLCtrlCmd | 0x1f; I2C_Write(PT2313_Addr, I2C_Buffer,1);I2C_Buffer[0] = ATTRRCtrlCmd | 0x1f; I2C_Write(PT2313_Addr, I2C_Buffer,1);I2C_Buffer[0] = ATTFLCtrlCmd | 0x1f; I2C_Write(PT2313_Addr, I2C_Buffer,1);I2C_Buffer[0] = ATTFRCtrlCmd | 0x1f; I2C_Write(PT2313_Addr, I2C_Buffer,1); }else{DEBUGOUT("Mute off...");BassControl();TrebleControl();BalanceFaderControl(); MasterVolControl(AUDVAR.MasterVolVal);}音频初始化 */AUDVAR.LoudnessSta = ON;AudioSwitch(1); // 设置AUDVAR.EQ = USER;AUDVAR.BassVal = Bass_Default; // 默BassControl(); // 设置AUDVAR.TrebleVal = Treble_Default; // 默认TrebleControl(); // 设置AUDVAR.MasterVolVal = Volume_Default; // 默MasterVolControl(AUDVAR.MasterVolVal); // 设AUDVAR.FadeVal= 6; // 增AUDVAR.BalVal = 6; // 均BalanceFaderControl(); // 设置控制pt2313的高低音配置。