使用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