基于 WT2003H语音芯片在扫地机/洗地机语音更换+LCD扩展的应用介绍
- 产品市场
随着家用电子设备的普及,各种智能化设备进入人们生活中,如洗地机、扫地机等,目前大多数扫地机和洗地机都加了音效提示音,以及人工提示音,但较为单一,且部分应用无法随时更换语音,针对部分客户的特殊需求,去定制化语音方案。同时一些客户端的工程师,会经常感到主控MCU IO口不够,需要驱动电机、温度检测、LCD或数码管显示、语音控制播报等。唯创知音WT2003H语音芯片,能用一个IO实现复杂功能需求,留出主控MCU更多的IO口,去实现更多交互功能。
本文以WT2003H0系列芯片+一颗外挂Flash为例,介绍WT2003H系列芯片即时更换语音功能,及唯创知音后续推出的扩展类,芯片语音播报+LCD驱动显示作一些简单介绍。
- 产品应用框图
语音更新+语音播报+LCD驱动显示
单片机MCU
语音更换: 使用本司WT2003HX系列烧写下载器+上位机,通过串口快速进行语音更换
WT2003X系列语音芯片:WT2003H0-24SS
LCD驱动显示:唯创知音扩展类系列产品,本文这里仅对LCD12864作简单概述
- 芯片功能特点

注: COM(位)- IO口可扩展作为数码管位选使用;
LED(段) - IO口可扩展作为数码管段选使用;
Key(按键)- IO口可扩展作为按键使用。
- 工作电压:2.0-5.2V;
- 内置0.5W D类功放;
- 控制模式:一线、两线单双字节、UART串口控制、按键控制、SPI控制;
- UART控制模式,默认波特率9600,用户也可发送波特率切换指令,自由选择通信波特率,最大不超过1Mbps,带有文件索引播放、插播、 单曲循环、所有曲目循环、随机播放等功能。32 级音量可调、最大可以支持外挂 128Mbit 的 Flash;
- 支持语音高品质音频格式,支持MP3和WAV格式,(音频码率支持8kbps~320kbps)声音优美;
- 低功耗,芯片设置5S不播放,自动进入休眠模式,功耗可达5uA以下,如为电池类产品,可大大延长其使用寿命;
- 16 bit高精度ADC和DAC;
- 大功率IO驱动能力,最高可直接驱动64mA;
- 单芯片使用(使用内置容量)时内置语音需出厂前写入,也可选择WT2003H0+外挂Flash;
- 可重复烧写芯片程序及语音
- 搭配唯创知音上位机软件,轻松制作语音bin文件,通过程序烧录串口可自由更换语音;
- 语音播报通信控制介绍
标准UART异步串口接口,属于3.3V TTL电平接口。通讯数据格式是:起始位:1位;数据位:8位;奇偶位:无;停止位:1位。使用电脑串口调试助手,需要正确设置串口的参数,设置如图:

| 起始码 | 长度 | 命令码 | 参数 | 累加和校验 | 结束码 |
| 0X7E | 见下文 | 见下文 | 见下文 | 见下文 | 0XEF |
注意:“长度”是指长度+命令码+参数+校验和的长度,“累加和校验”是指长度+命令码+参数的累加和的低字节。
注意:Flash语音播放可以实现FLash索引播放,组合播放,插播等指令;
| CMD详解 | 对应功能 | 参数 |
| A0 | 指定FLASH索引播放(全盘) | 文件索引 |
| A1 | 指定Flash根目录文件名 | 曲目信息 |
| AA | 播放暂停命令 | 无 |
| AB | 停止命令 | 无 |
| AC | 下一曲命令 | 无 |
| AD | 上一曲命令 | 无 |
| AE | 音量控制命令 | 音量级数 |
| AF | 指定播放模式 | 循环模式 |
| B0 | 组合播放 | 曲目信息 |
| B1 | 插播 | 曲目信息 |
| B6 00 | 音频输出方式切换到SPK | B6 XX |
| B6 01 | 音频输出方式切换到DAC | B6 XX |
| B8 | 进入低功耗 | B8 XX |
| CMD详解 | 对应功能 | 参数 |
| C0 | 查询当前软件版本 | C0 XX XX XX XX |
| C1 | 查询当前设置音量 | C1 XX |
| C2 | 读取当前工作状态 | C2 XX |
| C3 | 查询Flash内音乐文件总数 | C3 XX XX |
| C9 | 查询当前播放文件地址 | C9 XX XX |
| FB | 波特率切换指令 | FB XX XX XX |
- 设计应用案例
- 器件选型
| 部位 | 型号 | 特性概述 |
| 主控 | WT2003H0-24SS | 16bit ADC和DAC、具有低功耗模式… |
| LCD | -- | LCD显示屏,本文仅以LCD12864作简单概述,亦可选择其他LCD |
| 电阻 | 0R/1K | 电阻17个 |
| 电容 | 106/104 | 106两个,104一个 |
| 喇叭 | -- | 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 { 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; //写数据 } 控制和发码时序图:
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
