基于 WT2003H語音芯片在掃地機/洗地機語音更換+LCD擴展的應用介紹
一、產品市場
隨著家用電子設備的普及,各種智能化設備進入人們生活中,如洗地機、掃地機等,目前大多數掃地機和洗地機都加了音效提示音,以及人工提示音,但較為單一,且部分應用無法隨時更換語音,針對部分客戶的特殊需求,去定制化語音方案。同時一些客戶端的工程師,會經常感到主控MCU IO口不夠,需要驅動電機、溫度檢測、LCD或數碼管顯示、語音控制播報等。唯創知音WT2003H語音芯片,能用一個IO實現復雜功能需求,留出主控MCU更多的IO口,去實現更多交互功能。
本文以WT2003H系列芯片+一顆外掛Flash為例,介紹WT2003H系列芯片即時更換語音功能,及唯創知音后續推出的擴展類,芯片語音播報+LCD驅動顯示作一些簡單介紹。
二、產品應用框圖
語音更新+語音播報+LCD驅動顯示
單片機MCU
語音更換: 使用本司WT2003HX系列燒寫下載器+上位機,通過串口快速進行語音更換
WT2003X系列語音芯片:WT2003H0-24SS
LCD驅動顯示:唯創知音擴展類系列產品,本文這里僅對LCD12864作簡單概述
三、芯片功能特點
注: COM(位)- IO口可擴展作為數碼管位選使用;
LED(段) - IO口可擴展作為數碼管段選使用;
Key(按鍵)- IO口可擴展作為按鍵使用。
WT2003HX-24SS功能特點
(1)工作電壓:2.0-5.2V;
(2)內置0.5W D類功放;
(3)控制模式:一線、兩線單雙字節、UART串口控制、按鍵控制、SPI控制;
(4)UART控制模式,默認波特率9600,用戶也可發送波特率切換指令,自由選擇通信波特率,最大不超過1Mbps,帶有文件索引播放、插播、 單曲循環、所有曲目循環、隨機播放等功能。32 級音量可調、最大可以支持外掛 128Mbit 的 Flash;
(5)支持語音高品質音頻格式,支持MP3和WAV格式,(音頻碼率支持8kbps~320kbps)聲音優美;
(6)低功耗,芯片設置5S不播放,自動進入休眠模式,功耗可達5uA以下,如為電池類產品,可大大延長其使用壽命;
(8)大功率IO驅動能力,最高可直接驅動64mA;
(9)單芯片使用(使用內置容量)時內置語音需出廠前寫入,也可選擇WT2003H0+外掛Flash;
(10)可重復燒寫芯片程序及語音
(11)搭配唯創知音上位機軟件,輕松制作語音bin文件,通過程序燒錄串口可自由更換語音;
四、語音播報通信控制介紹
標準UART異步串口接口,屬于3.3V TTL電平接口。通訊數據格式是:起始位:1位;數據位:8位;奇偶位:無;停止位:1位。使用電腦串口調試助手,需要正確設置串口的參數,設置如圖:
注意:“長度”是指長度+命令碼+參數+校驗和的長度,“累加和校驗”是指長度+命令碼+參數的累加和的低字節。
注意:Flash語音播放可以實現FLash索引播放,組合播放,插播等指令;
五、設計應用案例
1) 器件選型
2)設計原理圖
如上原理圖所示,LCD12864 的 8 位數據口與芯片IO口相連, LCD12864 的 RS、RW、EN 腳與語音芯片的 4、5、6 管腳連接,LCD片選腳CS與芯片第20腳相連
3)部分代碼示例
3.1語音芯片串口測試部分
extern u8 Rx_Buffer_t[UART_MAX_RX_BETY];
extern u32 Rx_Len_t;
extern u8 wt_uart_rx_flag_a;
static u8 test_mode = 0;
?
u8 Uart_Receive_Deal(void)
{
?
u16 Code_Sum_t = 0;
u32 code_num = 0;
code_num = Rx_Len_t;
?
put_buf(Rx_Buffer_t,Rx_Len_t);
if(Rx_Buffer_t[0] != CODE_HEAD)
{
//uart_buff();
return 0;
}
?
if(Rx_Buffer_t[code_num - 1] != CODE_TAIL)
{
//uart_buff();
return 0;
}
?
//累加和
for(u8 i=1; i[1];>
{
Code_Sum_t += Rx_Buffer_t[i];
}
//校驗
if(Rx_Buffer_t[code_num - 2] != (Code_Sum_t & 0xff))
{
//uart_buff();
return 0;
}
?
if(Rx_Buffer_t[2]==0xA1)
{
test_mode = Rx_Buffer_t[3];
test_set_mode(test_mode);
}
else
{
log_info("Comand Erro!\n");
}
return 1;
}
3.2 LCD命令和數據寫入
void Lcd_WriteCmd(cmd) //寫入命令到LCD
{
LCD12864_CS = 0; //打開片選
LCD12864_RD = 1; //讀使能
LCD12864_RS = 0; //選擇命令
LCD12864_RW = 0; //選擇寫模式
_nop_();
_nop_();
_nop_();
DATA_PORT = cmd; //放置命令
_nop_();
_nop_();
_nop_();
LCD12864_RW = 1; //寫入命令
}
void Lcd_WriteData(dat) //寫入數據到LCD
{
LCD12864_CS = 0; //打開片選
LCD12864_RD = 1; //讀失能
LCD12864_RS = 1; //選擇數據
LCD12864_RW = 0; //選擇寫模式
_nop_();
_nop_();
?
DATA_PORT = dat; //放置數據
_nop_();
_nop_();
?
LCD12864_RW = 1; //寫數據
}
?
控制和發碼時序圖:
更多詳情可搜索:深圳唯創知音電子有限公司,與在線客服溝通,我們會發送一份選型表給到大家,芯片 與 模塊 還可以申請免費送樣服務,期待您的光臨。
評論
查看更多