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.

[参考译文] TAS2560:Tas2560

Guru**** 1184800 points
Other Parts Discussed in Thread: CC1352P7, TAS2560
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1254120/tas2560-tas2560

器件型号:TAS2560
主题中讨论的其他器件:CC1352P7

尊敬的先生:

我们要尝试通过 I2S 将 TAS2560与 CC1352p7配合使用。 我们最终通过使用下面的函数生成一个音调来得到一些声音:-
//以指定的频率和采样率生成正弦波。


void generateSineWave (int16_t *缓冲器、int bufferLength、双倍频率、双采样 Rate)
{
对于(int I = 0;I < bufferLength;I++)
{
双精度 t =(双精度) i /采样率;
双精度值= sin (2.0 * M_PI * frequency * t);
Buffer[i]=(int16_t)(value * 32767.0);//转换为16位 PCM 范围(-32768至32767)

我们知道的是,无论我们设置的频率是什么,音调总是相同的。 它看起来像一个低 沉的中音响亮的声音。 我们不能确定我们做了什么错。 此外、我们可以使用 i2c 中的哪个寄存器来控制音量?

此外,您可以建议播放声音所需的文件类型,如何为 I2S 转换 MP3文件?

 i2sParams.samplingFrequency = 48kHz;

这些是我们的配置寄存器:-

CFG_reg 寄存器[]={
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x07、0x41 },
{ CFG_meta_delay,0x10 },
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{0x07、0x00}、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x01、0x01 },
{ CFG_meta_delay,0x10 },

{ 0x00、0x00 }、
{ 0x7f,0x00 },
//指定时钟(MCLK/BCLK)
{ 0x0F,0x01 },
// PLL P
{ 0x0F,0x01 },
// PLL J
{ 0x10、0x20 },
// PLL D - MSB 6位
{ 0x11、0x00 }、
// PLL D - LSB 8位
{ 0x12、0x00 }、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0x00 }、
//抽取和内插
{ 0x0d,0x08 },
{ 0x0E,0x10 },
//时钟错误检测
{ 0x50、0x31 },
{0x04、0x5F}、
{ 0x15,0x02 },
{0x09、0x83}、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0xFD }、
{ 0x36、0xc0 },
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{0x08、0x01}、
{ 0x36、0x32 },
{ 0x22、0x3f },
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x49、0x0c },
{0x3c、0x33}、
{ 0x02,0x02 },
{ 0x07、0x41 },
{ CFG_meta_delay,0x10 },
{ 0x00、0x32 }、
{ CFG_meta_burst,4 },
{0x28、0x7f}、
{ 0xfb、0xb5 },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{ 0x2C、0x80 }、
{ 0x04、0x4c },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{0x30、0x7f}、
{ 0xf7、0x6a }、
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{ 0x1c、0x7f }、
{ 0xff,0xff },
{ 0xff,0x00 },
{ CFG_meta_burst,4 },
{ 0x20、0x00 }、
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{ 0x24、0x00 }、
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x00、0x33 },
{ CFG_meta_burst,4 },
{0x18、0x06}、
{0x66、0x66}、
{ 0x66、0x00 }、
{ 0x00、0x34 },
{ CFG_meta_burst,4 },
{0x34、0x3a}、
{ 0x46、0x74 },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{ 0x38、0x22 },
{ 0xf3,0x07 },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{0x3c、0x80}、
{ 0x77、0x61 },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{ 0x40、0x22 },
{0xa7、0xcc}、
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{0x44、0x3a}、
{ 0x0c、0x93 },
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0x33 },
{ CFG_meta_burst,4 },
{ 0x10、0x75 },
{ 0xC2、0x8e },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{ 0x14、0x6e },
{ 0x14、0x79 },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{0x20、0x1E}、
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{ 0x24、0x21 },
{ 0x3D、0x71 },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{ 0x28、0x24 },
{ 0x7a、0xe1 },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{ 0x2C、0x27 },
{ 0xb8,0x52 },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{ 0x30、0x2a },
{ 0xf5、0xc3 },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{ 0x34、0x2e },
{ 0x33、0x33 },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{ 0x38、0x31 },
{ 0x70、0xa4 },
{ 0x00、0x00 }、
{ CFG_meta_burst,4 },
{0x3c、0x34}、
{ 0xae,0x14 },
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0x32 }、
{ CFG_meta_burst,4 },
{0x3c、0x3D}、
{ 0x99、0x9a },
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0x32 }、
{ CFG_meta_burst,4 },
{ 0x40、0x30 },
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0x32 }、
{ CFG_meta_burst,4 },
{ 0x44、0x50 },
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0x32 }、
{ CFG_meta_burst,4 },
{ 0x4c、0x02 },
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0x32 }、
{ CFG_meta_burst,4 },
{ 0x54、0x00 },
{ 0x88、0x40 },
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0x32 }、
{ CFG_meta_burst,4 },
{ 0x58,0x00 },
{ 0x06、0xd3 },
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0x32 }、
{ CFG_meta_burst,4 },
{ 0x60、0x28 },
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0x33 },
{ CFG_meta_burst,4 },
{0x40、0x00}、
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x00、0x33 },
{ CFG_meta_burst,4 },
{0x64、0x39}、
{ 0x80、0x00 }、
{ 0x00、0x00 }、
{ 0x00、0x00 }、
{ 0x7f,0x00 },
{ 0x07、0x40 },
};

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

    尊敬的 Nadeeem:

    您是否可以使用 TAS2560数据表第9.6.2节中已知的工作寄存器集来测试2560器件?  

    关于音量控制、您可以参考此文档、

    e2e.ti.com/.../5444.Digital_5F00_Gain_5F00_Control.pdf

    也可以在 CC1352的 E2E 论坛上分享这个问题、我不熟悉这个器件。  

    此致、
    亚瑟

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

    尊敬的 Arthur:

    我们实际上是使用纯路径控制台生成的配置寄存器。 我假设这是正确的。

    这就是我们目前所了解的:

    在 CC1352P7侧

    1) 1)我们已将 I2S 接口配置为使用默认参数、并进行了一些更改:-

    *默认值为:
    *@代码
    * params.samplingFrequency = 48000;
    * params.memorySlotLength = I2S_MEMORY_LENGTH_16bits;
    * params.moduleRole = I2S_CONTROLLER;
    * params.trueI2sFormat =(bool)true;
    * params.invertWS =(bool)true;
    * params.isMSB First =(bool)true;
    * params.isDMAUnused =(bool) false;
    * params.samplingEdge = I2S_SAMPLING_EDGE_RISING;
    * params.beforeWordPadding = 0 ;
    * params.bitsPerWord = 16;
    * params.fterWordPadding = 0;
    * params.fixedBufferLength = 1;
    * params.SD0Use = I2S_SD0_output;
    * params.SD1Use = I2S_SD1_INPUT;
    * params.SD0Channels = I2S_CHANNEL_STEREO;
    * params.SD1Channels = I2S_CHANNEL_STEREO;
    * params.phaseType = I2S_PHASE_TYPE_DUAL;
    * params.startUpDelay = 0;
    * params.CCLKDivider = 40;
    * params.readCallback = NULL;
    * params.writeCallback = NULL;
    * params.errorCallback = NULL;
    * params.custom = NULL;

    基于此,I2S 驱动程序似乎正在生成 MCLK、WSCLK、SCK,当我们测量 BCLK 时,我们将得到一个1.55 MHz 的速率。  根据我的理解,下面的设置是配置 ASI 格式:-

    * params.SD0Channels = I2S_CHANNEL_STEREO;
    * params.phaseType = I2S_PHASE_TYPE_DUAL;

    这已将 ASI 配置为在双通道上运行,这意味着左和右通道,因此 WSCLK 表示左或右通道。 根据这一理解,频率1.55mhz 计算如下:48kh*16*2 。   

    现在来了解 TAS2560配置

    e2e.ti.com/.../48khz_5F00_bclk1536.c

     

    我使用了上述由纯路径控制台创建的寄存器设置。  当我研究一些与时钟和 ASI 格式相关的寄存器时、我就是这样认识到的:-

    1) ASI 模式控制寄存器0x14 设置为0x6E。 似乎这是将器件配置为24位的 ASI 长度以及 LJF 的 ASI 模式。 我们的文件格式实际上应该是16位和8kHz 的单声道 PCM。

    因此、我想为了满足我的要求、 我需要更改设置或将寄存器0x14更改为10000b = 0x10。 从而将设置更改为 16位和单 PCM。  这是否正确

    2) ASI 通道寄存器0x15设置为0x14。  对于单声道 PCM、似乎设置为左声道、我已决定将此更改为0x03。

    3)如您所见,时钟设置为 BCLK 作为输入:(在 Pure 控制台上没有改变)-

    //指定时钟(MCLK/BCLK)
    0x0F0x01}、  //输入 blck 和分频器 =1
    // PLL P
    { 0x0F0x01 },
    // PLL J
    { 0x100x20 },
    // PLL D - MSB 6位
    { 0x110x00 }、
    // PLL D - LSB 8位
    { 0x120x00 }、
    { 0x00、0x00 }、
    { 0x7f0x00 },
    { 0x00、0x00 }、
    寄存器 PCM_RATE 0x36最终设置为0x33、我们将其更改为0x02以实现48kHz。

    基于纯控制台设置,所有其他寄存器保持不变。

    基于上述,我需要发送一个具有以下属性的 wave 文件:-

    1) 1)采样率48kHz

    2) 2) 16位 PCM 有符号整数

    请确认以下文件格式是否正确。

    e2e.ti.com/.../7-Walk-Sign-Is-On-for-All-Crossings-_2800_female_29005F00_2_2D00_6mS.wav

    时钟

    最后、根据 Pure 生成的输出、就时钟而言是否正确:  

    据我所知、I2S 驱动程序是根据 I2S 参数中设置的48MHz/时钟分频比创建 MCLK 的、但是由于我们的时钟频率高于1MHz、因此我们实际上不需要 MCLK、只能使用 BCLK。 目前、当我们检查 BCLK 的输出频率约为1.55MHz 时。

    在时钟公式中,我不了解 PLL 时钟的工作原理。 对于 instand、我们可以选择使用源作为 BCLK 还是 MCLK。 在本例中、它配置为使用 BCLK 作为 PLL_CLKIN 的输入和源。

    然后、根据数据表、您将 PLL_CLKIN 除以寄存器0x0F 中设置为1的 P 值。 但是我不明白您是如何使用 J.D 寄存器值作为小数乘法器的?  这是什么意思的 J.D(你乘 J 和 D) 对不起,我是新的这一切东西。

    感谢您的帮助

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

    尊敬的 Nadeem:  

    我注意到您有一个重复的线程、并且目前正在从 Ivan 那里获得支持、他在使用这些旧设备方面拥有更丰富的经验。 请您考虑他对您的调试建议。

    此致、
    亚瑟