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.

[参考译文] TAS5825P:在运行期间不改变音量

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/968151/tas5825p-not-changing-volume-during-run-time

器件型号:TAS5825P

大家好、我目前正在使用以下放大器 tas5825p、在初始化放大器后尝试更改扬声器 L/R 的音量时遇到了一些问题。

当我更改两个 L/R 扬声器的音量时,它不会更改音量。 如果我在初始化代码中手动执行它、它会起作用、但在初始化器件并在器件上输出音频后执行它、它不会更改音量级别。 我的工作方式如下:

//配置正确的书籍、页面和寄存
器// w ADDR 00 00
ret_status = i2c_write (i2c_address、0x00、0x00);
// w ADDR 7f 8c
ret_status |= i2c_write (i2c_address、0x7f、0x8c);
// w ADDR 00 0b_status
| i2c、iDDR_write



= 0x2c_address、0x2c_address;/i2c、0xxx/iDR_set、0x2c_address;/iDR_b、0xxx/iDR_set
RET_STATUS |= i2c_write (i2c_address、0x0d、 字节3);
ret_status |= i2c_write (i2c_address、0x0E、字节2);
ret_status |= i2c_write (i2c_address、 0x0F、字节1);

//设置右侧扬声器音量
// w ADDR 10 xx xx xx xx
ret_status |= i2c_write (i2c_address、0x10、字节4);
ret_status |= i2c_write (i2c_address、0x11、 字节3);
ret_status |= i2c_write (i2c_address、0x12、字节2);
ret_status |= i2c_write (i2c_address、 0x13、字节1); 

此处发送的4个字节为0x00040C37、即字节4 = 0x00、字节3 = 0x04、字节2 = 0x0c、 字节1 = 0x37

 我是否做了任何错误、我是否应该在之后发送一些东西以验证发送的字节?

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

    Hadi、您好!

    这是因为9.23格式系数需要一个一致的4字节 I2C 写入操作、这意味着4字节之间不应发送停止位。  

    您可以尝试在 I2C 中的4个字节中使用"重复起始"、然后它应该起作用。 谢谢!

    此致、

    Sam

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

    尊敬的 Sam:

    谢谢你们的澄清,我觉得我不得不把它作为重复的开始,实际上现在只是尝试一下:)

    不幸的是、即使重复启动、我似乎也无法使其正常工作。 让我来描述一下它目前的编写方式、并让我知道它是否正确。

    //配置正确的书籍、页面和寄存
    器// w ADDR 00 ret_status
    = i2c_write (i2c_address、0x00、0x00);
    // w ADDR 7f 8c
    ret_status |= i2c_write (i2c_address、0x7f、0x8c);
    // w ADDR 00 0b_status
    |= i2c_write (i2c_address、0x7f、0x8c);//
    

    上面的这些行作为起始行和停止行发送、我猜应该是这样吗?

    接下来、在成功发送这些字节后、我开始发送数字卷配置。

    我首先发送 I2C START 命令并写入寄存器0x0c 'byte4'、之后不发送任何停止位。 接下来、我通过在每个字节之间使用重复起始来发送其余字节、最后一个字节(字节1、寄存器0x0F)我发送一个停止位来指示我们已完成。 右侧扬声器也执行了相同的过程、但偏移值不同(从0x10-0x13开始)。 这听起来是否合理、还是我做了一些错误?

    //设置左侧扬声器音量
    // w ADDR 0c xx xx xx xx xx
    ret_status |= i2c_write (i2c_address、0x0c、byte4);//此处发送开始位!
    RET_STATUS |= i2c_write (i2c_address、0x0d、byte3);//重复启动
    ret_status |= i2c_write (i2c_address、0x0E、byte2);//重复启动
    ret_status |= i2c_write (i2c_address、0x0F、byte1);//重复启动
    和停止= P =重复启动/= s = s、重复启动/= s = s
    >[S addr WR A 0C A 00 A][SR addr WR A 0D A 28]... [SR addr WR A 0F A 27A P]
    
    
    //设置正确的扬声器音量
    // w ADDR 10 xx xx xx xx
    ret_status |= i2c_write (i2c_address、0x10、byte4);//此处发送的起始位!
    RET_STATUS |= i2c_write (i2c_address、0x11、byte3);//重复启动
    ret_status |= i2c_write (i2c_address、0x12、byte2);//重复启动
    状态|= i2c_write (i2c_address、0x13、byte1);//重复启动和停止后 

    关于9.23格式、我在 TI 上找不到有关它的任何信息? 是否有任何链接对此进行了说明?

    此致、

    哈迪   

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

    Hadi、您好!

    写入操作后、您是否可以尝试读回寄存器?

    请参阅以下屏幕截图、了解 x.x 格式的说明。 谢谢!

    此致、

    Sam