主题中讨论的其他器件:LAUNCHXL-CC2640R2、 CC2640、
您好!
我们的平台是 LAUNCHXL-CC2640R2 LaunchPad + "%20rel="nofollow%20noreferrer" %20target="_blank" %20href="https:/www.ti.com/tool/CC3200AUDBOOST" %20title="Product%20Folder">CC3200%20Audio%20BoosterPack。">CC3200音频 BoosterPack。
我们正在 miniDSP 上进行 VoBLE 的信号处理:我们通过 CC2640 Launchpad 对 TLV320芯片进行编程。 当我们在 miniDSP_A 上执行滤波程序时、它可以正常工作、但在使用 miniDSP_D 时、它不能正常工作。
此处是仅使用 DSP A 的 Pure Path Studio 程序
此处是使用 DSP_A 和 DSP_D 程序的程序:
使用第二个程序时、FIR 滤波器无法正常工作...
我们正在搜索哪个寄存器配置错误:
int AudioCodecConfig (unsigned char codecId、unsigned char bitsPerSample、unsigned short bitrate、 unsigned char noOfChannels、unsigned char 扬声器、unsigned char mic) { unsigned int bitClk = 0; //Audio_RegValWriteDSP (REG_Section_program、sizeof (REG_Section_program)/ 2); if (codecId = audio_codec_TI_3254) { AudioCodecPageSelect (TI3254_PAGE_0); IF (bitsPerSample = AUDIO_CODE_16_BIT) { //设置 I2S 模式和字长 AudioCodecRegWrite (TI3254_AUDIO_IF_1_REG、0x00);// 0x00 16位、I2S、BCLK 为器件输入 // WCLK 是器件的输入 ,} 其他 { 返回-1; } bitClk = bitsPerSample * bitrate * noOfChannels; 如果(bitClk = 512000) { AudioCodecPageSelect (TI3254_PAGE_0); AudioCodecRegWrite (TI3254_CLK_MUX_REG、0x03); // PLL 时钟为 CODEC CLKIN // AudioCodecRegWrite (TI3254_CLK_PLL_P_R_REG、0x14 | 0x80);// PLL 上电、P=1、R=4 AudioCodecRegWrite (TI3254_CLK_PLL_P_R_REG、0x71 | 0x80);// PLL 上电、P=7、R=1 // AudioCodecRegWrite (TI3254_CLK_PLL_J_REG、0x2A); // J=42 AudioCodecRegWrite (TI3254_CLK_PLL_J_REG、0x2B); // J=43 AudioCodecRegWrite (TI3254_CLK_PLL_D_MSB_REG、0x00); // D = 0 // AudioCodecRegWrite (TI3254_CLK_NDAC_REG、0x8E); // NDAC 分压器加电,NDAC = 14 AudioCodecRegWrite (TI3254_CLK_NDAC_REG、0x88);// NDAC 分压器加电、NDAC = 8 // AudioCodecRegWrite (TI3254_CLK_MDAC_REG、0x81); // MDAC 分频器加电,MDAC = 1. AudioCodecRegWrite (TI3254_CLK_MDAC_REG、0x81);// MDAC 分频器加电、MDAC = 1 AudioCodecRegWrite (TI3254_DAC_OSR_MSB_REG、0x01);// DOSR = 0x0180 = 384 AudioCodecRegWrite (TI3254_DAC_OSR_LSB_REG、0x80);// DOSR = 0x0180 = 384 // AudioCodecRegWrite (TI3254_CLK_NADC_REG、0x95); // NADC 分压器加电,NADC = 21 AudioCodecRegWrite (TI3254_CLK_NADC_REG、0x8C);// NADC 分频器加电、NADC = 12 AudioCodecRegWrite (TI3254_CLK_mAdc_REG、0x82);// mAdc 分频器加电、mAdc = 2 AudioCodecRegWrite (TI3254_ADC_OSR_REG、0x80);// AOSR = 128 (((与 PRB_R1配合使用到 PRB_R6、ADC 滤波器类型 A) } 其他 { 返回-1; } //配置电源 AudioCodecPageSelect (TI3254_PAGE_1);//选择第1页 AudioCodecRegWrite (TI3254_PWR_CTRL_REG、0x08); //禁用 AVDD 与 DVDD 的弱连接 AudioCodecRegWrite (TI3254_LDO_CTRL_REG、0x01); //检测到 AVDD LDO 的过流 AudioCodecRegWrite (TI3254_ANALOG_IP_QCHRG_CTRL_REG、0x32);//模拟输入加电时间为6.4ms AudioCodecRegWrite (TI3254_REF_PWR_UP_CTRL_REG、0x01); //当模拟块加电时,基准将在40ms 内加电 AUDIO_RegValWriteDSP (miniDSP_A_REG_Values、sizeof (miniDSP_A_REG_Values)/ 2); Audio_RegValWriteDSP (miniDSP_D_REG_Values、sizeof (miniDSP_D_REG_Values)/ 2); IF (扬声器) { unsigned char reg1; AudioCodecPageSelect (TI3254_PAGE_0);//选择第0页 //##配置处理块 AudioCodecRegWrite (TI3254_DAC_SIG_P_BLK_CTRL_REG、0x2);// DAC 信号处理块 PRB_P2 // AudioCodecPageSelect (TI3254_PAGE_44);//选择第44页 // AudioCodecRegWrite (TI3254_DAC_ADP_FILTER_CTRL_REG、0x04);//为 DAC 启用自适应滤波 AudioCodecPageSelect (TI3254_PAGE_1);//选择第1页 reg1 = 0x00; IF (扬声器和 AUDIO_CODE_SPEAKER_HP) { //de-pop:5个时间常数、6k 电阻 AudioCodecRegWrite (TI3254_HP_DRV_START_UP_CTRL_REG、0x25);//耳机斜升加电时间由6k 电阻决定、 //耳机在5.0时间常数内缓慢上升 //将 LDAC/RDAC 路由到 HPL/HPR AudioCodecRegWrite (TI3254_HPL_Routing_SEL_REG、0x08);//左通道 DAC 重建滤波器的正极端子路由到 HPL AudioCodecRegWrite (TI3254_HPR_routing_SEL_REG、0x08);//左通道 DAC 重建滤波器的负端子路由到 HPR reg1 |= 0x30;// HPL 和 HPR 已加电 } IF (扬声器和 AUDIO_CODE_SPEAKER_LO) { //将 LDAC/RDAC 路由到 LOL/LOR AudioCodecRegWrite (TI3254_LOL_Routing_SEL_REG、0x08);//左通道 DAC 重建滤波器输出路由到 LOL AudioCodecRegWrite (TI3254_LOR_routing_SEL_REG、0x08);//右通道 DAC 重建滤波器输出路由到 LOR reg1 |= 0x0C;// LOL 和 LOR 已加电 } //加电 HPL/HPR 和 LOL/LOR 驱动器 AudioCodecRegWrite (TI3254_OP_DRV_PWR_CTRL_REG、reg1); IF (扬声器和 AUDIO_CODE_SPEAKER_HP) { //取消 HPL/HPR 驱动器静音,0dB 增益 AudioCodecRegWrite (TI3254_HPL_DRV_GAIN_CTRL_REG、0x00);// HPL 驱动器未静音、HPL 驱动器增益为0dB AudioCodecRegWrite (TI3254_HPR_DRV_GAIN_CTRL_REG、0x00);// HPR 驱动器未静音、HPL 驱动器增益为0dB } IF (扬声器和 AUDIO_CODE_SPEAKER_LO) { //取消 LOL/LOR 驱动器静音,0dB 增益 AudioCodecRegWrite (TI3254_LOL_DRV_GAIN_CTRL_REG、0x0E);// LOL 驱动器增益为11dB AudioCodecRegWrite (TI3254_LOR_DRV_GAIN_CTRL_REG、0x0E);// LOL 驱动器增益为11dB } AudioCodecPageSelect (TI3254_PAGE_0);//选择第0页 //DAC => 64dB AudioCodecRegWrite (TI3254_LEFT_DAC_VOL_CTRL_REG、0x80);//数字音量控制= 64.0dB 无提示注意:根据数据表、保留该值、但设置该值时会静默 AudioCodecRegWrite (TI3254_Rright_DAC_VOL_CTRL_REG、0x80);//数字音量控制= 64.0dB 无提示注意:根据数据表、保留该值、但设置该值时会静默 AudioCodecPageSelect (TI3254_PAGE_0);//选择第0页 //加电 LDAC/RDAC AudioCodecRegWrite (TI3254_DAC_CHANGE_SETUP_1_REG、0xD6);//左右 DAC 通道已通电 //左 DAC 数据左通道音频接口数据 //右侧 DAC 数据是左声道音频接口数据 //软步进被禁用 //取消 LDAC/RDAC 静音 AudioCodecRegWrite (TI3254_DAC_CHANGE_SETUP_2_REG、0x00);//当右侧 DAC 通道断电时、数据为零。 //自动静音已禁用 //左侧和右侧 DAC 通道未静音 //左右通道具有独立的音量控制 } IF (麦克风) { unsigned char reg1 = 0x00;// TI3254_MICBIAS_CTRL_REG unsigned char reg2 = 0x00;// TI3254_LEFT_MICPGA_P_CTRL_REG unsigned char reg3 = 0x00;// TI3254_LEFT_MICPGA_N_CTRL_REG unsigned char reg4 = 0x00;// TI3254_RIGHT MICPGA_P_CTRL_REG unsigned char reg5 = 0x00;// TI3254_RIGHT MICPGA_N_CTRL_REG unsigned char reg6 = 0x00;// TI3254_float_IP_CTRL_REG AudioCodecPageSelect (TI3254_PAGE_8);//选择第8页 AudioCodecRegWrite (TI3254_ADC_ADP_FILTER_CTRL_REG、0x04);//为 ADC 启用自适应滤波 AudioCodecPageSelect (TI3254_PAGE_0);//选择第0页 AudioCodecRegWrite (TI3254_ADC_SIG_P_BLK_CTRL_REG、0x0);// ADC 信号处理块 PRB_P2 IF (麦克风和音频编解码器 MIC_Mono) { reg1 |= 0x40;// MICBIAS 加电 reg2 |= 0x00; reg3 |= 0x10; reg4 |= 0x10;// IN2R 路由到具有10k 电阻的右侧 MICPGA reg5 |= 0x40;// CM 通过阻抗为10k 的 CM1R 路由到右侧 MICPGA reg6 |= 0x10;// IN2R 输入弱驱动为共模。 在不将 IN2R 路由到左右 MICPGA 时使用} IF (麦克风和音频编解码器 MIC_LINE_IN) { reg1 |= 0x40;// MICBIAS 加电 reg2 |= 0x40;// IN1L 路由到左侧具有10k 电阻的 MICPGA reg3 |= 0x40;// CM 路由到具有10k 电阻的右侧 MICPGA reg4 |= 0x40;// IN1R 路由到具有10k 电阻的右侧 MICPGA reg5 |= 0x40;// CM 通过阻抗为10k 的 CM1R 路由到右侧 MICPGA reg6 |= 0xC0;// IN1L 输入弱驱动为共模。 在不将 IN1R 路由到左右 MICPGA 时使用} IF (麦克风和音频编解码器_MIC_ONBO载) { reg1 |= 0x40;// MICBIAS 加电 reg2 |= 0x00; reg3 |= 0x04; reg4 |= 0x04;// IN3R 路由到具有10k 电阻的右侧 MICPGA reg5 |= 0x40;// CM 通过阻抗为10k 的 CM1R 路由到右侧 MICPGA reg6 |= 0x04;// IN3L 输入弱驱动为共模。 在不将 IN3R 路由到左右 MICPGA 时使用} AudioCodecPageSelect (TI3254_PAGE_1);//选择第1页 AudioCodecRegWrite (TI3254_MICBIAS_CTRL_REG、reg1); //未路由 IN2L AudioCodecRegWrite (TI3254_LEFT_MICPGA_P_CTRL_REG、reg2); //将 IN2R CM1L 路由到具有10K 输入阻抗的 LEFT_N AudioCodecRegWrite (TI3254_LEFT_MICPGA_N_CTRL_REG、reg3); //将 IN2R 路由到 Rright_P、输入阻抗为10K AudioCodecRegWrite (TI3254_Rright_MICPGA_P_CTRL_REG、reg4); //将 CM1R 路由到 Rright_M,输入阻抗为10K AudioCodecRegWrite (TI3254_Rright_MICPGA_N_CTRL_REG、reg5); AudioCodecRegWrite (TI3254_FLOAT_IP_CTRL_REG、reg6); //使通道增益为0dB,因为输入为20K //阻抗使用单端 AudioCodecRegWrite (TI3254_LEFT_MICPGA_VOL_CTRL_REG、0x00);// 0.0dB //取消右 MICPGA 的静音,6dB 增益选择至 //使通道增益为0dB,因为输入为20K //阻抗使用单端 AudioCodecRegWrite (TI3254_RIGHT _MICPGA_VOL_CTRL_REG、0x00);// 0.0dB AudioCodecPageSelect (TI3254_PAGE_0);//选择第0页 AudioCodecRegWrite (TI3254_LEFT_ADC_VOL_CTRL_REG、0x68);//-12dB AudioCodecRegWrite (TI3254_Rright_ADC_VOL_CTRL_REG、0x68);//-12dB AudioCodecPageSelect (TI3254_PAGE_0);//选择第0页 //为 LADC/RADC 加电 AudioCodecRegWrite (TI3254_ADC_CHANGE_SETUP_REG、0xC0);//左通道和右通道 ADC 加电 //取消 LADC/RADC 静音 AudioCodecRegWrite (TI3254_ADC_F精细_GAIN_ADJ_REG、0x00);//左侧和右侧 ADC 通道取消静音。 左右 ADC 通道精细增益= 0dB 、} } uint32_t reset_source = SysCtrlResetSourceGet (); 如果((firState[0]= 0x01)&&(RESET_SOURCE = RSTSRC_WARMRESET)) { AudioCodecPageSelect (12); AudioCodecRegWrite (60、0x00); AudioCodecRegWrite (61、0x00); AudioCodecRegWrite (62、(uint8_t) 0x01);// Mux 值是从字节60开始的24位寄存器的 LSB、因此地址62 } 返回0; }
此致、
Antoine

