基于 WT2003H0語音芯片在掃地機(jī)/智能桌游等產(chǎn)品更換語音bin應(yīng)用設(shè)計(jì)方案介紹
一、產(chǎn)品市場(chǎng)
隨著家用電子設(shè)備的普及,各種智能化設(shè)備進(jìn)入人們生活中,如洗地機(jī)、掃地機(jī)、共享單車、智能門鎖、智能桌游、智能網(wǎng)關(guān)等,客戶想方便快捷的更換替換產(chǎn)品的音頻文件。針對(duì)部分客戶自主更換語音內(nèi)容的需求,定制化的語音方案,唯創(chuàng)知音WT2003H0系列語音芯片遠(yuǎn)程更換語音bin的功能無疑是一個(gè)很好的選擇。
本文以WT2003H0系列語音芯片為例,與唯創(chuàng)知音其余的WT2003H系列串口更新語音bin(bin文件包含運(yùn)行程序+語音)不同,唯創(chuàng)知音新推出的這款芯片功能,為直接替換語音bin文件,由MP3、WAV格式合成,不包含運(yùn)行程序。
二、產(chǎn)品應(yīng)用框圖
語音更換
三、芯片功能特點(diǎn)
(1)工作電壓:2.0-5.2V;
(2)內(nèi)置0.5W D類功放;
(3)可支持控制模式:一線、兩線單雙字節(jié)、UART串口控制、按鍵控制、SPI控制;
(4)默認(rèn)通信波特率9600,用戶可通過波特率切換指令,自由切換波特率設(shè)置,最高可達(dá)1Mbps;
(5)支持語音高品質(zhì)音頻格式,支持MP3和WAV格式,(音頻碼率支持8kbps~320kbps)聲音優(yōu)美;
(6)包含所有標(biāo)準(zhǔn)控制指令的同時(shí),更設(shè)置有串口更新音頻指令,用戶可自由選擇進(jìn)入低功耗模式,功耗
(8)大功率IO驅(qū)動(dòng)能力,最高可直接驅(qū)動(dòng)64mA;
(9)制作語音bin文件,搭配客戶MCU通過串口自由更換語音;
(10)用戶可提前預(yù)留出語音bin文件下載更新口pin點(diǎn),方便后續(xù)更換音頻+程序;
四、語音更新操作流程圖
五、相關(guān)控制指令預(yù)覽介紹
六、設(shè)計(jì)應(yīng)用案例
1) 器件選型
2)設(shè)計(jì)原理圖
A.串口更新語音說明
1.串口通信電平為3.3V TTL電平。
2.MCU TX與語音芯片RX之間需反接一個(gè)二極管,負(fù)極一端靠近MCU TX,目的是為了防止串口電平導(dǎo)致芯片未正常復(fù)位重啟。
3.下載過程中,確保語音IC的TX和RX腳不會(huì)受到干擾,建議斷開MCU的TX/RX與語音IC之間的連接或MCU不發(fā)送數(shù)據(jù)給到語音芯片。
4.離線下載時(shí),確保燒寫器中已燒錄合成的bin文件,此時(shí)方可進(jìn)行燒錄,語音bin文件不要超過flash的容量,否則導(dǎo)致下載失敗。
注:此款功能目前可支持MCU通過串口更新語音,后續(xù)如客戶需替換整個(gè)語音及功能程序,可搭配本司下載器進(jìn)行替換,因此建議提前預(yù)留出語音bin燒錄口,如上圖所示
B. 外掛Flash及功放電路說明
七、程序范例
/*本例程主要介紹,從文件系統(tǒng)讀取一個(gè)文件,并將文件數(shù)據(jù)傳輸?shù)絎T2003HX的過程,客戶也可通過其他方式
獲取文件數(shù)據(jù),進(jìn)而實(shí)現(xiàn)數(shù)據(jù)傳輸*/
#define SECTOR_SIZE 512 //本例程按照最大512字節(jié)一包數(shù)據(jù)傳輸
extern u8 decext_buf[SECTOR_SIZE]; //緩存文件數(shù)據(jù)的BUFF
extern u8 uart_rx_buffer[SECTOR_SIZE]; //緩存串口接收數(shù)據(jù)的BUFF
?
u32 exspi_msc_fsize = 0; //文件大小
u32 exspi_msc_len = 0; //文件長(zhǎng)度計(jì)數(shù)
?
void wt2003h_updata_file()
{
u16 delay_wait = 0;
u8 sum; //數(shù)據(jù)校驗(yàn)和
?
uart0_put_char(0x7e); //停止播放播放命令
uart0_put_char(0x03);
uart0_put_char(0xAB);
uart0_put_char(0xAE);
uart0_put_char(0xef);
delay_5ms(10);
?
uart0_put_char(0x7e); //創(chuàng)建文件名wt2003h.mp3命令
uart0_put_char(0x0B);
uart0_put_char(0xF1);
uart0_put_char(0x77);
uart0_put_char(0x74);
uart0_put_char(0x32);
uart0_put_char(0x30);
uart0_put_char(0x30);
uart0_put_char(0x33);
uart0_put_char(0x68);
uart0_put_char(0x2e);
uart0_put_char(0x6d);
uart0_put_char(0X70);
uart0_put_char(0x33);
uart0_put_char(0X55);
uart0_put_char(0Xef);
delay_5ms(40);
?
exspi_msc_len = 0;
?
fs_open_num(1); //文件系統(tǒng)接口,打開需要傳輸?shù)奈募?/span>
fs_lseek(0, 0);
exspi_msc_fsize = fs_get_file_size(); //文件系統(tǒng)接口,獲取需要傳輸?shù)奈募笮?/span>
exspi_msc_fsize = ((exspi_msc_fsize + 511)/SECTOR_SIZE)*SECTOR_SIZE;//轉(zhuǎn)換文件大小單位為一個(gè)SECTOR大小
?
sum = 0x05 + (u8)(exspi_msc_fsize>>24)+(u8)(exspi_msc_fsize>>16)+(u8)(exspi_msc_fsize>>8)+(u8)(exspi_msc_fsize);
?
?
uart0_put_char(0x7e); //發(fā)送文件信息命令
uart0_put_char(0x08);
uart0_put_char(0xfd);
uart0_put_char(0x00);
uart0_put_char(exspi_msc_fsize>>24);
uart0_put_char(exspi_msc_fsize>>16);
uart0_put_char(exspi_msc_fsize>>8);
uart0_put_char(exspi_msc_fsize);
uart0_put_char(sum);
uart0_put_char(0xef);
delay_5ms(20);
?
UINT len;
?
while(FR_OK == fs_read(decext_buf,SECTOR_SIZE,&len)) //文件系統(tǒng)接口,按順序一包包讀取需要傳輸?shù)奈募?shù)據(jù),記住,實(shí)際一包數(shù)據(jù)不滿SECTOR_SIZE,需要補(bǔ)0處理
{
//發(fā)送文件數(shù)據(jù)命令
uart0_put_char(0x7e);
uart0_put_char(0x00);
uart0_put_char(0xf0);
uart0_put_char(0x02);
uart0_put_char(0x00);
sum = 0xf2;
for(u16 i = 0;i<512;i++)
{
uart0_put_char(decext_buf[i]);
sum+=decext_buf[i];
}
uart0_put_char(sum);
uart0_put_char(0xef);
?
?
delay_wait = 0;
uart_rx_cnt=0;
uart_rx_buffer[0] = 0xff;
uart_rx_buffer[1] = 0xff;
uart_rx_buffer[2] = 0xff;
uart_rx_buffer[3] = 0xff;
delay_5ms(20);
?
?
while(1)
{
/* 等待中斷接收數(shù)據(jù)緩存到uart_rx_buffer 客戶也可通過查詢方式獲取返回碼數(shù)據(jù)*/
delay_us(100);
if((uart_rx_buffer[2] == 0xf0)&&(uart_rx_buffer[3] == 0x00))
{
?
delay_5ms(2);
break; //下載一包數(shù)據(jù)返回成功
}
?
if((uart_rx_buffer[1] == 0x08)&&(uart_rx_buffer[2] == 0xfd)&&(uart_rx_buffer[3] == 0x00))
{
?
WDT_EN();
WDT_CLR();
return true; //下載文件返回成功
}
delay_wait++;
if(delay_wait >= 20000) //設(shè)置2S超時(shí)
{
delay_wait = 0;
exspi_msc_len = 0;
WDT_EN();
WDT_CLR();
return false; //下載數(shù)據(jù)無響應(yīng),返回錯(cuò)誤
}
}
exspi_msc_len++;
if(exspi_msc_len*SECTOR_SIZE>=exspi_msc_fsize)
{
return false; //文件讀取完畢,未收到成功返回碼,下載返回錯(cuò)誤
}
}
}
關(guān)于我們
唯創(chuàng)知音作為一家專注于語音技術(shù)研究的高新技術(shù)企業(yè),始終堅(jiān)持以“服務(wù)好工程師”為目標(biāo),以行業(yè)語音交互器件標(biāo)準(zhǔn)化為方向,致力于讓復(fù)雜變簡(jiǎn)單,提供快捷的語音、智能物聯(lián)網(wǎng)應(yīng)用解決方案。
WT588F系列應(yīng)用設(shè)計(jì)方案,在智能鬧鐘、智能水杯、霧化加濕器等消費(fèi)電子行業(yè)領(lǐng)域內(nèi)已有成熟的應(yīng)用案例。消費(fèi)類電子產(chǎn)品應(yīng)用是公司重要的發(fā)展領(lǐng)域,未來,唯創(chuàng)知音將在更多行業(yè)推出標(biāo)準(zhǔn)化語音芯片,進(jìn)一步提升工程師的設(shè)計(jì)體驗(yàn),為消費(fèi)類電子行業(yè)標(biāo)準(zhǔn)化賦能。
審核編輯:湯梓紅
評(píng)論
查看更多