> 文档中心 > 【GD32F427开发板试用】SYN6288语音播报

【GD32F427开发板试用】SYN6288语音播报


本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:卢阿涛

一、硬件介绍

SYN6288是一款语音播报芯片,可以将文字转化为语音并通过喇叭播放。
模块如下:

二、引脚连接

模块引脚如下:可见通信方式为串口

模块引脚定义如下:
BN0和BP0:接喇叭
BUSY:忙信号检测,可不接
TX:接单片机RX
RX:接单片机TX

三、软件实现

1. 串口配置

本例程通过串口2进行测试。

/** * @name:  * @function: 引脚配置 * @return {*} * @author: lengyuefeng * @Date: 2022-11-25 20:33:41 */void bsp_usart3_gpioConfig(void){    /* enable GPIO clock */    rcu_periph_clock_enable(BSP_USART3_GPIO_RCU);    /* configure the USART0 TX pin and USART0 RX pin */    gpio_af_set(BSP_USART3_TX_PORT, GPIO_AF_7, BSP_USART3_TX_PIN);    gpio_af_set(BSP_USART3_RX_PORT, GPIO_AF_7, BSP_USART3_RX_PIN);     /* configure USART0 TX as alternate function push-pull */    gpio_mode_set(BSP_USART3_TX_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, BSP_USART3_TX_PIN);    gpio_output_options_set(BSP_USART3_TX_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, BSP_USART3_TX_PIN);    /* configure USART0 RX as alternate function push-pull */    gpio_mode_set(BSP_USART3_RX_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, BSP_USART3_RX_PIN);    gpio_output_options_set(BSP_USART3_RX_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, BSP_USART3_RX_PIN);}/** * @name:  * @function: 串口配置 * @param {uint32_t} bound:波特率 * @return {*} * @author: lengyuefeng * @Date: 2022-11-25 20:36:50 */void bsp_usart3_usartConfig(uint32_t bound){    /* enable USART clock */    rcu_periph_clock_enable(BSP_USART3_RCU);    /* USART configure */    usart_deinit(BSP_USART3_USART);    usart_baudrate_set(BSP_USART3_USART, bound);    usart_receive_config(BSP_USART3_USART, USART_RECEIVE_ENABLE);    usart_transmit_config(BSP_USART3_USART, USART_TRANSMIT_ENABLE);    usart_enable(BSP_USART3_USART);   }

2. SYN6288播放函数

/** * @name:  * @function: 发送文本信息 * @param {uint8_t} backSound: 背景音乐 *0:无背景音乐 *1~15:选择背景音乐 * @param {uint8_t} *text:要发送的文本 * @return {*} * @author: lengyuefeng * @Date: 2022-11-24 17:22:01 */static uint8_t dri_syn6288_sendText(uint8_t backSound,uint8_t *text){    uint8_t tempBuf[DRI_SYN6288_BUFFER_LENGTH],i,crc = 0;    uint16_t textLength; // 文本长度    textLength = strlen((uint8_t*)text);    /* 帧固定配置信息 */    tempBuf[0] = 0xFD;    // 帧头    // tempBuf[1] = textLength >> 8;    // 数据长度高字节    tempBuf[1] = 0x00;    // 数据长度高字节    tempBuf[2] = (textLength & 0xff) + 3;    // 数据长度低字节    tempBuf[3] = 0x01;    // 构造命令字:合成播放命令    /* 字节高5位表示背景音乐,低3位表示编码格式 0是GB2312编码 */    tempBuf[4] = 0x01|(backSound << 4);    // 构造命令参数:背景音乐设定    /* 校验码计算 */    for(i = 0; i < 5; i++)    { crc = crc ^ tempBuf[i];     // 对发送的字节进行异或校验    }    for(i = 0; i < textLength; i++)    { crc = crc ^ text[i];  //对发送的字节进行异或校验    }    /* 发送数据 */    memcpy(&tempBuf[5], text, textLength);    tempBuf[5 + textLength] = crc;    DRI_SYN6288_SEND_BUFFER(tempBuf,5 + textLength + 1); // 串口发送}

四、效果

直接看视频,上电会播放语音。

【GD32F427开发板试用】SYN6288语音播报 - 极术社区 - 连接开发者与智能计算生态