工具/软件:
大家好!
我将联系 TI 音频专家、为在 AM6254设计上集成 TAS5802提供一些指导。
我们的系统包含一个位于 I2C-0总线上的 TAS5802、其 I2C 地址设置为0x54。 编解码器由配置为主器件的 MCASP2驱动、并通过 AM6254的 EXT_AUDIO_REFCLK0输入馈送外部24.576MHz 时钟。
到目前为止、我能够配置时钟、在 TI 的帮助下、我可以看到 MCASP2通过示波器在 LRCLK 和 BCLK 上驱动48kHz 音频。 有关更多信息、请参阅 该主题
因此、我按如下方式配置了器件树以启动 TAS5802:
/* NOTE: ball names, refer to AM6254ALW */ &main_pmx0 { board_pins_codec_control: pp1-pins-codec-control { pinctrl-single,pins = < AM62X_IOPAD(0xf40b4, PIN_OUTPUT, 7) /* [Speaker_Audio_PDN] (K24) GPMC0_CSn3.GPIO0_44 */ AM62X_IOPAD(0xf40b0, PIN_INPUT, 7) /* [Speaker_Audio_FAULT] (K22) GPMC0_CSn2.GPIO0_43 */ >; }; }; &main_i2c0 { /* On-board audio amp: TAS5802 */ tas5802: tasdevice@54 { compatible = "ti,tas5802"; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&board_pins_codec_control>; reg = <0x54>; // ADR had 4.7k to VDD #sound-dai-cells = <0>; interrupt-parent = <&main_gpio0>; interrupts = <43 IRQ_TYPE_EDGE_FALLING>; reset-gpios = <&main_gpio0 44 GPIO_ACTIVE_HIGH>; }; }; &mcasp2 { status = "okay"; #sound-dai-cells = <0>; /* CLOCKS: * BOARD_AUDIO_EXT_REFCLK0 <192 12> --> AHCLKR IN <192 9> * BOARD_AUDIO_EXT_REFCLK0 <192 18> --> AHCLKX IN <192 15> * from TI E2E: ???? <192 30> --> ???? <192 27> * REFCLK runs at 24,576 MHz */ assigned-clocks = <&k3_clks 192 9>, <&k3_clks 192 15>, <&k3_clks 192 27>; assigned-clock-parents = <&k3_clks 192 12>, <&k3_clks 192 18>, <&k3_clks 192 30>; assigned-clock-rates = <24576000>, <24576000>, <0>; pinctrl-names = "default"; pinctrl-0 = <&pp1_pins_mcasp2>; op-mode = <0>; /* MCASP_IIS_MODE */ tdm-slots = <2>; serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */ 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >; tx-num-evt = <0>; rx-num-evt = <0>; }; / { board_speakers: sound { compatible = "simple-audio-card"; simple-audio-card,name = "Internal-Speaker"; simple-audio-card,widgets = "Speaker", "Internal Speaker"; simple-audio-card,routing = "Internal Speaker", "OUT"; simple-audio-card,bitclock-master = <&mcasp2>; simple-audio-card,frame-master = <&mcasp2>; simple-audio-card,format = "i2s"; simple-audio-card,bitclock-inversion; simple-audio-card,cpu { sound-dai = <&mcasp2>; system-clock-frequency = <24576000>; }; simple-audio-card,codec { sound-dai = <&tas5802>; }; }; };
此外、我还使用了 tasdevice out-of-tree 驱动程序附带的工具、打开了该工具 TAS5802-1amp-reg.json 、将其另存为 tas5802-1amp-reg.bin 并将其放在目标系统的/usr/lib/firmware 中。
使用此设置时、我遇到了一些需要帮助解决的问题。
引导期间将打印以下消息(仅显示 tasdevice 条目):
[ 5.102786] TASDEVICE-CODEC 3-0054:主器件= 0x54
[ 5.112888] TASDEVICE-CODEC 3-0054:tasdevice_i2c_probe:GPIO 305请求错误
[5.627002] tasdevice-codec 3-0054:tasdev:regbin_ready start
[ 5.633031] TASDEVICE-CODEC 3-0054:nConfig = 4.
[ 5.641577] tasdevice-codec 3-0054:IMG_SZ = 884 TOTAL_CONFIG_SZ = 592偏移量= 292
[ 5.649742] tasdevice-codec 3-0054:select_cfg_blk:profile_conf_id = 0
[ 5.656463] TASDEVICE-CODEC 3-0054:select_cfg_blk:CONF 0、块类型:pre_power_up 器件 idx = 0x00
[5.677230] tasdevice-codec 3-0054:init id = 0!
[ 5.684789] tasdevice-codec 3-0054:固件初始化完成
运行 avplay 或 speaker-test 时、我会在控制台上看到以下输出:
[45.300126] tasdevice-codec 3-0054:tasdevice_hw_params:播放
[45.306717] tasdevice-codec 3-0054:tasdevice_hw_params:BCLK 速率= 1536000通道= 2采样率= 48000时隙宽度= 16
[45.347272] tasdevice-codec 3-0054:PowerControl_routy:1310:enter
[45.353665] tasdevice-codec 3-0054:select_cfg_blk:profile_conf_id = 0
[ 45.360287] TASDEVICE-CODEC 3-0054:select_cfg_blk:CONF 0、Block type:pre_power_up device idx = 0x00
[45.378850] tasdevice-codec 3-0054:PowerControl_routy:1319:离开
引脚12 (nPDN)为高电平、 LRCLK 和 BCLK 分别具有48kHz 和1.536MHz 频率。 我没有通过发言者的声音、但我还不相信这是一个硬件问题。
我尝试删除了中断说明符和复位 GPIO (将引脚设为高电平)。 这些都不会产生效果。
我可以采取哪些步骤来了解此设置中缺少哪些内容?
谢谢!
António μ s