【翌创ET6001测评】串口通讯与MP3播放模块控制
[复制链接]
由资料可知ET6001配有8个UART,借助UART不但可以实现串行通讯,还可以控制具有相应功能的串口设备,如串口屏、双PWM调节模块、超声波测距仪、温度调控器、数据记录模块等。
为便于使用,这里是用J9接口的UART0来控制一款具有串口控制功能的MP3播放模块。
图1 J9接口
在具体实现MP3播放模块控制前,先要解决UART0的数据发送功能。
由于MP3播放模块的波特率9600bps,故 UART0的初识化函数为:
static void UART0_init(void)
{
UART_InitTypeDef init;
init.baudRate = 9600;
init.wordLength = UART_WORDLENGTH_8B;
init.stopBits = UART_STOPBITS_1;
init.parity = UART_PARITY_NONE;
init.mode = UART_MODE_NORMAL;
init.DMAMode = UART_DMA_MULTI_MODE;
init.irqEnableFlag = UART_IT_NONE;
init.hwFlowCtl = UART_HWFLOW_DISABLE;
init.TXFIFOThreshold = UART_TXFIFO_THRESHOLD_0BYTES;
init.RXFIFOThreshold = UART_RXFIFO_THRESHOLD_1BYTES;
UART_Init(UART0, &init);
}
为进行串口发送字节指令的测试,其主程序为:
uint8_t zl[10]={0x7E,0xFF,0x06,0x03,0x00,0x00,0x01,0xFE,0xF7,0xEF};
int main(void)
{
int n=1;
UART0_init();
UART_Transmit(UART0, zl, 10, BLOCK_TRANSMIT_FIFO);
while (1);
}
其中,数组zl中存放放的是一条播放指令,共有10个字节。
为测试串口的字节发送功能,需将UART0与USB转TTL模块相连,然后通过串口调试工具进行观察;
经程序的编译和运行,其结果如图1所示,说明字节指令发送有效。
图1 串口测试
在此基础上,为了能够顺序的播放每一首歌曲,特在引脚GPIO2_3上了解一个触摸按键。
对触摸按键所用引脚的初始化函数为:
static void KEY_Init(void)
{
IOC_Init_TypeDef init;
IOC_ConfigStructInit(&init);
init.mode = IOC_AF_MODE_3;
init.dir = GPIO_DIR_IN_OUT;
init.pull = IOC_PULL_UP;
IOC_Config(IOC_PIN_GPIO_PLL_REF, &init);
GPIO_PortOutputDisable(GPIO2, GPIO_PIN_03);
}
这样就可以通过触摸按键来控制播放内容,即每触动一次按键,就自动指向下一首歌曲来播放。
实现MP3播放控制的主程序为:
int main(void)
{
int n=1;
UART0_init();
KEY_Init();
while (1)
{
if(GPIO_ReadPin(GPIO2, GPIO_PIN_03)==SET)
{
n=n+1;
playn(n);
UART_Transmit(UART0, zl, 10, BLOCK_TRANSMIT_FIFO);
}
delay(1000);
}
}
其中,函数 playn()的功能是将n的计数值转换为相应的播放控制指令。
经程序的编译和运行,其结果如图2所示,按键按键控制有效,能自动形成相应的播放指令。
图2 测试效果
这样在连接MP3播放模块的情况下,就可以播放音乐了。
MP3播放模块的引脚分布如图3所示。
图3 引脚分布
在最简单的使用情况下,需连接电源及将SPK_1和SPK_2接到扬声器外,只将RX引脚接到开发板的UART_TXD引脚即可。
此外,通过串口还可相数据记录模块发送数据以供记录。
这里所说的数据记录模块是一种串口设备,其工作波特率为9600bps,在接收到开发板所发送的数据时,就将数据完整地记录到TF卡的文件中。在结束数据记录后,通过读取TF卡可见到相应的记录文件,其文件名由urc+数字串构成。以NTC温度检测的记录文件文件为例,其形式如图4所示。
图4 记录形式
|