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.
工具与软件:
您好!
我目前正在嵌入式 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
Arthur Brown 、我认为我们可能误解了对 VBAT 的需求。 在我们的应用中、我们将 TAS2780更改为 TAS2563。 前者具有电源模式、在该模式下会在内部生成 VBAT 、但再次阅读本应用手册似乎即使我们使用"外部 PVDD 配置"、TAS2563也需要 VBAT。 是这样吗?
(我们使用外部电源、没有电池、忘记在原来的帖子中提到这一点)
你好、Steven、是的、我们需要正确的 VBAT。。。 我希望您无需重新调整设计。 我看到您有3.3V 的可用电压。 您是否能够将此电源轨连接到 VBAT 引脚?
此致、
Arthur
我们现在正在进行返修、将3V3连接到 VBAT。
我们需要转动板以使其成为永久的
您是否看到原理图有任何其他问题?
感谢您的帮助!
Stephan、您好!
不、我看不出设计中有其他问题-抱歉、没有注意到没有与 VBAT 的外部连接
此致、
Arthur