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.

[参考译文] TAS2563:仅与 PVDD 集成的 Linux:无声音

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1386734/tas2563-linux-integration-with-pvdd-only-no-sound

器件型号:TAS2563
Thread 中讨论的其他器件: TAS2780

工具与软件:

您好!

我目前正在嵌入式 Linux 项目中将放大器集成在单声道扬声器配置中。

硬件设置为仅使用 PVDD (无 VBAT)、如 本常见问题解答中所述

原理图:

PVBUS (连接到 PVDD 和 VBST)是可配置的、我们已将其设置为9V。

对于软件、我从 https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git 的 for-next 分支中抓取了最新的驱动程序。 据我所知、运行时即使没有配置 DSP 参数也是如此。 我们正在使用内核5.10、所以我必须做一些小的改动才能编译它。

我使用 https://git.ti.com/cgit/tas2781-linux-drivers/tas2781-linux-driver/tree/regbin/toolset 中的 regbin 工具 以及包含的 JSON 文件 tas2563-1amp-reg.json 创建了固件二进制文件 、并  使用 config_extra_firmware 将其编译到内核中。  

由于我们不使用 VBAT、因此在写入 bin 文件之前、我向每个上电配置添加了寄存器设置簿0x00、页0x00、寄存器0x33、值0xc4。

驱动程序抱怨 coef.bin 文件未预设:

# dmesg | grep tas2. 
[0.706546] tasdev-codec 2-004f: tas2563_coef.bin 的直接固件加载失败,错误-2
[ 0.716538] tasdev-codec 2-004f:tasdevice_dsp_parser:load tas2563_coef.bin error
[0.724327] tasdev-codec 2-004f:dspfw load tas2563_coef.bin error

但我认为它无论如何都会加载,因为 我可以 在 amixer 中看到配置文件选择:

#其他内容 
numid=2、iface=混频器、NAME='DMIC 高通滤波器1交换机'
; type=Boolean,access=rw----- 、值=1
: values=on
numid=3, iface=混频器, NAME='DMIC 高通滤波器2交换机'
; type=Boolean,access=rw----- 、值=1
: values=on
numid=4、iface=混频器、名称='DMIC 低通滤波器开关'
; type=Boolean,access=rw----- 、值=1
: values=on
numid=5、iface=混频器、名称="MMIC SW_LR 交换机"
; type=Boolean,access=rw----- 、值=1
: values=off
numid=1,iface=mixer, NAME='DMIC 卷'
; type=integer、access=rw--R--、values=1、min=0、max=31、step=0
: values=15.
|dBscale-min=0.00dB、step=3.00dB、MUTE=0


.... [多个多路复用器配置设置]....

numid=8、iface=混频器、NAME='Mixer0 LR_mix 交换机'
; type=Boolean,access=rw----- 、值=1
: values=off
numid=9、iface=混频器、NAME='MIXer0 MIX_MODE 选项'
; type=enomed,access=rw----- ,values=1、items=4
;项目#0 '线性加权加号'
;项目#1 '平均'
;项目#2 "夹紧"
;项目#3 '非线性变形'
: values=1
numid=6、iface=混频器、NAME="断点强制固件加载"
; type=Boolean,access=rw----- 、值=1
: values=off
numid=7,iface=Mixer,name='Speaker 配置文件 ID"
; type=integer、access=rw---- 、值=1、最小=0、最大=7、步进=0
: values=0
numid=10、iface=混频器、name='baic1_fmt'
; type=enomed,access=rw----- ,values=1、items=11
;项目#0 'PCMA'
;项目#1 'PCMB'
;项目#2 'DSPA'
;项目#3 "DSPB"
;项目#4 "TDM1A"
;项目#5 "TDM1B"
;项目#6 "TDM2A"
;项目#7 "TDM2B"
;项目#8'I2S'
;项目#9 '左侧'
;项目#10'右'
: values=8.

aplay 没有抱怨:

# aplay -l 
****播放硬件设备列表****
卡0:dv20 [d_v20]、设备0:DMA1播放(*)[]
子器件:0/1
子器件#0:子器件#0


#在/data/sound/test.wav 上播放

Playing wave '/data/audio/test.wav : Signed 16 bit Little Endian, Rate 44100 Hz, Mono.
但是、扬声器不会发出任何声音。
下面是寄存器转储(在播放时):
# i2cdump -y -f -r 0x00-0x7F 2 0x4f 
未指定大小(使用字节数据访问)
0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
00:00 00 00 20 C6 22 13 02 00 10 f1 46 44 04 05 06 ...????????
10:07 14 12 76 01 2e 60 0e 0c 00 fc A6 df ff 04???v?????`?????????????
20: 00 00 80 00 04 00 22 80 00 80 00 00 00 00 00 A2 .. ?
30:99 40 80 C4 4b 74 03 00 0d 0c be 58 68 08 10 00?@?kT??xH??。
40:76 41 D8 c0 10 21 00 b4 AC 00 00 00 00 00 00 VA??!??…
50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 f0 00 00 00 00 80 00 00 00 00 00 10 7b 00 ...?...?...?{.


我接下来应该尝试什么?

谢谢!

 Stephan

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

    Stephan、您好!  

    我注意到、寄存器0x08 将 RX_SCFG 设置为"00b =时隙等于 I2C 地址偏移的单声道"。 这意味着地址0x4F 器件正在尝试从 TDM 时隙4播放数据。 如果您只播放插槽0中有数据的单声道文件、则设备可能从没有数据的插槽中拉出。 您是否可以尝试设置  RX_SCFG = 01b?

    此致、
    Arthur

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

    您好、Arthur、

    感谢您的建议。 据我所知、程序编号4应该支持立体声下混音:

    使用该寄存器(通过混叠器选择它)时、我得到此寄存器转储:

    # i2cdump -y -f -r 0x00-0x7F 2 0x4f
    未指定大小(使用字节数据访问)
       0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
    00:00 00 00 20 C6 22 09 02 70 10 13 40 42 04 05 06 ...???p?@B???
    10:07 14 12 76 01 2e 60 0e 0c 00 fc A6 df ff 00???v???????`?????…
    20: 00 00 80 00 04 00 22 80 00 80 00 00 00 00 00 A2 .. ?
    30:99 40 80 C4 4b 74 0c 00 0d 0c be 58 68 08 10 00?@?kt???xH??。
    40:76 41 D8 c0 10 21 00 b4 AC 00 00 00 00 00 00 VA??!??…
    50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    70: 00 00 00 f0 00 00 00 00 00 80 00 00 00 00 00 10 13 00…………………………………………………………………………………………………………

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

    我能够探测 SBCLK1、FSYNC 和 SDIN1引脚、并且可以看到数据在 播放过程中流向芯片。 OUT_P 和 OUT_N 保持静默。

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

    Stephan、您好!  

    能否详细介绍一下您的时钟? 比如 BCLK/FSYNC 频率以及时隙和字宽?

    在您共享的两个寄存器转储中、我可以看到器件显示寄存器0x24 = 0x04 TDM 时钟错误。

    此致、
    Arthur

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

    您好、Arthur、

    我现在无法重现0x24 = 0x04 TDM 时钟错误。 这可能是我在回放期间切换程序之前实验的锁存中断。

    这是播放前的"干净"寄存器转储:

    # i2cdump -y -f -r 0x00-0x7F 2 0x4F
    未指定大小(使用字节数据访问)
       0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
    00:00 00 0e 20 C6 22 09 02 4a 10 13 02 00 04 06 ..? ???J????????
    10:07 7f 12 76 01 2e 60 0e 0c 00 fc A6 df ff 00???v??????`?????????????????????
    20:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    30:19 40 81 34 4b 74 0c 00 0d 0c 58 68 08 10 00?@?4Kt????XH??。
    40:76 41 00 c0 10 21 00 00 2c 00 00 00 00 00 00 00 00 VA…………………………………………………………
    50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    70: 00 00 00 f0 00 00 00 00 00 80 00 00 00 00 00 10 00 ...?...?...

    播放期间:

    # i2cdump -y -f -r 0x00-0x7F 2 0x4F
    未指定大小(使用字节数据访问)
       0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
    00:00 00 00 20 C6 22 09 02 70 10 13 40 42 04 05 06 ...???p?@B???
    10:07 14 12 76 01 2e 60 0e 0c 00 fc A6 df ff 00???v???????`?????…
    20: 00 00 00 00 00 00 00 32 80 00 40 00 00 00 00 00 00 00 A3 ...@. ?
    30:99 40 80 C4 4b 74 00 00 0d 0c be 58 68 08 10 00?@?kT..??xH??。
    40:76 41 D8 c0 10 21 00 91 2c 00 00 00 00 00 00 00 VA??!?…
    50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    70: 00 00 00 f0 00 00 00 00 00 80 00 00 00 00 00 10 4F 00 ...?...?

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

    [ 85.607703] tasdev-codec 2-004f:tasdevice_hw_params:采样率= 44100
    [ 85.614835] tasdev-codec 2-004f:tasdevice_hw_params:时隙宽度= 16
    [ 85.621584] tasdev-codec 2-004f:tasdevice_hw_params:bclk 速率= 1411200

    我在 BCLK 和 FSYNC 引脚上测量了频率、它们与驱动器所说的频率相匹配。

    在哪里可以找到单词宽度?

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

    Stephan、您好!

    字宽是数据槽内数据的宽度。 即每个时隙有多少位包含数据。

    对于这些设置、我认为没有任何问题。

    我想看看我们是否可以使器件上电并尝试使用一些非常简单的 I2C 配置。 您是否可以尝试运行以下脚本来查看器件是否可以播放?

    W 4F 00 00
    W 4F 7f 00
    W 4F 00 00
    W 4F 01 01
    W 4F 33 C4
    W 4F 02 00

    此致、

    Arthur

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

    Stephan、您好!  

    我们还可以在初始化期间通过完全初始化检查 VBAT 电源吗? 来自 VBAT POR 的中断标志之一。 我们可以确保在初始化过程中电源不会下降吗?

    再次检查所有电源也是不错的

    此致、
    Arthur

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

    、我认为我们可能误解了对 VBAT 的需求。 在我们的应用中、我们将 TAS2780更改为 TAS2563。 前者具有电源模式、在该模式下会在内部生成 VBAT  、但再次阅读本应用手册似乎即使我们使用"外部 PVDD 配置"、TAS2563也需要 VBAT。 是这样吗?

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

    (我们使用外部电源、没有电池、忘记在原来的帖子中提到这一点)

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

    你好、Steven、是的、我们需要正确的 VBAT。。。 我希望您无需重新调整设计。 我看到您有3.3V 的可用电压。 您是否能够将此电源轨连接到 VBAT 引脚?

    此致、
    Arthur

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

    我们现在正在进行返修、将3V3连接到 VBAT。

    我们需要转动板以使其成为永久的

    您是否看到原理图有任何其他问题?

    感谢您的帮助!

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

    Stephan、您好!  

    不、我看不出设计中有其他问题-抱歉、没有注意到没有与 VBAT 的外部连接

    此致、

    Arthur

x 出现错误。请重试或与管理员联系。