器件型号: AM625
大约两个月前、我在 BeagleBone Black (AM335x) 上使用 McASP 成功播放了 4 通道音频。 但是、由于 BeagleBone 是一个较旧的平台、我现在正在尝试在 PocketBeagle2 (AM6254) 上实现相同的功能、以打造更现代且成本更低的系统。
我注意到的一点是、与 BeagleBone Black 不同、PocketBeagle2 似乎没有板载音频 X-TAL (24.576MHz)、因此音频时钟的生成方式似乎有所不同。
我能够使音频播放正常工作,但播放速度完全不正确 — 音频在大约 1 秒内完成、这使我怀疑 McASP 由不正确的 AUX 时钟源或意外的时钟配置运行。 (当我明确设置时钟内 simple-audio-card,cpu,所以我只保留) sound-dai=<&mcasp0>;
https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/am62x/clocks.html#clocks-for-mcasp0-device
但是、即使检查时钟摘要并尝试几种调试方法后、似乎我的时钟配置仍未正确应用。
对于在作为主器件运行 McASP 时在 AM6254 上配置 McASP 音频时钟的正确方法有任何建议、我将不胜感激。
Results:
locofield@loco-adp:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: locofieldmcasp [locofield-mcasp], device 0: davinci-mcasp.0-a2b24xx-hifi a2b24xx.2-0068-0 [davinci-mcasp.0-a2b24xx-hifi a2b24xx.2-0068-0]
locofield@loco-adp:~$ speaker-test -c4 -r48000 -FS32_LE
speaker-test 1.2.14
Playback device is default
Stream parameters are 48000Hz, S32_LE, 4 channels
Using 16 octaves of pink noise
ALSA lib pcm_params.c:2235:(snd1_pcm_hw_refine_slave) Slave PCM not usable
Broken configuration for playback: no configurations available: Invalid argument
Setting of hwparams failed: Invalid argument
#include "k3-am6232-pocketbeagle2.dts"
/ {
compatible = "beagle,am62-pocketbeagle2", "ti,am625";
model = "BeagleBoard.org PocketBeagle2";
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "locofield-mcasp";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&dailink0_master>;
simple-audio-card,frame-master = <&dailink0_master>;
dailink0_master: simple-audio-card,cpu {
sound-dai = <&mcasp0>;
};
simple-audio-card,codec {
sound-dai = <&a2b24xx>;
};
};
};
...
&main_pmx0 {
mcasp0_pins: mcasp0-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x1a0, PIN_INPUT, 2) // P1.02 AUDIO EXT REFCLK0
AM62X_IOPAD(0x1a4, PIN_OUTPUT, 0) // ACLKX
AM62X_IOPAD(0x1a8, PIN_OUTPUT, 0) // AFSX
AM62X_IOPAD(0x194, PIN_OUTPUT, 0) // AXR3
AM62X_IOPAD(0x198, PIN_OUTPUT, 0) // AXR2
>;
};
...
&mcasp0 {
status = "okay";
#sound-dai-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&mcasp0_pins>;
op-mode = <0>;
tdm-slots = <2>;
slot-width = <32>;
num-serializer = <4>;
serial-dir = <0 0 1 1>;
clocks = <&k3_clks 190 0>, <&k3_clks 190 15>;
clock-names = "fck", "ahclkx";
assigned-clocks = <&k3_clks 190 0>, <&k3_clks 190 15>;
assigned-clock-parents = <&k3_clks 190 2>, <&k3_clks 190 18>;
assigned-clock-rates = <0>, <6144000>;
};
locofield@loco-adp:~$ sudo k3conf dump clock2 190
|------------------------------------------------------------------------------------------------|
| VERSION INFO |
|------------------------------------------------------------------------------------------------|
| K3CONF | (version 0.4-nogit built Thu Dec 04 20:24:55 UTC 2025) |
| SoC | AM62X SR1.0 |
| SoC identifiers | [0x3a247529] 0x1d123 Func-Safe Secure 'T' Grade -40 C to 125 C ALW Package |
| SYSFW | ABI: 4.0 (firmware version 0x000b '11.2.5--v11.02.05 (Fancy Rat))') |
| DM ABI Info | 3.0 |
| DM F/w rev | 11.2.5 |
| DM Component rev | RM/PM HAL:'v11.02.05' SCI_SERV:'MSDK.11.02.00.11' |
| F/w Capabilities | 0x7b7: GEN DEEP_SLP MCU_ONLY PART_IO DM_MGD_LPM IO_ISO DM-SPLT |
|------------------------------------------------------------------------------------------------|
|-----------------------------------------------------------------------------------------------------------------------------|
| Device ID | Clock ID | Clock Name | Status | Clock Frequency |
|-----------------------------------------------------------------------------------------------------------------------------|
| 190 | 0 | DEV_MCASP0_AUX_CLK | CLK_STATE_READY | 96000000 |
| 190 | 1 | DEV_MCASP0_AUX_CLK_PARENT_POSTDIV4_16FF_MAIN_2_HSDIVOUT8_CLK | CLK_STATE_READY | 100000000 |
| 190 | 2 | DEV_MCASP0_AUX_CLK_PARENT_POSTDIV1_16FFT_MAIN_1_HSDIVOUT6_CLK | CLK_STATE_READY | 96000000 |
| 190 | 3 | DEV_MCASP0_MCASP_ACLKR_PIN | CLK_STATE_READY | 0 |
| 190 | 4 | DEV_MCASP0_MCASP_ACLKR_POUT | CLK_STATE_READY | 0 |
| 190 | 5 | DEV_MCASP0_MCASP_ACLKX_PIN | CLK_STATE_READY | 0 |
| 190 | 6 | DEV_MCASP0_MCASP_ACLKX_POUT | CLK_STATE_READY | 0 |
| 190 | 7 | DEV_MCASP0_MCASP_AFSR_POUT | CLK_STATE_READY | 0 |
| 190 | 8 | DEV_MCASP0_MCASP_AFSX_POUT | CLK_STATE_READY | 0 |
| 190 | 9 | DEV_MCASP0_MCASP_AHCLKR_PIN | CLK_STATE_READY | 0 |
| 190 | 10 | DEV_MCASP0_MCASP_AHCLKR_PIN_PARENT_BOARD_0_EXT_REFCLK1_OUT | CLK_STATE_READY | 0 |
| 190 | 11 | DEV_MCASP0_MCASP_AHCLKR_PIN_PARENT_GLUELOGIC_HFOSC0_CLKOUT | CLK_STATE_READY | 25000000 |
| 190 | 12 | DEV_MCASP0_MCASP_AHCLKR_PIN_PARENT_BOARD_0_AUDIO_EXT_REFCLK0_OUT | CLK_STATE_READY | 0 |
| 190 | 13 | DEV_MCASP0_MCASP_AHCLKR_PIN_PARENT_BOARD_0_AUDIO_EXT_REFCLK1_OUT | CLK_STATE_READY | 0 |
| 190 | 14 | DEV_MCASP0_MCASP_AHCLKR_POUT | CLK_STATE_READY | 0 |
| 190 | 15 | DEV_MCASP0_MCASP_AHCLKX_PIN | CLK_STATE_READY | 0 |
| 190 | 16 | DEV_MCASP0_MCASP_AHCLKX_PIN_PARENT_BOARD_0_EXT_REFCLK1_OUT | CLK_STATE_READY | 0 |
| 190 | 17 | DEV_MCASP0_MCASP_AHCLKX_PIN_PARENT_GLUELOGIC_HFOSC0_CLKOUT | CLK_STATE_READY | 25000000 |
| 190 | 18 | DEV_MCASP0_MCASP_AHCLKX_PIN_PARENT_BOARD_0_AUDIO_EXT_REFCLK0_OUT | CLK_STATE_READY | 0 |
| 190 | 19 | DEV_MCASP0_MCASP_AHCLKX_PIN_PARENT_BOARD_0_AUDIO_EXT_REFCLK1_OUT | CLK_STATE_READY | 0 |
| 190 | 20 | DEV_MCASP0_MCASP_AHCLKX_POUT | CLK_STATE_READY | 0 |
| 190 | 21 | DEV_MCASP0_VBUSP_CLK | CLK_STATE_READY | 250000000 |
|-----------------------------------------------------------------------------------------------------------------------------|
locofield@loco-adp:~$ cat /sys/kernel/debug/pinctrl/*/pinmux-pins | grep "mcasp"
pin 101 (PIN101): 2b00000.audio-controller (GPIO UNCLAIMED) function mcasp0-default-pins group mcasp0-default-pins
pin 102 (PIN102): 2b00000.audio-controller (GPIO UNCLAIMED) function mcasp0-default-pins group mcasp0-default-pins
pin 104 (PIN104): 2b00000.audio-controller (GPIO UNCLAIMED) function mcasp0-default-pins group mcasp0-default-pins
pin 105 (PIN105): 2b00000.audio-controller (GPIO UNCLAIMED) function mcasp0-default-pins group mcasp0-default-pins
pin 106 (PIN106): 2b00000.audio-controller (GPIO UNCLAIMED) function mcasp0-default-pins group mcasp0-default-pins