Gitee倉庫:https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/dev/team_x/demo_record_pen
一、Codec介紹
WM8978為DAC+ADC芯片,本身并不具備編解碼的功能,一方面,可通過I2S接口接收PCM數(shù)據(jù),轉為模擬信號輸出,此為DAC過程,即放音;一方面,可接收模擬信號轉為數(shù)字信號,通過I2S接口傳輸給MCU,此為ADC過程,即錄音。WM8978還使用I2C接口配置其工作參數(shù),比如音量,EQ,3D環(huán)繞等。WM8978本身可直連1W/8歐的小喇叭。

引腳配置:

1、I2S和I2C的使能
首先需要打開config下usr_config.mk文件,打開編譯I2S和I2C的使能

2、導入lal_audio文件
打開使能后進行編譯,導入lal_audio文件,可見wm8978_init函數(shù),對引腳進行使能:

3、WM8978的I2C配置
WM8978需要使用I2C引腳對輸入方式、喇叭音量、輸入增益等等進行控制,詳情可見lal_audio中其它函數(shù)

如上圖,進行初始化后即可對錄音和放音進行測試;
4、WM8978錄音測試
其中需要用到I2S的讀寫函數(shù),本文件中設置的采集頻率和位寬是16K和16位(方便后續(xù)語音識別)

使用二維數(shù)組緩存的方式進行讀取和播放,經(jīng)驗證后滿足要求。
hi_u32 WM8978_Write_Reg(hi_u8 reg, hi_u16 val)
{
//unsigned char buf[2];
//buf[0] = (reg>8)&0X01);
//buf[1] = val&0XFF;
hi_i2c_data i2c_data;
hi_u8 send_data[2]= { 0 };
send_data[0] = (reg>8)&0X01);
send_data[1] = val&0XFF;
/* send_data[0] = reg;
send_data[1] = val; */
i2c_data.send_buf = send_data;
i2c_data.send_len = 2;
//(WM8978_DEVICE_ADDR>>1)|0
wm8978_register_tbl[reg] = val;
// return hi_i2c_writeread(HI_I2C_IDX_1,(WM8978_DEVICE_ADDRADC輸入部分的增益)
//gain:0~7,0表示通道禁止,1~7,對應-12dB~6dB,3dB/Step
void WM8978_AUX_Gain(hi_u8 gain)
{
hi_u16 regval;
gain&=0X07;
regval=WM8978_Read_Reg(47); //讀取R47
regval&=~(7ADC輸入部分的增益)
//gain:0~63,對應-12dB~35.25dB,0.75dB/Step
void WM8978_MIC_Gain(hi_u8 gain)
{
gain&=0X3F;
WM8978_Write_Reg(45,gain); //R45,左通道PGA設置
WM8978_Write_Reg(46,gain|1ADC輸入部分的增益)
//gain:0~7,0表示通道禁止,1~7,對應-12dB~6dB,3dB/Step
void WM8978_LINEIN_Gain(hi_u8 gain)
{
hi_u16 regval;
gain&=0X07;
regval=WM8978_Read_Reg(47); //讀取R47
regval&=~(7
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
PCM
+關注
關注
1
文章
200
瀏覽量
53978
-
嵌入式
+關注
關注
5141
文章
19532
瀏覽量
314962
-
錄音筆
+關注
關注
0
文章
90
瀏覽量
13333
-
WM8978
+關注
關注
1
文章
5
瀏覽量
3893
-
Hi3861
+關注
關注
1
文章
63
瀏覽量
6957
發(fā)布評論請先 登錄
相關推薦
熱點推薦
專業(yè)設計錄音筆
`本人專業(yè)設計錄音筆,包括軟件硬件!主要開發(fā)炬力 安凱等方案!開發(fā)設計過聯(lián)想 紐曼 現(xiàn)代等多家知名品牌的錄音筆!如有需要請QQ1292841172。`
發(fā)表于 03-07 15:29
錄放音電話設計問題
本帖最后由 gk320830 于 2015-3-8 02:05 編輯
語音芯片ISD4004如何與電話連接才能實現(xiàn)對電話的錄放音呢?錄音由電話話筒錄入,放音到電話話筒,謝謝!
發(fā)表于 03-27 11:25
wm8978的lout和rout沒有輸出
這一路稍微和歷程的配置有點不一樣。我們用Rout1和Lout1做的。附件如下圖所示:用sai的那一路播放和錄音都正常,但是wm8978這一路沒有聲音,我們量Rout1和Lout1引腳也沒有電平,輸入
發(fā)表于 01-24 23:57
請問音頻芯片WM8978雙通道錄音時左右通道錄的數(shù)據(jù)是怎么存儲的?
請問各位音頻芯片WM8978雙通道錄音時,左右通道錄得數(shù)據(jù)是以怎樣的規(guī)則存儲的???
發(fā)表于 02-13 05:43
請問m8960 wm8974 wm8978 wm8994 一系列音頻接口芯片在錄放音的音質上有提升嗎?
wm8960 wm8974 wm8978 wm8994,這一系列音頻接口芯片,在錄放音的音質上有沒有提升? 或者只是通道數(shù)量的差別?看了看立
發(fā)表于 02-19 06:02
數(shù)據(jù)傳輸進行錄音時進不去中斷
設計的錄放一體的聲卡,進行播放的時候,數(shù)據(jù)傳輸完成可以進入中斷的,正常播放音頻,為什么進行錄音的時候,進不去中斷呢?IIS DMA設置的都正確啊,求大神指點一下。用的是STM32探索者和WM8
發(fā)表于 02-28 00:26
wm8978實現(xiàn)了錄音和播放音樂但無法修改音量
最近用wm8978來實現(xiàn)音樂播放功能,現(xiàn)在已經(jīng)可以正常錄音,也可以播放wav音頻,mp3用mcu來解碼后也可以正常播放,但遇到個問題,wm8978的MCLK是通過mcu提供的,在播放音
發(fā)表于 03-04 23:37
wm8978錄音回放改成24位調不通
wm8978的寄存器R4,將數(shù)據(jù)長度改為243,修改接收(錄音)和發(fā)送(放音)中斷函數(shù)。以錄音為例,改為24位數(shù)據(jù)后需要四次中斷才能接收到兩個聲道的24位數(shù)據(jù)以左聲道的兩次數(shù)據(jù)為例,按
發(fā)表于 03-16 04:35
I2S總線是怎樣驅動WM8978的
接口只有一個數(shù)據(jù)引腳,因此在設計引腳的時候,就需要確定是錄音還是放音。WM8978為DAC+ADC芯片,本身并不具備編解碼的功能。1)WM8978可通過I2S接口接收PCM數(shù)據(jù),轉為模
發(fā)表于 01-05 07:10
Hi3861:智能錄音筆【環(huán)境搭建+配網(wǎng)】
。二、項目內容(1)選用Hi3861芯片開發(fā);(2)使用Codec_Wm8978實現(xiàn)收音放音;(3)使用WIFI_AP_STA實現(xiàn)WEB配網(wǎng);(4)使用云服務語音API識別實現(xiàn)語音識別;三、編譯環(huán)境
發(fā)表于 12-31 10:35
Hi3861:智能錄音筆【WM8978錄放音】
進行使能:3、WM8978的I2C配置WM8978需要使用I2C引腳對輸入方式、喇叭音量、輸入增益等等進行控制,詳情可見lal_audio中其它函數(shù)如上圖,進行初始化后即可對錄音和放音
發(fā)表于 12-31 10:41
評論