This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TLV320AIC3206:AIC 3206高性能输出不工作

Guru**** 2419530 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/700506/ccs-tlv320aic3206-aic-3206-high-performance-output-not-working

器件型号:TLV320AIC3206

工具/软件:Code Composer Studio

您好!

根据下面所附的 TI 示例、我正在尝试在 c5545booster pack 上配置我的 aic3206编解码器以实现高功率高性能输出模式。 还添加了我的代码。 运行回送时、我根本听不到任何输出。 我希望以8kHz 的采样率运行

/*
版权所有(c) 2016、德州仪器(TI)公司
*保留所有权利。
*
*
只要
符合以下条件*、允许以源代码和二进制形式重新分发和使用:
*
*源代码的重新分发必须保留上述版权
声明*、此条件列表和以下免责声明。
*
***二进制形式的再发行必须在

*随发行提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。
*
***未经

事先书面许可、不得使用德州仪器公司的名称或*其贡献者的名称认可或推广从本软件衍生的产品*。
*
*本软件由版权所有者和贡献者"按原样"提供
*、

不承担任何明示或暗示的保证、包括但不限于*适销性和特定用途适用性的暗示保证*。 在任何情况下、版权所有者或
*贡献者都不对任何直接、间接、偶然、特殊、
*模范、 或相应的损害(包括但不限于
*采购替代产品或服务;丧失使用、数据或利润;
*或业务中断)、但出于任何责任理论
、*无论是在合同中、严格责任还是由于
使用本软件而以任何方式产生的侵权行为(包括疏忽或*其他)
、*即使已获悉可能会发生此类损坏。
*
*/

/*! \file audio_line_in_loopback_test.c
*
\brief 函数,用于为音频
配置音频编解码器稳压器* 线路处于环回操作中。
*
*/


#include "audio_line_in_loopback_test.h"
#include "audio_common.h"
#include "../../../build/boostC5545/audio_line_in_loopback_test/coeff
#include 
#include 
#include 

extern test_status AIC3206_LOOP_linein (void *testArgs);

/**
*
\brief 此函数可配置
*的所有音频编解码器寄存器 line in loopback test
*
*\param testArgs [in] Test Args
*
\return
*\n TEST_PASS -测试通过
*\n test_fail -测试失败
*
//
test_status AIC3206_loop_linein (void * testArgs)
{
int16秒、msec;
int16样本;
int16 data1、data2;
int16 output1、output2;

/*配置 AIC3206 */
AIC3206_WRITE( 0, 0x00 );//选择 PAGE 0
AIC3206_WRITE( 1, 0x01 );//重置编解码器
C55x_DELAY_msec (1);//在复位后等待1ms
AIC3206_WRITE( 0, 0x01 );//选择第1页
AIC3206_WRITE( 1, 0x0a );//禁用从 DVDD 生成粗 AVDD
AIC3206_WRITE( 2, 0x00 );//启用模拟块,使用 LDO 电源
AIC3206_WRITE( 1230x05 );//强制参考在40ms 内加电
C55X_DELAY_msec (40);//等待至少40ms
AIC3206_WRITE( 0, 0x00 );//选择 PAGE 0

/* PLL 和时钟配置和上电*/
AIC3206_WRITE( 27, 0x0d );// BCLK 和 WCLK 被设置为 o/p;AIC3206 (主器件)
AIC3206_WRITE( 28, 0x00 );//数据设置= 0
AIC3206_WRITE (4、0x03);// PLL 设置:PLLCLK <- MCLK、CODE_CLKIN <-PLL CLK
AIC3206_WRITE( 6, 0x07 );// PLL 设置:J=7
AIC3206_WRITE( 7, 0x06 );// PLL 设置:hi_BYTE (D=1680)
AIC3206_WRITE (8、0x90);// PLL 设置:LO_BYTE (D=1680)
AIC3206_WRITE( 30, b0 );//仅在主控模式下,每帧32位时钟
// BCLK=DAC_CLK/N =(12288000/8)= 1.536MHz = 32*FS
AIC3206_WRITE( 5, 0x91 );// PLL 设置:加电 PLL,P=1和 R=1
C55x_DELAY_msec (1);//等待 PLL 出现
AIC3206_WRITE( 13, 0x00 );//对于 DOSR = 128十进制或0x0080 DAC 过采样,为 HI_Byte (DOSR)
AIC3206_WRITE( 14, 0x80 );// LO_Byte (DOSR) for DOSR=128 thetal 或0x0080
AIC3206_WRITE( 20, 0x80 );// AOSR = 128十进制或0x0080 AoSR =抽取滤波器1至6
AIC3206_WRITE( 11, 0x87 );//加电 NDAC 并将 NDAC 值设置为7.
AIC3206_WRITE( 12, 0x83 );//为 MDAC 加电并将 MDAC 值设置为12
AIC3206_WRITE( 18, 0x87 );//加电 NADC 并将 NADC 值设置为7.
AIC3206_WRITE( 19, 0x8C );//加电 mAdc 并将 mAdc 值设置为12

AIC3206_WRITE( 60, 0x08 );
AIC3206_WRITE( 61,0x01 );
AIC3206_WRITE( 63, 0xd6 );

/* DAC 布线和上电*/
AIC3206_WRITE( 0, 0x01 );//选择第1页
AIC3206_WRITE( 12, 0x08 );//路由至 HPL 的 LDAC AFIR
AIC3206_WRITE( 13, 0x08 );// RDAC AFIR 路由到 HPR
AIC3206_WRITE( 0, 0x00 );//选择 PAGE 0
AIC3206_WRITE( 64, 0x02 );//左容积=右容积
AIC3206_WRITE( 65, 0x20 );//左 DAC 增益至0dB VOL;右轨左
AIC3206_WRITE( 63, 0xd4 );//向左、右上电数据路径并设置通道
AIC3206_WRITE( 0, 0x01 );//选择第1页
AIC3206_WRITE( 16, 0x00 );//取消 HPL 静音,0dB 增益
AIC3206_WRITE( 17, 0x00 );//取消 HPR 静音,0dB 增益
AIC3206_WRITE( 9, 0x30 );//加电 HPL、HPR

AIC3206_WRITE( 124, 0x06 );
AIC3206_WRITE( 61,0x00 );
AIC3206_WRITE( 71,0x32 );
AIC3206_WRITE(123, 0x05);
AIC3206_WRITE(125, 0x12);


C55x_DELAY_msec (1); //等待1毫秒

/* ADC 路由和上电*/
AIC3206_WRITE( 0, 0x01 );//选择第1页
AIC3206_WRITE( 52, 0x40 );//立体声1插孔
//将 IN2_L 更改为 LADC_P、阻值为40千欧
AIC3206_WRITE (55、0x40);// IN2_R 至 RADC_P 至40kohmm
AIC3206_WRITE (54、0x03);// CM_1 (共模)通过40千欧连接到 LADC_M
AIC3206_WRITE( 57, 0x03 );// CM_1 (共模)到 RADC_M (40千欧)
//AIC3206_WRITE( 59, 0x00 );// MIC_PGA_L 取消静音
// AIC3206_WRITE( 60, 0x00 );// MIC_PGA_R 取消静音
//AIC3206_write(51、0x00 ); // SetMICBIAS

AIC3206_WRITE( 0, 0x00 );//选择 PAGE 0
AIC3206_WRITE( 81, 0xc0 );//向左和右上电 ADC
AIC3206_WRITE( 82, 0x00 );//取消左右 ADC 的静音
AIC3206_WRITE (83、0x00);//将左侧和右侧 ADC
AIC3206_WRITE (84、0x00)取消静音;//将左侧和右侧 ADC 取消静音
//AIC3206_WRITE (86、0x80);// L-AGC 配置
//AIC3206_WRITE (94、0x80);// R-AGC 配置

C55x_DELAY_msec (1); //等待1毫秒

/*初始化 I2S */
initialize_I2S_interface();
GPIO_interrupt_initiation();

/*循环缓冲器 FIR 实现*/
int AUDIO_FRAME_LEN=80000;
Int32 OutFrame [8000];
Int32 OutCircBuf[8000];
#define FS 8000
int N=135;
int i;
int index1=0;
int index2=N;
int16 x[2*135];
int16 z[2*135];
long y1new、y2new;
int k=0;
I2S_writeLeft (0);
I2S_writeRight (0);
/* for (n=0;n >15;
output2=y2new>>15;

如果(A ",="" "w");="" fwrite(buf,="" 2,="" 1,="" pipeout);="" fclose(pipeout);*="" break;="" 80000,="" for="" (i="0;" iPCGCR1 = 0x0000;
CSL_SYSCTRL_REGS->PCGCR2 = 0x0000;

RetVal = SYS_setEBSR (CSL_EBSR_FIELD_PPMODE、
CSL_EBSR_PPMODE_1);//为 I2S2
返回值配置并行端口|= SYS_setEBSR (CSL_EBSR_FIELD_SP1MODE、
CSL_EBSR_SP1MODE_1);//串行端口模式1 (I2S1和 GP[11:10])。

RetVal = initialize_i2c_interface (testArgs);
if (RetVal!= 0)
{
C55x_msgWrite ("I2C initialization failed\n"r);
return (test_FAIL);
}

C55x_msgWrite ("测试从线路中接收音频样本并输出相同的内容\n"r")
"在耳机端口\n\n\r\n\r\n");

C55x_msgWrite ("将耳机连接到 BoosterPack\n\r\n\r\n");
C55x_msgWrite ("在 BoosterPack 的音频端口之间连接一条线路输入电缆\n"\}
"Test PC and line in of the BoosterPack\n\n\r");

C55x_msgWrite ("播放测试 PC 中的任何音频文件并检查\n"\}
"来自连接到 BoosterPack 的耳机的音频\n\r\n");

RetVal = AIC3206_LOOP_LING (testArgs);
if (RetVal!= 0)
{
return (test_FAIL);
}

#ifdef use_user_input

C55x_msgWrite ("如果中的音频流为 n、请按 Y/y)"
"在连接到耳机端口的耳机上观察到、\n\n"\}
"任何其他故障密钥:\n\n");

C55x_msgRead (&c、1);
if (((c!='y')&&(c!='Y'))
{
C55x_msgWrite ("音频回送从线路输入到耳机端口\n"\}
"不正确\n");
返回(test_fail);
}
#endif

return (test_pass);

}

//**

*\brief 此函数在环回测试中执行音频线路
*
\param testArgs [in]测试参数
*
\return
*\n TEST_PASS -测试通过
*\n test_fail-Test failed
*
//
test_status audioLineInLoopbackTest (void * testArgs)
{
test_status testStatus;

C55x_msgWrite ("\n ********* \n\n");
C55x_msgWrite (" 回送测试中的音频线路\n");
C55x_msgWrite ("********* \n\n");

testStatus = run_audio_line_in_loopback _test (testArgs);
if (testStatus!= test_pass)
{
C55x_msgWrite ("\n 环回测试中的音频线路失败!\n\n");
返回(test_fail);
}
其他
{
C55x_msgWrite ("\n 环回测试中的音频线路通过!\n\n");
}

C55x_msgWrite ("\n 环回测试中的音频线路已完成!!\n\n");

返回 testStatus;

}

e2e.ti.com/.../8322.Playback_2D00_Recording_2800_8KHz_2900_.cfg

注意:-不要遵循我的代码中的注释、它们是默认注释、我没有根据我的设置进行更改。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、我可以查看我的代码并更正配置设置、以便在采样率为8kHz 的高功率高性能设置下使用 aic3206。 此外、我还希望使电荷泵能够获得该额外的输出增益。 谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi、V Pot、

    您提到的脚本与我之前发送的脚本相同、对吧?。 它应该与器件一起正常工作、因为我之前已经在我的末端进行了测试、所以除非时钟发生了变化或者终端系统上有另外一个路由配置、否则问题不应该与该代码相关。

    您遵循什么流程以及环回测试的寄存器设置?它似乎是代码上的例程、但不清楚正在对哪些寄存器进行编程。 此外、对器件的回送控制寄存器没有任何更改或设置。  

    此致、

     Diego Melendez López í a
      音频应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Diego、

    1)是的、这是您提供给我的代码。 您的意思是时钟被改变了吗?  我刚才使用了代码中的值。 此外,在您的代码中,我看到了一个错误,请查找 AOSR 和 DOSR 设置都具有相同的寄存器编号,这是不可能的

    2) 2)如图所示、您的代码是针对寄存器的汇编十六进制格式、其值。 在我的代码中、格式为 aic3206 (十进制的寄存器编号、十六进制的寄存器值)、这是在 TI 演示中默认写入 loopback test.c 文件的方式。

    3) 3)我不知道如何将.cfg 直接与.c 文件一起使用。 如果您能提供指导、那将会很好。

    4) 4)您的代码看起来也是用于录制的? 我需要设置回送

    5) 5)您的代码是否还能使电荷泵在输出中获得额外的0.5mw 增益?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Diego、
    您是否收到了我的上述问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi、V Pot、

    感谢您的反馈。

    我认为我们需要澄清您正在执行的测试。 AIC3206具有环回特性、可通过两种方式看到、一种是 ADC 和 DAC 之间的直接连接、另一种是 DIN 和 OUT 之间的环回。 我不熟悉您正在共享的代码或您尝试执行的回送测试、但查看代码、可以看到 AIC3206似乎应该配置为 ADC-DAC 回送。 为此、您需要将第0页/寄存器29的 D4位设置为"1"。  

    我提供的脚本用于回放和录制、它实际上启用了电荷泵。

    此致、

     Diego Melendez López í a
      音频应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    迭戈、

    -我正在执行的环回测试,从插孔中的线路输入,这意味着 ADC 和输出可以从耳机插孔中听到,这意味着 DAC。

    ——我在上面的帖子中提到的有关具有相同注册编号的 Ap1 r dosr 的代码设置中的错误

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    V Pot、

    感谢您的反馈。 如果您提到回送、则需要配置我在之前的响应中指出的寄存器。 关于 AOSR 和 DOSR 问题、您答对了、我在执行测试时可能已经在 GUI 中修复了它、但没有更新脚本、抱歉。

    此致、

    Diego Melendez López í a
    音频应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Diego、

    那么、只是您说的寄存器应该被更改并就位?

    您还可以再次提供正确的 aosr dosr 寄存器编号及其值吗?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi、V Pot、

    假设回送测试功能仅要求 ADC 连接到 DAC 并通过耳机输出收听来自源的音频、是的、我提到的寄存器应进行编程、测试应正常工作。 如前所述、我不熟悉您使用的代码中的测试;由于它似乎与 Booster Pack 一起使用、因此我的 C5545团队同事可能对此有更多了解。   

    根据我之前共享的代码、正确的 AOSR 和 DOSR 设置应为:


    ################################
    #时钟设置(主控模式、24位数据)
    编号-->
    编解码器接收到的#:MCLK = 12MHz
    #生成:blck = 256KHz = 32×FS、WCLK = 8kHz
    ################################
    编号
    #选择第0页
    宽30 00
    编号
    # AOSR = 128
    宽30 14 00 80
    编号
    # DOSR = 512
    宽30 0d 02 00
    编号
    ################################

    此致、

     Diego Melendez López í a
      音频应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    迭戈、

    正如您建议的那样、我尝试了

    AIC3206_WRITE( 29, 0x01 );它不起作用。

    您能否循环使用 c5545booster pack 将十六进制代码转换为我正在使用的 c 代码。 当我首先联系 c5545团队时、他们建议与大家讨论电荷泵和噪声问题。

    请升级此问题、因为该问题已存在很长时间未得到解决。 将 c5545添加到此线程、因为我已经将代码转换为我需要的 C 格式、如果有任何问题、他们可以进行调试。 谢谢

    请尽快实现