【翌创ET6001测评】串口通讯与MP3播放模块控制
<p>由资料可知ET6001配有8个UART,借助UART不但可以实现串行通讯,还可以控制具有相应功能的串口设备,如串口屏、双PWM调节模块、超声波测距仪、温度调控器、数据记录模块等。</p><p > </p>
<p >为便于使用,这里是用J9接口的UART0来控制一款具有串口控制功能的MP3播放模块。</p>
<p > </p>
<p > </p>
<p>图1 J9接口</p>
<p > </p>
<p >在具体实现MP3播放模块控制前,先要解决UART0的数据发送功能。</p>
<p >由于MP3播放模块的波特率9600bps,故 UART0的初识化函数为:</p>
<pre>
<code class="language-cpp">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);
}</code></pre>
<p> </p>
<p>为进行串口发送字节指令的测试,其主程序为:</p>
<pre>
<code class="language-cpp">uint8_t zl={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);
}</code></pre>
<p> </p>
<p>其中,数组zl中存放放的是一条播放指令,共有10个字节。</p>
<p > </p>
<p >为测试串口的字节发送功能,需将UART0与USB转TTL模块相连,然后通过串口调试工具进行观察;</p>
<p > </p>
<p >经程序的编译和运行,其结果如图1所示,说明字节指令发送有效。</p>
<p > </p>
<p > </p>
<p>图1 串口测试</p>
<p > </p>
<p >在此基础上,为了能够顺序的播放每一首歌曲,特在引脚GPIO2_3上了解一个触摸按键。</p>
<p > </p>
<p >对触摸按键所用引脚的初始化函数为:</p>
<pre>
<code class="language-cpp">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);
}</code></pre>
<p> </p>
<p>这样就可以通过触摸按键来控制播放内容,即每触动一次按键,就自动指向下一首歌曲来播放。</p>
<p > </p>
<p >实现MP3播放控制的主程序为:</p>
<pre>
<code class="language-cpp">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);
}
}</code></pre>
<p> </p>
<p>其中,函数 playn()的功能是将n的计数值转换为相应的播放控制指令。</p>
<p > </p>
<p >经程序的编译和运行,其结果如图2所示,按键按键控制有效,能自动形成相应的播放指令。</p>
<p > </p>
<p>图2 测试效果</p>
<p > </p>
<p >这样在连接MP3播放模块的情况下,就可以播放音乐了。</p>
<p > </p>
<p >MP3播放模块的引脚分布如图3所示。</p>
<p > </p>
<p>图3 引脚分布</p>
<p > </p>
<p >在最简单的使用情况下,需连接电源及将SPK_1和SPK_2接到扬声器外,只将RX引脚接到开发板的UART_TXD引脚即可。</p>
<p > </p>
<p >此外,通过串口还可相数据记录模块发送数据以供记录。</p>
<p >这里所说的数据记录模块是一种串口设备,其工作波特率为9600bps,在接收到开发板所发送的数据时,就将数据完整地记录到TF卡的文件中。在结束数据记录后,通过读取TF卡可见到相应的记录文件,其文件名由urc+数字串构成。以NTC温度检测的记录文件文件为例,其形式如图4所示。</p>
<p > </p>
<p > </p>
<p>图4 记录形式</p>
<p> </p>
<p>8通道的UART,这接口确实算多的,一般也就4个左右 </p>
<p>数据记录模块是一种串口设备,其工作波特率为9600bps,在接收到开发板所发送的数据时,就将数据完整地记录到TF卡的文件中,是这样</p>
秦天qintian0303 发表于 2024-11-2 23:17
8通道的UART,这接口确实算多的,一般也就4个左右
<p>的确是这样</p>
页:
[1]