在esp32开发板上实现的web_radio,基于wm8978 codec芯片

在esp32开发板上实现的web_radio,基于wm8978 codec芯片

前言

本文介绍了如何在esp32板子上实现自己的web_radio,用的是wm8978 codec芯片。详细代码参考github工程,这里其实是fork了另一位大牛的工程,在原来的工程中,其实已经可以工作。不过,用的是芯片自带的DAC转换而已,效果不是很好。这里考虑了使用外接IIS codec芯片:wm8978,这是淘宝链接:WM8978音频解码模块扬声器驱动I2S模块STM32F103软解MP3开发板,是IIC接口的,使用很方便。但是注意,这个芯片是需要提供MCLK的!网上查了一下,发现ESP32的GPIO 0正好可以输出该时钟信号。闲话少说,let’s begin!

下载编译

其实README里面已经很详细,关于如何下载esp-idf以及下载配置工具链我就不多说了。

git clone https://github.com/cloverclose3/ESP32_MP3_Decoder.git
cd ESP32_MP3_Decoder
make menuconfig   # 配置 Web Radio / Bluetooth Speaker  --->
			#	[*] WM8978 codec support  ----
			#		Wifi Configuration  --->
			#			(你的wifi ssid) WiFi SSID
			#			(你的wifi psk) WiFi Password
git submodule init
git submodule update
make

硬件连接

在这个工程里面,用到了很多的GPIO口,有的板子,比如我的,有些gpio口已经接了其他的外设,比如led灯,喇叭,继电器等等。还有些gpio口是系统预留的,我们无法使用。还有些gpio只有输入功能等等这些限制。这里罗列了一下esp32可用的gpio,摘录自esp32手册:

The ESP32 chip features 40 physical GPIO pads. Some GPIO pads cannot be used or do not have the corresponding pin on the chip package (refer to the ESP32 Datasheet).

  • GPIO6-11 are usually used for SPI flash.
  • GPIO20, GPIO24, and GPIO28-31 are not available as pins.
  • GPIO34-39 can only be set as input mode and do not have software pullup or pulldown functions.

而这个工程里面已经用到的gpio口有:

  • control: 原来用的是GPIO 0,因为我需要用GPIO 0来产生codec需要的MCLK,所以,被我改成了使用GPIO 12。
  • lcd: 使用到了GPIO 5 16 17 18 19 21

鉴于上面的分配,我选择连接codec的gpio如下:

  • IIC: SDA <-----> GPIO14
  • IIC: SCL <-----> GPIO15
  • IIS: BCLK (板子上标SCLK) <-----> GPIO26
  • IIS: LR CLK <-----> GPIO25
  • IIS: DATA CLK (板子上标DIN) <-----> GPIO22
  • IIS: MCLK <-----> GPIO0

这里的GPIO 0输出的是12M的频率:256*44kHz=11.264MHz,这里的44k是一般的mp3的采样率,再根据芯片手册上 MCLK = 256fs,所以,12M的输出可以满足需求。

最后,再次重申一点,上面的连接只是在我的板子上的情况,哪些口可以用需要根据你板子的实际外设情况来看。有些GPIO口被占用了你需要换其他的口!

最终的连接图如下:
在这里插入图片描述

烧写测试

注意,在烧写的时候,需要把GPIO 0接地,烧完了,然后再接到MCLK上。上电,接上耳机,嗯,效果相当不错哦。。

TODO

我在原来工程的基础上,注释掉了LCD的task,发现如果不去掉,会影响网络的连接!这个问题有时间慢慢查吧,这里暂时也用不着液晶的显示屏,注释掉也没有影响。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值