【小安派试玩】UART串口控制dfplayer模块

[复制链接]
查看2135 | 回复10 | 2023-9-8 22:10:28 | 显示全部楼层 |阅读模式

<span style="color: #666666;font-size: 23px">UART:UART是一种常见的串行通信接口,用于在单片机与外部设备之间进行数据传输,它相对简单、易于实现,并且在资源有限的单片机系统中占用较少的硬件资源,UART串口是一种异步串行通信接口,它可以通过两根线(一根发送线和一根接收线)实现数据的双向传输,通过单片机的UART接口,可以与各种外部设备进行通信,例如PC、传感器、UART串口屏等,UART接口在许多嵌入式系统中广泛应用,用于控制和监测外部设备,并实现数据的传输和交换。</span>

<a href="https://wiki.dfrobot.com.cn/_SKU_DFR0299_DFPlayer_Mini%E6%A8%A1%E5%9D%97" style="color: #8080ff; font-size: 19px;">点我跳转dfplayer模块介绍</a>

<span style="font-size:18px"><br><br><br>大家好,俺又来水积分啦,这次楼楼分享小安派的uart串口功能的简单使用,并演示用串口控制dfplayer这个MP3播放模块,根据数据手册介绍,小安派上使用的m61模组有2个uart串口(更多信息请参考bl618数据手册),在一般情况下串口0留着升级程序用,楼楼这里使用的是串口1,uart大家应该都不陌生,都比楼楼懂,就不多说了。</style>

<span style="font-size:20px"><br>模块展示:</span>

<div style="font-size:20px">

<div style="text-align:center">

1694178863955.jpg

</div>

<span style="font-size:20px"><br><br><br>视频演示:<br><br></span>

<div style="text-align:center"> <video controls style="width: 650px; height: 400px;"> <source src="https://whxy.shop/tools/?data=dfplayer.mp4" type="video/mp4"> 你的浏览器不支持播放改视频 </video>

</div>

<span style="font-size:20px"><br><br><br>代码:<br></span>

#include "bflb_mtimer.h"
#include "bflb_uart.h"
#include <bflb_gpio.h>
#include "board.h"

struct bflb_device_s *uartx;
struct bflb_device_s *gpio; 

// 串口初始化,RX引脚,TX引脚,波特率
void uart_init(uint8_t rx_pin, uint8_t tx_pin,int baudrate){

    bflb_gpio_uart_init(gpio, tx_pin, GPIO_UART_FUNC_UART1_TX); //TX
    bflb_gpio_uart_init(gpio, rx_pin, GPIO_UART_FUNC_UART1_RX); //RX
    uartx = bflb_device_get_by_name(DEFAULT_TEST_UART);
    struct bflb_uart_config_s cfg;
    cfg.baudrate = baudrate; //波特率
    cfg.data_bits = UART_DATA_BITS_8; // 数据位
    cfg.stop_bits = UART_STOP_BITS_1; //停止位
    cfg.parity = UART_PARITY_NONE;  //奇偶效验
    // cfg.flow_ctrl = 0;
    // cfg.tx_fifo_threshold = 7;  发送缓冲区
    // cfg.rx_fifo_threshold = 7;  接收缓冲区
    bflb_uart_init(uartx, &cfg); // 初始化
    bflb_uart_enable(uartx);  // 串口使能
    bflb_uart_link_rxdma(uartx, true); // DMA使能
}



int main(void)
{
    uint8_t flg=0;
    board_init();
    gpio = bflb_device_get_by_name("gpio"); // 获取句柄
    bflb_gpio_init(gpio,24,GPIO_INPUT|GPIO_PULLUP);
    uart_init(26, 27,9600);
    // bflb_uart_putchar(uartx,'h'); //发送一个字符
    // bflb_uart_put_block(uartx, "hello world", 12); //阻塞
    // bflb_uart_put(uartx, "hello world", 12); //轮询
    uint8_t star[] = {0x7E, 0xFF, 0x06, 0x0D, 0x00, 0x00, 0x00, 0xFE, 0xEE, 0xEF}; // dfplayer发送开始
    uint8_t stop[] = {0x7E, 0xFF, 0x06, 0x0E, 0x00, 0x00, 0x00, 0xFE, 0xED, 0xEF}; // 停止
    while (1) {
        bflb_mtimer_delay_ms(200);

        if(! bflb_gpio_read(gpio,24)){
            if(flg){
                flg=0;
                bflb_uart_put(uartx, stop, 10);
            }
             else{
                flg=1;
                bflb_uart_put(uartx, star, 10);
            }

        }



    }
}

<span style="font-size:20px"><br><br>以上是一个简单的串口使用,楼楼在上面添加了一些注释,代码比较简单,通过串口控制MP3模块播放和暂停音乐,它的功能还有很多,如果大家有需求可以自行参考dfplayer手册修改代码实现想要的功能,另外,楼楼比较菜,如果代码中有错误的地方大家可以自行修改。</span>

本帖被以下淘专辑推荐:

回复

使用道具 举报

jkernet | 2023-9-9 01:26:18 | 显示全部楼层
这个模块之前也想买,但是后来还是买的vs1053b
回复 支持 反对

使用道具 举报

ai_mcu | 2023-9-9 09:56:37 | 显示全部楼层
偷偷进步是吧
明天总会更好
回复 支持 反对

使用道具 举报

496199544 | 2023-9-9 10:07:48 | 显示全部楼层
好厉害啊
回复

使用道具 举报

王乐乐 | 2023-9-9 10:26:50 | 显示全部楼层
打卡学习
回复

使用道具 举报

不是你的猫 | 2023-9-9 13:06:15 | 显示全部楼层
666
回复

使用道具 举报

jkernet | 2023-9-9 19:05:45 来自手机 | 显示全部楼层
竟然吞回复,本来想买dfplayer后来换了vs1053
回复 支持 反对

使用道具 举报

妖猊 | 2023-9-9 20:37:40 | 显示全部楼层
偷偷进步是吧
回复 支持 反对

使用道具 举报

爱笑 | 2023-9-11 08:59:02 | 显示全部楼层
偷偷进步是吧!
用心做好保姆工作
回复 支持 反对

使用道具 举报

开发板 | 2023-9-11 11:07:14 | 显示全部楼层
打卡
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则