音頻CODEC ES8374

音頻CODEC  ES8374
型號:ES8374
品牌:順芯
原產地:中國
類別:電子、電力 / 電子元器件 / 集成電路
標籤︰ES8374 , 音頻CODEC帶功放 , 蘇州順芯代理商
單價: ¥2 / 件
最少訂量:1 件

產品描述

主要功能:

高效能低功耗音頻ADCDAC ( 24,896千赫采樣頻率)

•256/384Fs,USB 12/24 MHz鎖相環寬範圍系統時鐘

•i2S / PCMi2C主或從串行數據端口

標準音頻時鐘輸出

兩雙模擬輸入                •Mono模擬輸出

低噪聲前置放大器            •降噪濾波器

自動增益控制(ALC)和噪聲門    •支持模擬和數字麥克風

動態範圍壓縮                •低待機電流 (-40°C ~ +85°C)

 

主要應用:

汽車DVR /IP camera

一、Audio ES8374文件建立與編譯

驅動文件路徑:peripheral\audio

建立Audio_ES8374.c、Audio_ES8374.h

添加kconfig 選項

config AUDIO_ES8374

         bool "ESES8374"

         default n

Audio ES8374 編譯:

ifdef CONFIG_AUDIO_ES8374

libperipheral-objs +=$(AUDIOPATH)/Audio_ES8374.o

endif

二、Audio ES8374原理圖

Audio ES8374 為內置功放,主要接口為i2c 、i2s。

CE 引腳上拉,i2c 地址為0x22。CE引腳下拉。I2c地址為0x20

I2c 接口連接A12  i2c 2通道

MCLK = 12.288MHz, LRCK(fs) = 48KHz(MCLK/256),SCLK = 3.072MHz

 

三、Audio ES8374相關配置

AudioES8374寄存器初始化的配置  :

void UserAudioCodec_Init(void)

{

   /* Audio CODEC Setting */

   GPIO_ConfigOutput(GPIO_PIN_20, GPIO_LEVEL_LOW);

   KAL_TaskSleep(1);

   GPIO_ConfigOutput(GPIO_PIN_20, AMBA_GPIO_LEVEL_HIGH);

   KAL_TaskSleep(1);

   Audio_CodecInit(AUDIO_CODEC_0);

   Audio_CodecModeConfig(AUDIO_CODEC_0, I2S);

   Audio_CodecFreqConfig(AUDIO_CODEC_0, 48000);

   /* A12 dragonfly bub has only MIC-IN now */

   Audio_CodecSetInput(AUDIO_CODEC_0, AUDIO_CODEC_MIC_IN);

   Audio_CodecSetOutput(AUDIO_CODEC_0,AUDIO_CODEC_SPEAKER_OUT);

   Audio_CodecSetMute(AUDIO_CODEC_0, 0);

}

采樣率配置

Audio_CodecFreqConfig(AUDIO_CODEC_0, 48000);

參數 Freq:采樣率的參數設置

通過該接口來調整芯片采樣率參數。如48kHz,32kHz,16Khz,12khz等

通道模式設置

Audio_CodecModeConfig(AUDIO_CODEC_0, I2S);

參數 Mode:音頻傳輸模式選擇

通過該接口選擇音頻數據傳輸方式,如LeftJustified,RightJustified,MSBExtend,I2S

輸出線路控制

Audio_CodecSetOutput(AUDIO_CODEC_0,AUDIO_CODEC_SPEAKER_OUT)

參數OutputMode :AUDIO_CODEC_LINE_OUT  外接功放

                      AUDIO_CODEC_SPEAKER_OUT  外接揚聲器

Line out輸出的都是沒經過或者很少經過芯片過濾的原始數據,聲音的保真度較高,但是經由Lineout輸出的聲音大多不能通過機器本身控制音量

輸入線路控制

Audio_CodecSetInput(AUDIO_CODEC_0,AUDIO_CODEC_MIC_IN);

參數InputMode:AUDIO_CODEC_LINE_IN 接音頻採集設備

                   AUDIO_CODEC_MIC_IN  MIC輸入打開

Line in線路輸入,通過其他音頻設備採集音頻信號輸入

 

四、Audio ES8374I2C讀寫

I2C讀:

int ES8374_Read(UINT16 Addr)

{

    UINT8 RxDataBuf = 0;

    UINT16 WorkUINT16[3];

    WorkUINT16[0] =I2C_RESTART_FLAG | ES8374_I2C_ADDR;

    WorkUINT16[1] =Addr;                                          

    WorkUINT16[2] =I2C_RESTART_FLAG | ES8374_I2C_ADDR | 0x01;

 

    if ((Addr <ES8374_REG_NUM)||(Addr==0x72)||(Addr==0x6F)){

        if(I2C_ReadAfterWrite(I2C_CHANNEL_, I2C_SPEED_STANDARD,

                                  3, WorkUINT16, 1, &RxDataBuf, 5000) != OK) {

            return NG;

        }

        return RxDataBuf;

    } else {

        CODEC_DBG("%s:Addr: %d, Data: %d fail!", __func__, Addr, RxDataBuf);

        return NG;}

}

 

 

I2C寫:

int ES8374_Write(UINT16 Addr, UINT16 Data)

{

    UINT8 TxDataBuf[2];

    int rval = 0;

    TxDataBuf[0] =(UINT8)Addr;

    TxDataBuf[1] =(UINT8)(Data);

       

if ((Addr < ES8374_REG_NUM)||(Addr==0x72)||(Addr==0x6F))

        {

            rval =I2C_Write(I2C_CHANNEL_, I2C_SPEED_STANDARD,

            ES8374_I2C_ADDR, 2, TxDataBuf,AMBA_KAL_WAIT_FOREVER);

            return rval;

         } else{

            CODEC_DBG("[ES8374_Write]:Wrong address number! %d", Addr);

            return NG;}

}

五、Audio ES8374I2S數據傳輸

I2S 只負責傳輸音頻數據,從DSP DMA 通過i2s 發送至ES8374 解碼后播放。

 

 

六、Audio ES8374驅動框架分析

基於Amba A12 Audio 框架分析:

 

 

Audio部分SDK已經封裝一層,我們需要按照SDK框架進行填充不同音頻codec的設備驅動,在框架中按照不同功能將音頻的實現分成了3層,驅動層(driver)、中間層(Middle)、應用層(Application),系統架構框圖見上圖

Bsp層:適配硬件資源以及初始化codec。

Driver層:ES8374音頻驅動,使codec工作起來。

Middle層:提供Application層的調用接口,

Application層:基於Middle層的應用,根據上層的需求去調用Middle層相應的接口,完成相應的動作。測試需求、播放等。

 

 

 

 

七、Audio ES8374播放與錄音:

播放:rom音源

<file>app/PowerOn.pcm<alias>PowerOn.pcm</alias></file>

   <file>app/PowerOff.pcm<alias>PowerOff.pcm</alias></file>

播放參數設置:

BeepMsg.MessageType = APPLIB_AUDIO_BEEP_TASK_MSG_PLAY_BEEP;

strncpy(BeepMsg.beepInfo.Fn,BeepFn[beep_id],sizeof(BeepMsg.beepInfo.Fn));

BeepMsg.beepInfo.BeepType = BEEP_FROM_FILE;

BeepMsg.beepInfo.RawPcm = NULL;

BeepMsg.beepInfo.RawSize = 0;

BeepMsg.beepInfo.SrcChannelMode = 2;

BeepMsg.beepInfo.SrcSampleRate = 48000;

BeepMsg.beepInfo.DstSampleRate =BeepMsg.beepInfo.SrcSampleRate;

BeepMsg.beepInfo.BeepIndex = beep_id;

ReturnValue = AppLibAudio_SendMsg(&BeepMsg,AMBA_KAL_NO_WAIT);

目前,播放的音源采樣頻率支持12k/24k/48k這三種。

支持語音提示信息播放格式:WAV格式、RAW格式、PCM格式。

錄音:

錄音采樣頻率也同樣為48k HZ,由 LRCK(fs) = 48KHz決定。

MIC靜音mute 功能,是由底層直接過濾完成。

 

 

八、Audio ES8374 調試總結:

1.檢查几組電源是否正常供應。

2.調試I2C 通訊:注意排除i2c 總線上的其它設備干擾、確認i2c地址是否正確、硬件上i2c 是否需濾波和上拉,示波器測量時鐘是否正常,最後檢查i2c 數據是否與波形一致。

3. 調試I2S 通訊,示波器測量時鐘是否正常。MCLK =12.288MHz, LRCK(fs) = 48KHz(MCLK/256), SCLK = 3.072MHz

4. 測試播放音源、調節mic音量、調節speak音量、自動增益、錄音回放波形分析等。

音頻CODEC  ES8374 1

會員信息

深圳市彩世界電子科技有限公司
國家/地區︰广东省深圳市
經營性質︰貿易商
聯繫電話︰13423956412
聯繫人︰李先生 (銷售經理)
最後上線︰2018/07/24