ESK32-360开发板在硬件上支持音频的录制和播放,它是以I2S接口的WM8978编解码芯片来实现的,其接口电路如图1所示。
图1 音频电路
其中,扬声器的接口是以LS1的焊盘的形式来给出的,见图2所示。通常情况下,我们可以通过接口J1接耳机来收听。
图2 扬声器接口
1. I2S功能测试
在下载出厂例程的情况下,每当按下复位键就会听到“卡”的声响。此外,若接好串行通讯,则通过串口可见到图3所示的输出内容。
图3 串口输出内容
鉴于手头的相关资料较少,很难做进一步的扩展,其实这一个非常有用的功能单元,也还有开发的潜力。
2. MP3语音模块及使用
既然I2S没有让我们听到一丝优美的旋律,那我们就另想它法吧!
MP3语音播放模块是一款小巧的音频功能模块,通过串口的指令控制,依然能奏出美妙的旋律。该功能模块的引脚分布如图4所示。
图4 MP3引脚分布
此外,在通常的使用中最常用的MP3播放指令为播放指令、停止指令及音量调节指令:
将此指令存放到数组中,并借助串口的方式即可到达播放的目的。
uint8_t cmd3[] = {0X7E, 0xFF, 0x06, 0X03, 00, 00, 01, 0xFE, 0xF7, 0XEF}; //play index
uint8_t cmd6[] = {0X7E, 0xFF, 0x06, 0X06, 00, 00, 10, 0xFE, 0xE5, 0XEF}; //set Volume
uint8_t cmd5[] = {0X7E, 0xFF, 0x06, 0X16, 00, 00, 00, 0xFE, 0xE5, 0XEF}; //stop
实现歌曲播放的主程序如下:
int main(void)
{
u16 n;
UxART_Configuration();
UxART_TxTest();
while(1)
{
while (USART_GetFlagStatus(HTCFG_UART_PORT, USART_FLAG_RXDR) == RESET);
n = USART_ReceiveData(HTCFG_UART_PORT);
UxART_TxSend(n);
playn(n);
mp3();
}
}
在编译下载程序后,通过串口我们即可指定播放的乐曲,其操作过程如图5所示和图6所示。
若配接OLED屏的显示,则可以通过菜单的选择来播放,其效果如图7所示。
图5 播放第2首
图6 播放第5首
图7 OLED屏下的乐曲选播
|