电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
创作
电子发烧友网>电子资料下载>类型>参考设计>ADAU1701声音音频系统Linux驱动器

ADAU1701声音音频系统Linux驱动器

2021-04-21 | pdf | 76.07KB | 次下载 | 3积分

资料介绍

This version (08 Jun 2016 20:11) was approved by Lars-Peter Clausen.The Previously approved version (12 Oct 2015 16:45) is available.Diff

ADAU1701 Sound Audio System Linux Driver

Supported Devices

Reference Circuits

Evaluation Boards

Description

ADAU1701 is a SigmaDSP with DACs and ADCs,and support both analog and digital inputs/outputs(I2S). This driver is intended to drive ADAU1701 through I2S, so we adapt it into ASoC framework and treat it as an audio codec, also it needs to include firmware loading function to download firmware blob at the initializing time.

Source Code

Status

Source Mainlined?
git Yes

Files

Example platform device initialization

Below is an example which is used on Blackfin board file.

static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
 
	[--snip--]
#if defined(CONFIG_SND_SOC_ADAU1701) || defined(CONFIG_SND_SOC_ADAU1701_MODULE)
	{
		I2C_BOARD_INFO("adau1701", 0x34),
	},
#endif
	[--snip--]
}
static int __init stamp_init(void)
{
	[--snip--]
	i2c_register_board_info(0, bfin_i2c_board_info,
				ARRAY_SIZE(bfin_i2c_board_info));
	[--snip--]
 
	return 0;
}
arch_initcall(board_init);

ASoC DAPM widgets

Name Description
OUT0 VOUT0 DAC Output
OUT1 VOUT1 DAC Output
OUT2 VOUT2 DAC Output
OUT3 VOUT3 DAC Output
IN0 Analog Audio Input 0 (ADC0)
IN1 Analog Audio Input 1 (ADC1)

ALSA controls

Name Description
Master Capture Switch Mute/Unmute the ADCs

DAI Configuration

The CODEC driver register one DAI called “adau1701”.

Supported DAI formats

Name Supported by driver Description
SND_SOC_DAIFMT_I2S yes I2S mode
SND_SOC_DAIFMT_RIGHT_J yes Right Justified mode
SND_SOC_DAIFMT_LEFT_J yes Left Justified mode
SND_SOC_DAIFMT_DSP_A no data MSB after FRM LRC
SND_SOC_DAIFMT_DSP_B no data MSB during FRM LRC
SND_SOC_DAIFMT_AC97 no AC97 mode
SND_SOC_DAIFMT_PDM no Pulse density modulation
SND_SOC_DAIFMT_NB_NF yes Normal bit- and frameclock
SND_SOC_DAIFMT_NB_IF yes Normal bitclock, inverted frameclock
SND_SOC_DAIFMT_IB_NF yes Inverted frameclock, normal bitclock
SND_SOC_DAIFMT_IB_IF yes Inverted bit- and frameclock
SND_SOC_DAIFMT_CBM_CFM yes Codec bit- and frameclock master
SND_SOC_DAIFMT_CBS_CFM no Codec bitclock slave, frameclock master
SND_SOC_DAIFMT_CBM_CFS no Codec bitclock master, frameclock slave
SND_SOC_DAIFMT_CBS_CFS yes Codec bit- and frameclock slave

Sysclk Configuration

The sysclk source can be either be generated using the internal oscillator and an external crystal, or can come from an external clock signal.

enum adau1701_clk_src {
    ADAU1701_CLK_SRC_OSC,
    ADAU1701_CLK_SRC_MCLK,
};

The sysclk rate is configured using the PLL_MODE0 and PLL_MODE1 pins. Though for completeness it should also be passed to snd_soc_dai_set_sysclk.

Example DAI Configuration

static int bfin_eval_adau1701_hw_params(struct snd_pcm_substream *substream,
	struct snd_pcm_hw_params *params)
{
	struct snd_soc_pcm_runtime *rtd = substream->private_data;
	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
	struct snd_soc_dai *codec_dai = rtd->codec_dai;
	int ret;
 
	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |
			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
	if (ret)
		return ret;
 
	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |
			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);
	if (ret)
		return ret;
 
	ret = snd_soc_dai_set_sysclk(codec_dai, ADAU1701_CLK_SRC_OSC, 12288000,
			SND_SOC_CLOCK_IN);
 
	return ret;
}
 
static struct snd_soc_ops bfin_eval_adau1701_ops = {
	.hw_params = bfin_eval_adau1701_hw_params,
};
 
static struct snd_soc_dai_link bfin_eval_adau1701_dai = {
	.name = "adau1701",
	.stream_name = "adau1701",
	.cpu_dai_name = "bfin-i2s.0",
	.codec_dai_name = "adau1701",
	.platform_name = "bfin-i2s-pcm-audio",
	.codec_name = "adau1701.0-0034",
	.ops = &bfin_eval_adau1701_ops,
};

Generate the firmware file

In order to use the SigmaDSP core of the ADAU1701 you need to provide a firmware file. Please refer to the SigmaDSP Firmware Utility for Linux page on how to generate a firmware file. The firmware file for ADAU1701 driver has to be named adau1701.bin.

ADAU1701 evaluation board driver

There is no dedicated Blackfin STAMP evaluation board for the ADAU1701. During test and driver development we used the EVAL-ADAU1701MINIZ board.

It can be easily wired to the Blackfin STAMP SPORT header.

Source Code

Status

Source Mainlined?
git Yes

Files

Kernel configuration

Device Drivers  --->
[*] I2C support  --->
[*]   I2C Hardware Bus support  --->
***     I2C system bus drivers (mostly embedded / system-on-chip) ***
<*>       Blackfin TWI I2C support
(100)     Blackfin TWI I2C clock (kHz)

Enable ALSA SoC evaluation board driver:

Device Drivers  --->
 Sound card support  --->
   Advanced Linux Sound Architecture  --->
     ALSA for SoC audio support  --->
       Support for the EVAL-ADAU1701 boards on Blackfin eval boards

Hardware configuration

TODO

Driver testing

Load the driver and make sure the sound card is properly instantiated.

This specifies any shell prompt running on the target

root:/> modprobe snd-bf5xx-i2s
root:/> modprobe snd-soc-bf5xx-i2s
root:/> modprobe snd-soc-adau1701
root:/> modprobe snd-soc-bfin-eval-adau1701
dma rx:3 tx:4, err irq:45, regs:ffc00800
asoc: ADAU1701 <-> bf5xx-i2s mapping ok

This specifies any shell prompt running on the target

root:/> modprobe snd-pcm-oss
root:/> tone
TONE: generating sine wave at 1000 Hz...

root:/> arecord -f cd | aplay
Recording WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

More information

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1电子电路原理第七版PDF电子教材免费下载
  2. 0.00 MB  |  1491次下载  |  免费
  3. 2单片机典型实例介绍
  4. 18.19 MB  |  95次下载  |  1 积分
  5. 3S7-200PLC编程实例详细资料
  6. 1.17 MB  |  27次下载  |  1 积分
  7. 4笔记本电脑主板的元件识别和讲解说明
  8. 4.28 MB  |  18次下载  |  4 积分
  9. 5开关电源原理及各功能电路详解
  10. 0.38 MB  |  11次下载  |  免费
  11. 6100W短波放大电路图
  12. 0.05 MB  |  4次下载  |  3 积分
  13. 7基于单片机和 SG3525的程控开关电源设计
  14. 0.23 MB  |  4次下载  |  免费
  15. 8基于AT89C2051/4051单片机编程器的实验
  16. 0.11 MB  |  4次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234313次下载  |  免费
  3. 2PADS 9.0 2009最新版 -下载
  4. 0.00 MB  |  66304次下载  |  免费
  5. 3protel99下载protel99软件下载(中文版)
  6. 0.00 MB  |  51209次下载  |  免费
  7. 4LabView 8.0 专业版下载 (3CD完整版)
  8. 0.00 MB  |  51043次下载  |  免费
  9. 5555集成电路应用800例(新编版)
  10. 0.00 MB  |  33562次下载  |  免费
  11. 6接口电路图大全
  12. 未知  |  30320次下载  |  免费
  13. 7Multisim 10下载Multisim 10 中文版
  14. 0.00 MB  |  28588次下载  |  免费
  15. 8开关电源设计实例指南
  16. 未知  |  21539次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935053次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537793次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234313次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191183次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183277次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138039次下载  |  免费