我在 TLV320AIC3254音频转换器上的 miniDSP 算法中有一些音量控制、希望通过 I2C 从主机微控制器控制音量级别。 如何将以 dB 为单位的体积电平转换为24位体积系数? 我记得在 TI 音频转换器 Wiki 中看到了该系数和其他系数的转换、但我无法再查看 Wiki 页面。
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.
我在 TLV320AIC3254音频转换器上的 miniDSP 算法中有一些音量控制、希望通过 I2C 从主机微控制器控制音量级别。 如何将以 dB 为单位的体积电平转换为24位体积系数? 我记得在 TI 音频转换器 Wiki 中看到了该系数和其他系数的转换、但我无法再查看 Wiki 页面。
您好、Rob、
我将发布您在下面提到的帖子的内容。
将线性或 dB 值转换为十六进制值
适用于:
要将 dB 或线性值转换为格式、器件必须了解器件的数据格式。 miniDSP 器件将用户可访问的变量存储在系数存储器(C-RAM)中。 如上所示、C-RAM 的位宽可能因器件而异。
例如、音量控制音量 级别由存储在其 C-RAM 位置的值决定。 0dB 音量级别(1x 增益)对应于0x400000 (24位器件)或0x4000 (16位器件)。 这意味着音量控制采用2.xx 格式、其中 MSB 是符号位、 MSB-1是幅度位、xx 是小数位。 这是二进制补码格式、这意味着数字的范围为[0x800000、0x7FFFFF]、其中0x80... 是最大负数、0x7F...是最大正数。 一些示例:
通常、可以将数字从十进制转换为 M.xx 格式的十六进制值、如下所示:
ValueHEX = DEC2HEX (ValueDEC x 2N-M)、其中 N 是存储器位置的位分辨率。
如果该值以分贝(dB)为单位、则可以按如下方式进行转换:
ValueHEX = DEC2HEX (10Value (dB)/20 x 2N-M)
请注意 、如果转换为十六进制、则大于2N-1且小于-2N-1的值超出范围。
例如、对于 PurePath Studio (2.xx 格式)中的音量控制、0dB 增益将导致:
ValueHEX = DEC2HEX (100/20 x 224-2)= 0x400000
下表显示了其他值。
要从十六进制转换为 十进制:
ValueDEC = HEX2DEC (ValueHEX)/2N-M
要将十进制值转换回 dB:
ValuedB = 20 x log10 (ValueDEC)
例如、0x400000 (作为2.xx 十六进制数)可以转换 为线性 、如下所示:
ValueDEC = HEX2DEC (400000)/224-2 = 1
DB/线性到十六进制 计算器可下载如下:
此致、
Diego Melendez López í a
音频应用工程师