主题中讨论的其他器件: TLV320AIC3254、 TPS65910
工具/软件:Linux
您好:
我们正在开发基于 AM3354的定制板。
我们的 BSP 是 ti-processor-sdk-linux-am335x-evm-03.02.00.05
我们使用 TLV320AIC3254作为编解码器芯片、并将其连接到 McASP0上的 AM3354。
I2S 总线的硬件连接如下所示:
AM3354 TLV320AIC3254
McASP0_ACLKX <- BCLK McASP 发送位时钟。
McASP0_FSX <- WCLK McASP 发送帧同步或左/右时钟(LRCLK)
McASP0_AXR0 -> DIN
McASP0_AXR1 <- DOUT
对于 TLV320AIC3254。我们将麦克风连接到 IN1L 和 IN1R。 我们有一个耳机连接到 TLV320AIC3254的 HPL 和 HPR
下面是我的 DTS 文件配置:
听起来{
兼容="简单音频卡";
simple-audio-card、name ="tlv320aic32x4";
simple-audio-card、小工具=
"耳机"、"耳机插孔"、
"线路"、"线路输入";
简单音频卡,路由=
"耳机插孔"、 "HPL"、
"耳机插孔"、 "HPR"、
"IN1_L"、 "线路输入"、
"IN1_R"、 "线路输入";
simple-audio-card、format ="I2S";
simple-audio-card、bitclock-master =<&sound_master>;
simple-audio-card、frame-master =<&sound_master>;
简单音频卡、位时钟反转;
简单音频卡、CPU{
Sound-Dai =<&McASP0>;
};
sound_master:simple-audio-card、codec{
sound-dai =<&tlv320aic32x4>;
系统时钟频率=<12000000>;
};
};
…
i2c1_pins:pinmux_i2c1_pins{
pinctrl-single、pins =<
0x168 (PIN_INPUT_PULLUP | MUX_MODE3) /* uart0_CTSN.i2c1_sda AM335X_I2C1_SDA *
0x16C (PIN_INPUT_PULLUP | MUX_MODE3) /* uart0_rtsn.i2c1_SCL AM335X_I2C1_SCL *
>;
};
(笑声)
McASP0_Pins:McASP0_Pins{
pinctrl-single、pins =<
AM33XX_IOPAD (0x9A8、PIN_INPUT_PULLUGDOWN | MUX_MODE0)/* McASP0_axr1.McASP0_axr1 AM335X_McASP0_AXR1 *
AM33XX_IOPAD (0x998、PIN_INPUT 下拉| MUX_MODE0)/* McASP0_axr0.McASP0_axr0 AM335X_McASP0_AXR0 *
AM33XX_IOPAD (0x994、PIN_INPUT_PULLUGDOWN | MUX_MODE0)/* McASP0_FSX.McASP0_FSX AM335X_McASP0_FSX *
AM33XX_IOPAD (0x990、PIN_INPUT_PULLDOWN | MUX_MODE0)/* McASP0_aclkx.McASP0_aclkx AM335X_McASP0_ACLKX *
>;
};
…
i2c1{(&I)
pinctrl-names ="default";
pinctrl-0 =<&i2c1_PINs>;
状态="正常";
时钟频率=<100000 >;
tlv320aic32x4:tlv320aic32x4@18{
#sound-di-cells =<0>;
兼容="ti、tlv320aic32x4";
reg =<0x18>;
};
};
(笑声)
&McASP0 {
#sound-di-cells =<0>;
pinctrl-names ="default";
pinctrl-0 =<&McASP0_PINs>;
状态="正常";
OP-MODE =<0>; /* MCASP_IIS_MODE */
TDM-SLOTS =<2>; /*表示通过一个串行器发送或接收的通道数。 *
serial-dir =< /* 0:非活动、1:TX、2:Rx *
1 2 0 0
>;
tx-num-evt =<32>;
Rx-num-evt =<32>;
};
所以。
启动 Linux 后、我们可以看到如下内核日志:
ASOC-simple-card sound:tlv320aic32x4-hifi <->48038000.McASP 映射正常
ALSA 设备列表:
0:AM335x-EVM
因为我发现 alsa-lib 和 alsa-utils 已经在 ti SDK rootfs 中就位。
在 asound.conf 上没有任何配置
我刚才这么做了:
root@AM335x-EVM:/home# aplay -vv s.wav
播放波形's.wav':有符号16位小端序、速率44100Hz、立体声
插入 PCM:硬件 PCM 卡0 "tlv320aic32x4"设备0子设备0
其设置为:
流: 播放
访问 :rw_interleaved
格式 :S16_LE
子格式 :标准
频道 :2.
价格 :44100
确切价格 : 44100(44100/1)
msbits :16.
Buffer_size :22052
Period_size :5513
Period_Time :125011
tstamp_mode :无
tstamp_type :单调
Period_step :1.
AVAIL_MIN :5513
Period_event:0
START_THRESHOLD :22052
STOP_THRESHOLD :22052
Silence_threshold:0
Silence_size:0
边界 :1445199872
appl_ptr :0
HW_PTR :0
最大峰值(11026个样本):0x00000000 #0%
最大峰值(11026个样本):0x00000002 # 0%
最大峰值(11026个样本):0x00000004 # 0%
最大峰值(11026个样本):0x00000005 # 0%
最大峰值(64个样本):0x00000004 # 0%
aplay:PCM_WRITE:1940:写入错误:输入/输出错误
耳机发出声音...一段时间后、不会发出声音。aplay 刚刚停止、出现以下错误 "aplay:PCM_WRITE:1940:WRITE ERROR:input/output error"(aplay:PCM_WRITE:1940:写入错误:输入/输出错误)
下面是我获得的一些附加信息:
root@AM335x-EVM:/home# ls -l /dev/snd
drwxr-xr-x 2 root 用户60 Feb. 1008:57 by-path
crw-rw-- 1根 音频 116, 2月10日08:57 controlC0
crw-rw-- 1根 音频 116, 2月4日1008:57pcmC0D0c
crw-rw-- 1根 音频 116, 2月3日1008:57pcmC0D0p
crw-rw-- 1根 音频 116, 2月33日1008:57计时器
root@AM335x-EVM:/home# aplay -l
****播放硬件设备列表****
卡0:tlv320aic32x4 [tlv320aic32x4],设备0:davinci-mcasp.0-tlv320aic32x4-htlifi v320aic32x4-hife-0 []
子设备:1/1
子设备#0:子设备#0
root@AM335x-EVM:/home# aplay -L
null
丢弃所有样本(回放)或生成零样本(捕获)
脉冲
PulseAudio Sound 服务器
默认:card=tlv320aic32x4
tlv320aic32x4、
默认音频设备
sysdefault:card=tlv320aic32x4
tlv320aic32x4、
默认音频设备
根目录@AM335x-EVM:/home# arecord -l
****捕获硬件设备列表****
卡0:tlv320aic32x4 [tlv320aic32x4],设备0:davinci-mcasp.0-tlv320aic32x4-htlifi v320aic32x4-hife-0 []
子设备:1/1
子设备#0:子设备#0
root@AM335x-EVM:/home# cat /proc/asound/card0/pcm0c/info
卡:0
器件:0
子设备:0
流:捕获
ID:Davinci-McASP/0-tlv320aic32x4-hifi tlv320aic32x4-hifi-0
姓名:
子名称:子设备#0
类:0
子类:0
subdevices_count:1.
子设备_可用:1.
root@AM335x-EVM:/home# cat /proc/asound/card0
ID pcm0c/pcm0p/
root@AM335x-EVM:/home# cat /proc/asound/card0/pcm0p
信息 子0/
root@AM335x-EVM:/home# cat /proc/asound/card0/pcm0p/info
卡:0
器件:0
子设备:0
流:播放
ID:Davinci-McASP/0-tlv320aic32x4-hifi tlv320aic32x4-hifi-0
姓名:
子名称:子设备#0
类:0
子类:0
subdevices_count:1.
子设备_可用:1.
根目录@AM335x-EVM:/home# AMI
amidi amixer
root@AM335x-EVM:/home# amixer
简单混频器控制'PCM'、0
功能:pvolume
播放频道:左前-右前
限制:回放0 - 175
单声道:
左前:回放87 [50%][-20.00dB]
右前:回放87 [50%][-20.00dB]
简单混频器控制'IC PGA'、0
功能:psswitch
播放频道:左前-右前
单声道:
左前:回放[关闭]
右前:回放[关闭]
简单混频器控制'ADC 电平'、0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 64
左前:24 [38%][0.00dB]
右前:24 [38%][0.00dB]
简单混频器控制'ADCFGA Left Mute '、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[ON]
简单混频器控制'ADCFGA 右静音'0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[ON]
简单混频器控制'AGC 攻击时间'0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 31
左前:0 [0%]
右前:0 [0%]
简单混频器控制'AGC 衰减时间'、0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 31
左前:0 [0%]
右前:0 [0%]
简单混频器控制"AGC 增益迟滞"、0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 3
左前:0 [0%]
右前:0 [0%]
简单混频器控制'AGC 滞后'、0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 3
左前:0 [0%]
右前:0 [0%]
简单混频器控制'AGC LEFT'、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制'AGC Max PGA'、0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 127
左前:127 [100%]
右前:127 [100%]
简单混频器控制"AGC 噪声去抖"、0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 31
左前:0 [0%]
右前:0 [0%]
简单混频器控制'AGC 噪声阈值'、0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 31
左前:0 [0%]
右前:0 [0%]
简单混频器控制'AGC right'、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制'AGC 信号去抖'、0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 15
左前:0 [0%]
右前:0 [0%]
简单混频器控制'AGC 目标电平'、0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 7
左前:0 [0%]
右前:0 [0%]
简单混频器控制'HP DAC'、0
功能:psswitch
播放频道:左前-右前
单声道:
左前:回放[关闭]
右前:回放[关闭]
简单混频器控制'HP Driver Gain'、0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 35
左前:6 [17%][0.00dB]
右前:6 [17%][0.00dB]
简单混频器控制'HPL 输出混频器 IN1_L'、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制'HPL 输出混频器 L_DAC'、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制'HPR 输出混频器 IN1_R'、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制'HPR 输出混频器 R_DAC'、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制'LO DAC'、0
功能:psswitch
播放频道:左前-右前
单声道:
左前:回放[关闭]
右前:回放[关闭]
简单混频器控制'LO 驱动器增益'0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 35
左前:6 [17%][0.00dB]
右前:6 [17%][0.00dB]
简单混频器控制'LOL 输出混频器 L_DAC'、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制"LOR 输出混频器 R_DAC"、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制'Left Input Mixer IN1_L P'、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制"左输入混频器 IN2_L P"、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制'Left Input Mixer in3_L P'、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制'PGA 电平'、0
功能:卷
播放频道:左前-右前
捕获信道:左前-右前
限值:0 - 95
左前:0 [0%][0.00dB]
右前:0 [0%][0.00dB]
简单混频器控制"右输入混频器 IN1_R P"、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制"右输入混频器 IN2_R P"、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
简单混频器控制'Right Input Mixer in3_R P'、0
功能:pswitch psswitch 已连接
回放频道:单声道
单声道:回放[关闭]
我对 ALSA 或内核的音频驱动程序部分并不熟悉、因此我不知道从何处开始处理此错误。
大家可以帮助吗?
提前非常感谢!!
信标
