使用M0E1系列模块[ESP8266]驱动TM8211廉价音频芯片

M0E1系列模块简介

M0E1系列模块是劢领智能于2016年发布的基于ESP8266开发的2.4G WIFI模块,内置2M flash。模块将ESP8266的有效引脚引出,可以支持二次开发。劢领智能的模块,不但有高效多功能的AT指令模块,MQTT版本模块,而且只要使用了M0E1系列模块的用户,就可以使用劢领智能的功能lib进行快速开发。目前我们逐一将之前每种项目中稳定的功能进行归档做成lib。

TM8211简介

TM8211是两路16位数模转换集成电路,可广泛应用于数字音频、多媒体系统。芯片采用CMOS工艺设计,内部电路结构基于R-2R电阻网络结构设计,并在全电源电压范围内实现16bit的动态范围。 TM8211可通过采用数字串行总线数据输入,采用快速R-2R网络结构来支持8X的过采样音频信号处理。
TM8211 支持较宽范围的采样频率,并与PT8211、TDA1311兼容,输入采用LSBJ (Least Significant Bit Justified ) 格式, 数字编码格式采用MSB在前的补码格式。TM8211 采用8-pin SOP封装。

M0E1模块与TM8211硬件连接

M0E1模块与TM8211通过I2S的方式连接,具体如下表格

ESP8266 PIN TM8211 PIN
GPIO2/TX1 WS/LRCK
GPIO3/RXD DATA
GPIO15 BCLK

TM8211驱动使用

SDK项目加载劢领功能库

从https://github.com/mqlinks/ESP8266_MYLINKS_LIB下载劢领功能库,我们建议使用ESP8266_RTOS_2.0.0版本下开发。将项目工程lib下的libmylinks.a拷贝至ESP8266_RTOS_2.0.0版本的lib文件夹下。将工程include下的*.h文件拷贝至SDK的include文件夹下。
打SDK项目目录下的Makefile文件,在LINKFLAGS_eagle.app.v6 = 项目下增加:lmylinks.a \,保存后退出。

代码编写

1.在.c文件中增加头文件:

#include "mylinks.h"
#include "i2s.h"

2.增加库激活和初始化代码

void ICACHE_FLASH_ATTR
user_init(void){
	if(encryption_device() < 0)
		return;
	system_update_cpu_freq(160);
	i2s_gpio_init();
	i2s_audio_init();
}

3.TM8211 I2S使用流程代码

static void ICACHE_FLASH_ATTR
soundPlayTaskProc(void *pvParameters){
    uint8_t buff[256];
    i2s_set_channel(2);//设置通道数为2
    i2s_set_rate(16000);//设置I2S为16K
    for(;;){
	    i2s_start();//启动I2S
	    read(buff,256);//读取PCM的数据,此处读取方式按实际而定
	    pcm_to_i2s(buff,256);//将PCM的数据写入I2S
	    read(buff,256);//读取PCM的数据,此处读取方式按实际而定
	    pcm_to_i2s(buff,256);//将PCM的数据写入I2S
	    ...
	    i2s_stop();
	    vTaskDelay(100);
	}	    	    
}
xTaskCreate(soundPlayTaskProc, "sound", 1024 + 256, NULL, 3, NULL);

注意点

1.ESP8266 I2S引脚功能与UART0的RX0和TX1引脚复用,这里特别需要提醒

2.目前功能库只支持8K和16K的频率

3.ESP8266必须工作在160M的主频率下

说明
如果遇到模组使用上的问题,可以进群号为519630819的QQ群进行交流。
相关产品,请关注:shop.mqlinks.com

猜你喜欢

转载自blog.csdn.net/mqlinks/article/details/88409929
今日推荐