qsr1111 发表于 2025-3-3 21:50

wm8978的使用

#申请原创#@21小跑堂

WM8978 是一款由 Wolfson Microelectronics(现为 Cirrus Logic)推出的低功耗、高性能音频编解码器(Audio Codec)。它广泛应用于便携式设备(如智能手机、平板电脑)和嵌入式系统中,用于音频输入和输出处理。
最近使用了wm8978音频芯片,终于操作此音频芯片生成出专用的梯形波
1. WM8978 的主要特性
      音频输入:
                支持立体声麦克风输入。
                支持单端或差分输入。
                内置可编程增益放大器(PGA)。
      音频输出:
                支持立体声耳机输出。
                支持单声道扬声器输出。
                内置耳机驱动器和扬声器驱动器。
      音频处理:
                支持 16/20/24/32 位音频数据格式。
                支持 8 kHz 到 48 kHz 的采样率。
                内置数字信号处理(DSP)功能,如均衡器、3D 音效等。
      接口:
                支持 I2S、PCM 或 TDM 音频接口。
                支持 I2C 或 SPI 控制接口。
      低功耗:
                适用于电池供电的便携式设备
此芯片既可以做音频播放器也可以做语音识别系统。
2.wm8978芯片的接线接口如下:
                I2S:用于传输音频数据。
                        BCLK:位时钟。
                        LRC:左右声道时钟。
                        DIN:音频数据输入。
                        DOUT:音频数据输出。
                        MCLK:主时钟(可选,用于同步)。
                IIC:用于配置输出或控制寄存器
                        SCLK:控制时钟
                        SDIN: 数据传输
3.芯片配置原理图
                        
4.芯片代码配置初始化


5.数据模块配置
WM8978_HPvol_Set(40,40);                //耳机音量设置
      WM8978_SPKvol_Set(50);                        //喇叭音量设置6.数据传输
以此算法方式,可输出梯形波,持续时间可通过增加数据量的方式进行增加

以下为IIS-DMA方式具体操作方式

7.操作重复播放

此方式有两种
1.通过控制DMA的使能与失能
__HAL_DMA_ENABLE(&I2S2_TXDMA_Handler);//开启DMA TX传输                  
__HAL_DMA_DISABLE(&I2S2_TXDMA_Handler);//结束播放;               
2.通过直接操作IIS数据传输的开关
HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s)
HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s)

页: [1]
查看完整版本: wm8978的使用