91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【CW32模塊使用】語(yǔ)音合成播報(bào)模塊

CW32生態(tài)社區(qū) ? 來(lái)源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2025-03-29 17:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

SYN6288E 中文語(yǔ)音合成芯片是北京宇音天下科技有限公司在 2010 年初推出的一款性/價(jià)比更高的 SYN6288 芯片的基礎(chǔ)上更改封裝方式的,效果更自然的一款中高端語(yǔ)音合成芯片。SYN6288E 通過(guò)異步串 口(UART)通訊方式,接收待合成的文本數(shù)據(jù),實(shí)現(xiàn)文本到語(yǔ)音(或 TTS 語(yǔ)音)的轉(zhuǎn)換。

一、模塊來(lái)源

模塊實(shí)物展示:

wKgZPGflM52AR3o6AAApjsZgu9g715.jpg


資料鏈接:https://pan.baidu.com/s/1FjoAuJm387bxaZxS6g9HEg
資料提取碼:8888

二、規(guī)格參數(shù)

輸入電壓:2.4V~5.1V

額定電流:2.0uA~280mA

控制方式:串口

以上信息見(jiàn)廠家資料文件

三、移植過(guò)程

我們的目標(biāo)是將例程移植至CW32F030C8T6開(kāi)發(fā)板上【能夠播報(bào)語(yǔ)音的功能】。首先要獲取資料,查看數(shù)據(jù)手冊(cè)應(yīng)如何實(shí)現(xiàn)讀取數(shù)據(jù),再移植至我們的工程。

3.1查看資料

語(yǔ)音播報(bào)控制,只要配置出串口,再根據(jù)數(shù)據(jù)手冊(cè)要求的命令幀格式發(fā)送數(shù)據(jù),就能實(shí)現(xiàn)播報(bào)功能。

注意!該模塊只能實(shí)現(xiàn)語(yǔ)音播報(bào),沒(méi)有語(yǔ)音識(shí)別功能!也無(wú)法錄音。

wKgZO2flM52AFXzUAAC1jhurHRQ310.jpgwKgZPGflM56AKRZAAACsYP1-ylI166.jpg

3.2引腳選擇

想要使用uart串口,需要確定使用的引腳是否有串口外設(shè)功能,可以通過(guò)用戶手冊(cè)進(jìn)行查看。在用戶手冊(cè)的第146頁(yè)。

這里選擇使用PA2和PA3的附加串口2功能。

wKgZO2flM56ASTNuAAElnjqkicU905.jpg

有串口功能的引腳

wKgZPGflM5-AJW7LAAERrMCc64o912.jpg

模塊接線圖

3.3移植至工程

移植步驟中的導(dǎo)入.c和.h文件與【CW32模塊使用】DHT11溫濕度傳感器相同,只是將.c和.h文件更改為bsp_syn6288.c與bsp_syn6288.h。這里不再過(guò)多講述,移植完成后面修改相關(guān)代碼。

在文件bsp_syn6288.c中,編寫(xiě)如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-25     LCKFB-LP    first version
 */
#include "bsp_syn6288.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

#define SYN6288RX_LEN_MAX 255

unsigned char SYN6288RX_BUFF[SYN6288RX_LEN_MAX];
unsigned char SYN6288RX_LEN = 0;


/******************************************************************
 * 函 數(shù) 名 稱:SYN6288_GPIO_Init
 * 函 數(shù) 說(shuō) 明:SYN6288引腳初始化
 * 函 數(shù) 形 參:band_rate GPS通信波特率
 * 函 數(shù) 返 回:無(wú)
 * 作       者:LC
 * 備       注:默認(rèn)波特率為9600
******************************************************************/
void SYN6288_GPIO_Init(uint32_t band_rate)
{
    GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化結(jié)構(gòu)體

    BSP_SYN6288_GPIO_RCC_ENABLE();        // 使能GPIO時(shí)鐘
    BSP_SYN6288_UART_RCC_ENABLE();        // 使能UART時(shí)鐘

    GPIO_InitStruct.Pins = BSP_SYN6288_TX_PIN;           // GPIO引腳
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;          // 推挽輸出
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;             // 輸出速度高
    GPIO_Init(BSP_SYN6288_GPIO_PORT, &GPIO_InitStruct);  // 初始化

    GPIO_InitStruct.Pins = BSP_SYN6288_RX_PIN;           // GPIO引腳
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT_PULLUP;       // 上拉輸入
    GPIO_Init(BSP_SYN6288_GPIO_PORT, &GPIO_InitStruct);  // 初始化

    BSP_SYN6288_AF_UART_TX(); // UART_TX復(fù)用
    BSP_SYN6288_AF_UART_RX(); // UART_RX復(fù)用

    // 配置UART
    USART_InitTypeDef USART_InitStructure;

    USART_InitStructure.USART_BaudRate = band_rate;                     // 波特率
    USART_InitStructure.USART_Over = USART_Over_16;                     // 配置USART的過(guò)采樣率。
    USART_InitStructure.USART_Source = USART_Source_PCLK;               // 設(shè)置時(shí)鐘源
    USART_InitStructure.USART_UclkFreq = 64000000;                      //設(shè)置USART時(shí)鐘頻率(和主頻一致即可)
    USART_InitStructure.USART_StartBit = USART_StartBit_FE;             //RXD下降沿開(kāi)始
    USART_InitStructure.USART_StopBits = USART_StopBits_1;              // 停止位1
    USART_InitStructure.USART_Parity = USART_Parity_No ;                // 不使用校驗(yàn)
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 不使用流控
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;     // 收發(fā)模式
    USART_Init(BSP_SYN6288, &USART_InitStructure);               // 初始化串口2

    // 優(yōu)先級(jí),無(wú)優(yōu)先級(jí)分組
    NVIC_SetPriority(BSP_SYN6288_IRQ, 0);

    // UARTx中斷使能
    NVIC_EnableIRQ(BSP_SYN6288_IRQ);

    // 使能UARTx RC中斷
    USART_ITConfig(BSP_SYN6288, USART_IT_RC, ENABLE);
}

/******************************************************************
 * 函 數(shù) 名 稱:SYN6288_Send_Bit
 * 函 數(shù) 說(shuō) 明:向SYN6288發(fā)送單個(gè)字符
 * 函 數(shù) 形 參:ch發(fā)送的字符
 * 函 數(shù) 返 回:無(wú)
 * 作       者:LC
 * 備       注:無(wú)
******************************************************************/
void SYN6288_Send_Bit(unsigned char ch)
{
    USART_SendData(BSP_SYN6288, (uint8_t)ch);

    while( RESET == USART_GetFlagStatus(BSP_SYN6288, USART_FLAG_TXE) ){} // 等待發(fā)送數(shù)據(jù)緩沖區(qū)標(biāo)志置位
}

/******************************************************************
 * 函 數(shù) 名 稱:SYN6288_send_String
 * 函 數(shù) 說(shuō) 明:SYN6288發(fā)送字符串
 * 函 數(shù) 形 參:str要發(fā)送的字符串
 * 函 數(shù) 返 回:無(wú)
 * 作       者:LC
 * 備       注:無(wú)
******************************************************************/
void SYN6288_send_String(unsigned char *str)
{
        while( str && *str ) // 地址為空或者值為空跳出
        {
                SYN6288_Send_Bit(*str++);
        }
}
//獲取串口接收的數(shù)據(jù)
unsigned char *Get_SYN6288RX_BUFF(void)
{
        return SYN6288RX_BUFF;
}

//清除串口接收的數(shù)據(jù)
void Clear_SYN6288RX_BUFF(void)
{
        unsigned char i = SYN6288RX_LEN_MAX-1;
        while(i)
        {
                SYN6288RX_BUFF[i--] = '?';
        }
        SYN6288RX_LEN = 0;
}

/************************************************************
 * 函數(shù)名稱:SYN6288_Send_Cmd
 * 函數(shù)說(shuō)明:向SYN6288發(fā)送命令
 * 型    參:
 * 【CmdType=命令字】           可使用參數(shù)有:
 *                                              0x01        語(yǔ)音合成命令
 *                                              0x31        設(shè)置波特率(默認(rèn)9600)
 *                                              0x02        停止合成命令
 *                                              0x03        暫停合成命令
 *                                              0x04        恢復(fù)合成命令
 *                                              0x21        芯片狀態(tài)查詢命令
 *                                              0x88        芯片進(jìn)入低功耗模式
 * 【CmdPar=命令參數(shù)】          可使用參數(shù)有:
 *                                              字節(jié)高5位的十進(jìn)制為0時(shí),表示不加背景音樂(lè)
 *                                              字節(jié)高5位的十進(jìn)制為1~15時(shí),表示所選背景音樂(lè)的編號(hào)
 *                                              字節(jié)低3位的十進(jìn)制為0~3,并且命令字為語(yǔ)音合成命令時(shí),分別代表設(shè)置文本為GB2312格式、GBK格式、BIG5格式、UNICODE格式;
 *                                              字節(jié)低3位的十進(jìn)制為0~2,并且命令字為設(shè)置波特率時(shí),分別代表設(shè)置波特率為9600、19200、38400;
 * 【text=播報(bào)的文本】

 * 返 回 值:0=發(fā)送成功
 * 備    注:

 * 接收到控制命令幀,芯片會(huì)向上位機(jī)發(fā)送1個(gè)字節(jié)的狀態(tài)回傳,上位機(jī)可根據(jù)這個(gè)回傳來(lái)判斷芯片目前的工作狀態(tài)
 * 初始化成功回傳            0X4A
 * 收到正確的命令幀回傳      0x41
 * 收到不能識(shí)別命令幀回傳    0x45
 * 芯片播音狀態(tài)回傳          0x4E
 * 芯片空閑狀態(tài)回傳          0x4F
*************************************************************/
unsigned char SYN6288_Send_Cmd(uint8_t CmdType, uint8_t CmdPar, uint8_t *text)
{
        unsigned char frame_header = 0XFD;       //幀頭
        unsigned int Text_Len = strlen((const char*)text);//待發(fā)送文本的長(zhǎng)度
        unsigned int Data_Len = Text_Len + 3;              //數(shù)據(jù)區(qū)長(zhǎng)度;3=幀頭、幀尾和異或校驗(yàn)
        unsigned char Xor_Check = 0;                       //異或校驗(yàn)存儲(chǔ)
        unsigned char Send_Buff[210];                     //待發(fā)送的命令幀,命令幀最大206個(gè)字節(jié)
        uint8_t i = 0;

        Send_Buff[0] = frame_header;   //幀頭
        Send_Buff[1] = Data_Len>>8;      //高位在前
        Send_Buff[2] = Data_Len&0x00ff; //低位在前
        Send_Buff[3] = CmdType;         //命令字
        Send_Buff[4] = CmdPar;          //命令數(shù)據(jù)
        sprintf((char*)Send_Buff+5, "%s", text );

        //發(fā)送數(shù)據(jù)
        for( i = 0; i < Text_Len+5; i++ )
        {
                Xor_Check = Xor_Check ^ Send_Buff[i];//對(duì)每一個(gè)數(shù)據(jù)進(jìn)行異或校驗(yàn)保存
                SYN6288_Send_Bit( Send_Buff[i] );//發(fā)送數(shù)據(jù)
        }
        SYN6288_Send_Bit( Xor_Check );//發(fā)送最后一位:異或校驗(yàn)數(shù)據(jù)

        return 0;
}


/******************************************************************
 * 函 數(shù) 名 稱:BSP_SYN6288_IRQHandler
 * 函 數(shù) 說(shuō) 明:串口中斷服務(wù)函數(shù)
 * 函 數(shù) 形 參:無(wú)
 * 函 數(shù) 返 回:無(wú)
 * 作       者:LC
 * 備       注:無(wú)
******************************************************************/
void BSP_SYN6288_IRQHandler(void)
{
        if(USART_GetITStatus(BSP_SYN6288,USART_IT_RC) != RESET) // 接收緩沖區(qū)不為空
        {
                SYN6288RX_BUFF[ SYN6288RX_LEN ] = USART_ReceiveData(BSP_SYN6288);
                SYN6288RX_LEN = ( SYN6288RX_LEN + 1 ) % SYN6288RX_LEN_MAX;

                SYN6288RX_BUFF[SYN6288RX_LEN] = '?';

                USART_ClearITPendingBit(BSP_SYN6288, USART_IT_RC); // 清除中斷標(biāo)志位
        }
}

在文件bsp_syn6288.h中,編寫(xiě)如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-25     LCKFB-LP    first version
 */
#ifndef _BSP_SYN6288_H
#define _BSP_SYN6288_H

#include "board.h"

#define BSP_SYN6288_GPIO_RCC_ENABLE()    __RCC_GPIOA_CLK_ENABLE()   // GPIO端口時(shí)鐘
#define BSP_SYN6288_UART_RCC_ENABLE()    __RCC_UART2_CLK_ENABLE()   // 串口2的時(shí)鐘


#define BSP_SYN6288_AF_UART_TX()         PA02_AFx_UART2TXD()
#define BSP_SYN6288_AF_UART_RX()         PA03_AFx_UART2RXD()

#define BSP_SYN6288_GPIO_PORT            CW_GPIOA               // GPIO的端口

#define BSP_SYN6288_TX_PIN               GPIO_PIN_2             // 串口TX的引腳
#define BSP_SYN6288_RX_PIN               GPIO_PIN_3             // 串口RX的引腳

#define BSP_SYN6288                      CW_UART2               // 串口2
#define BSP_SYN6288_IRQ                  UART2_IRQn             // 串口2中斷
#define BSP_SYN6288_IRQHandler           UART2_IRQHandler       // 串口2中斷服務(wù)函數(shù)



void SYN6288_GPIO_Init(uint32_t band_rate);
unsigned char SYN6288_Send_Cmd(uint8_t CmdType, uint8_t CmdPar, uint8_t *text);
#endif

四、移植驗(yàn)證

在自己工程中的main主函數(shù)中,編寫(xiě)如下。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-25     LCKFB-LP    first version
 */
#include "board.h"
#include "stdio.h"
#include "bsp_uart.h"
#include "bsp_syn6288.h"

int32_t main(void)
{
    board_init();

    uart1_init(9600);

    SYN6288_GPIO_Init(9600);
    printf("startrn");
    delay_ms(1000);

    SYN6288_Send_Cmd(0x01,0x00,(uint8_t *)"立創(chuàng)開(kāi)發(fā)板");

    while(1)
    {

    }
}

移植現(xiàn)象:模塊播報(bào)"立創(chuàng)開(kāi)發(fā)板"。

模塊移植成功案例代碼:

鏈接:https://pan.baidu.com/s/1eaj1otbe_v5xWZtn7We84w?pwd=LCKF

提取碼:LCKF

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2837

    瀏覽量

    53300
  • 語(yǔ)音合成
    +關(guān)注

    關(guān)注

    2

    文章

    94

    瀏覽量

    16781
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    299

    瀏覽量

    1854
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    CW32移植Free-RTOS】CW32開(kāi)發(fā)者扶持計(jì)劃

    CW32配置Free-RTOS全過(guò)程,CW32開(kāi)發(fā)者扶持計(jì)劃
    的頭像 發(fā)表于 04-18 09:38 ?7351次閱讀
    【<b class='flag-5'>CW32</b>移植Free-RTOS】<b class='flag-5'>CW32</b>開(kāi)發(fā)者扶持計(jì)劃

    【項(xiàng)目展示】基于CW32的遙控循跡小車(chē)

    CW32循跡小車(chē).zip_免費(fèi)高速下載|百度網(wǎng)盤(pán)-分享無(wú)限制? 一、概述 CW32循跡、遙控小車(chē)具有循跡和遙控兩種功能,小車(chē)的硬件模塊CW32F030C8T6小藍(lán)板、智能小車(chē)控制底板
    的頭像 發(fā)表于 05-31 17:33 ?2483次閱讀
    【項(xiàng)目展示】基于<b class='flag-5'>CW32</b>的遙控循跡小車(chē)

    CW32模塊使用】JQ8900語(yǔ)音播報(bào)模塊

    此芯片最大的優(yōu)勢(shì)在于能夠靈活的更換 SPI-flash 內(nèi)的語(yǔ)音內(nèi)容,省去了傳統(tǒng)語(yǔ)音芯片需要安裝上位機(jī)更換語(yǔ)音的麻煩,SPI FLASH 直接模擬成 U 盤(pán),跟拷貝 U 盤(pán)一樣,非常方便。使得產(chǎn)品研發(fā)和生產(chǎn)變得便捷簡(jiǎn)單。一線串口
    的頭像 發(fā)表于 03-29 17:28 ?2188次閱讀
    【<b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用】JQ8900<b class='flag-5'>語(yǔ)音</b><b class='flag-5'>播報(bào)</b><b class='flag-5'>模塊</b>

    XFS5152CE語(yǔ)音合成模塊

    TTS是Text To Speech的縮寫(xiě),即“從文本到語(yǔ)音”,是人機(jī)對(duì)話的一部分,讓機(jī)器能夠說(shuō)話。語(yǔ)音播報(bào)功能的實(shí)現(xiàn)方式TTS語(yǔ)音模塊,比
    發(fā)表于 08-12 08:14

    DFRobot Gravity: 中英文語(yǔ)音合成模塊

    語(yǔ)音合成模塊 DFRobot-Gravity: 中英文語(yǔ)音合成模塊 無(wú)論是中文還是英文對(duì)于
    發(fā)表于 09-07 16:29 ?1680次閱讀

    語(yǔ)音播報(bào)功能的實(shí)現(xiàn)

    TTS是Text To Speech的縮寫(xiě),即“從文本到語(yǔ)音”,是人機(jī)對(duì)話的一部分,讓機(jī)器能夠說(shuō)話。語(yǔ)音播報(bào)功能的實(shí)現(xiàn)方式TTS語(yǔ)音模塊,比
    發(fā)表于 12-16 16:52 ?11次下載
    <b class='flag-5'>語(yǔ)音</b><b class='flag-5'>播報(bào)</b>功能的實(shí)現(xiàn)

    語(yǔ)音播報(bào)模塊有哪些芯片?支持OTA升級(jí)的語(yǔ)音ic芯片模塊WT2003H

    語(yǔ)音播報(bào)模塊領(lǐng)域,WT2003H語(yǔ)音芯片是一款備受歡迎的語(yǔ)音芯片。除了提供高品質(zhì)音頻播報(bào)功能外
    的頭像 發(fā)表于 04-11 10:13 ?1772次閱讀
    <b class='flag-5'>語(yǔ)音</b><b class='flag-5'>播報(bào)</b><b class='flag-5'>模塊</b>有哪些芯片?支持OTA升級(jí)的<b class='flag-5'>語(yǔ)音</b>ic芯片<b class='flag-5'>模塊</b>WT2003H

    syn6288語(yǔ)音合成模塊資料分享

    ?SYN6288語(yǔ)音合成模塊是一款播報(bào)聲音的模塊,SYN6288語(yǔ)音
    發(fā)表于 04-28 15:45 ?22次下載

    語(yǔ)音播報(bào)模塊有哪些芯片?支持OTA升級(jí)的語(yǔ)音ic芯片模塊WT2003H

    語(yǔ)音播報(bào)模塊領(lǐng)域,WT2003H語(yǔ)音芯片是一款備受歡迎的語(yǔ)音芯片。除了提供高品質(zhì)音頻播報(bào)功能外
    的頭像 發(fā)表于 04-11 10:40 ?1793次閱讀
    <b class='flag-5'>語(yǔ)音</b><b class='flag-5'>播報(bào)</b><b class='flag-5'>模塊</b>有哪些芯片?支持OTA升級(jí)的<b class='flag-5'>語(yǔ)音</b>ic芯片<b class='flag-5'>模塊</b>WT2003H

    語(yǔ)音模塊的作用

    輕生活科技語(yǔ)音模塊的應(yīng)用十分廣泛,它可以應(yīng)用于語(yǔ)音識(shí)別、語(yǔ)音合成、語(yǔ)音
    的頭像 發(fā)表于 04-20 16:56 ?3349次閱讀
    <b class='flag-5'>語(yǔ)音</b><b class='flag-5'>模塊</b>的作用

    基于CW32的智能語(yǔ)音分類垃圾桶設(shè)計(jì)

    基于CW32的智能語(yǔ)音分類垃圾桶設(shè)計(jì)
    的頭像 發(fā)表于 11-06 16:51 ?2567次閱讀
    基于<b class='flag-5'>CW32</b>的智能<b class='flag-5'>語(yǔ)音</b>分類垃圾桶設(shè)計(jì)

    基于CW32的RC522刷卡模塊的應(yīng)用

    基于CW32的RC522刷卡模塊的應(yīng)用
    的頭像 發(fā)表于 11-02 14:53 ?2584次閱讀
    基于<b class='flag-5'>CW32</b>的RC522刷卡<b class='flag-5'>模塊</b>的應(yīng)用

    基于CW32的物聯(lián)網(wǎng)應(yīng)用

    CW32】基于CW32的物聯(lián)網(wǎng)應(yīng)用
    的頭像 發(fā)表于 11-02 15:55 ?1975次閱讀
    基于<b class='flag-5'>CW32</b>的物聯(lián)網(wǎng)應(yīng)用

    基于CW32的遙控循跡小車(chē)

    本實(shí)驗(yàn)是使用CW32單片機(jī)制作一個(gè)入門(mén)的遙控循跡小車(chē)。遙控采用藍(lán)牙配合手機(jī)APP進(jìn)行遙控。循跡使用一個(gè)5路的循跡模塊。使用OLED模塊進(jìn)行顯示當(dāng)前小車(chē)狀態(tài)。
    的頭像 發(fā)表于 11-17 17:46 ?2333次閱讀
    基于<b class='flag-5'>CW32</b>的遙控循跡小車(chē)

    TTS語(yǔ)音播報(bào)模塊簡(jiǎn)介

    在現(xiàn)代科技日新月異的時(shí)代,語(yǔ)音技術(shù)作為人工智能領(lǐng)域的重要分支,正以前所未有的速度改變著我們的生活方式。其中,TTS(Text To Speech,文本轉(zhuǎn)語(yǔ)音)語(yǔ)音播報(bào)
    的頭像 發(fā)表于 02-18 16:16 ?2287次閱讀