【MM32 eMiniBoard测评】+ MP3播放器的串行通信控制
[复制链接]
MM32 eMiniBoard开发板具有2个串口,即UART1和UART2。
通过串口的使用可以进行通信,也可以控制串行通信类设备,如MP3播放模块、数据记录仪模块、串口型超声波测距仪及串口触摸屏等。
这里介绍一下用串行通信来控制MP3播放模块,其控制指令可以存放到数组中来进行发送。
unsigned char cmd3[10] = {0X7E, 0xFF, 0x06, 0X03, 0x00, 0x00, 0x01, 0xFE, 0xF7, 0XEF}; //*play index
unsigned char cmd6[10] = {0X7E, 0xFF, 0x06, 0X06, 0x00, 0x00, 0x10, 0xFE, 0xE5, 0XEF}; //*set
Volume
串口1所占用的引脚如图1所示
图1 串口1的引脚占用
在使用字节发送函数UART1_Send_Byte()的情况下,可实现控制指令的发送,其发送效果如图2所示。
图2 指令发送
在按键的配合下,则能自主地控制歌曲的播放,其控制效果如图4所示。
图3 按键原理图
图4 控制歌曲播放
实现MP3播放模块控制的整体构成如图5所示。
图5 整体构成
实现MP3播放模块控制效果的主程序为:
#define _MAIN_C_
#include "main.h"
#include "delay.h"
#include "led.h"
#include "uart_txrx_polling.h"
#include "key.h"
unsigned char cmd3[10] = {0X7E, 0xFF, 0x06, 0X03, 0x00, 0x00, 0x01, 0xFE, 0xF7, 0XEF}; //*play index
unsigned char cmd6[10] = {0X7E, 0xFF, 0x06, 0X06, 0x00, 0x00, 0x10, 0xFE, 0xE5, 0XEF}; //*set Volume
s32 main(void)
{
u8 i,t,j=0;
DELAY_Init();
UART1_Polling_Init(9600);
KEY_Init();
LED_Init();
setVolume(22);
for(i=0;i<10;i++)
{
UART1_Send_Byte(cmd6[i]);
}
while(1)
{
t = KEY_Scan(0);
if(KEY1_PRES == t)
{
LED1_TOGGLE();
if(j<5) j++;
if(j>5) j=0;
}
else if(KEY2_PRES == t)
{
LED2_TOGGLE();
if(j>1) j--;
}
else if(KEY3_PRES == t)
{
LED3_TOGGLE();
playn(j);
for(i=0;i<10;i++)
{
UART1_Send_Byte(cmd3[i]);
}
}
else if(KEY4_PRES == t)
{
LED4_TOGGLE();
}
else
{
DELAY_Ms(10);
}
}
}
|