热门搜索 :
考研考公
您的当前位置:首页正文

WTH040语音芯片使用资料

来源:伴沃教育
 http://www.waytronic.com/ WTH040语音芯片使用资料V2.1

1、产品特点

        

可编程一次性烧录(OTP)语音芯片; 语音长度可达40秒(6KHz采样率); PWM和DAC两种音频输出方式; 内部集成时钟振荡器; 最大可存放700个语音文件;

一线最多可加载63段地址的语音,二线最多可以加载255段语音; 具有按键控制模式、一线串口控制模式以及两线串口控制模式等; 触发防抖时间:50us(串口)和10ms(按键); 7种按键触发方式;

 支持播放不同采样率的语音文件;  支持BUSY状态输出功能;

 工作电压:DC2.4~5.0V。(需根据供电电压设定芯片为3V或5V,后续有详解)

2、芯片选型

芯片型号 WTH040-8S WTH040-8P WTH040-16S 封装形式 SOP8 DIP8 SOP16 语音长度 40S 40S 40S BUSY输出 支持 支持 支持 控制端口 3 3 4 输出端口 0 0 4 选型注意:

1. 芯片的供电电压、控制方式和输出方式在烧写程序时已经设定好,不可以再次更改,订

做芯片时需要和业务员说明应用要求。 2. 使用一线串口控制方式时,小于等于32段语音和大于32段语音的芯片IO接口不一样,

详细请查看相应的应用电路。

3. WTH040芯片与WTH080芯片的管脚不兼容。

芯片电压的设定决定了内部LDO的打开和关闭。注意芯片电压设定需和供电电压及电路接线必须匹配,否则会导致芯片损坏或不工作。下文有相应的参考电路。

芯片设定电压 3V 5V 供电电压范围 2.4V~3.6V 3.6V~5.0V 芯片控制方式有:按键控制、一线串口、两线串口。

芯片输出方式有:PWM输出(直接推动喇叭)、DAC输出(外接功放使用)。下文有相应的参考电路。

3、应用范围

     

汽车(防盗报警器、倒车雷达、GPS导航仪、电子狗、中控锁); 智能家居系统; 家庭防盗报警器; 医疗器械人声提示;

家电(电磁炉、电饭煲、微波炉); 娱乐设备(游戏机、游乐机);

http://www.waytronic.com/    

学习模型(早教机、儿童有声读物); 智能交通设备(收费站、停车场); 通信设备(电话交换机、电话机); 高级玩具。

 工业控制领域(电梯、工业设备);

4、管脚图

4.1、WTH040-8S/WTH040-8P

封装引脚 1 2 3 4 5 6 7 8 引脚标号 TG2/RST TG1 TG3 VDDL PWM- VDD PWM+/DAC GND 简述 KEY2/RST/SCK KEY1/DI/DATA KEY3/DO VDDL PWM- VDD PWM+/DAC GND 功能描述 按键2/复位按键/两线串口时钟输入 按键1/两线串口DATA IN/一线串口DATA 按键3/两线串口DATA OUT/BUSY 电源输入端,供电电压2.4~3.6V,需要接104电容到地线 PWM-音频输出 电源输入端,供电电压2.4~5V,需要接104电容到地线 PWM+音频输出/DAC音频输出 地线 4.2、WTH040-16S

封装引脚 1 引脚标号 GND 简述 GND 功能描述 地线 http://www.waytronic.com/ 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 NC TG2/RST TG1 TG3 TG4 TG5 TG6 TG7 TG8 VDDL PWM- VDD PWM+/DAC NC NC NC KEY2/RST/SCK KEY1/DI/DATA KEY3/DO KEY4 KEY5/OUT1 KEY6/OUT2 KEY7/OUT3 KEY8/OUT4 VDDL PWM- VDD PWM+/DAC NC NC 空 按键2/复位按键/两线串口时钟输入 按键1/两线串口DATA IN/一线串口DATA 按键3/两线串口DATA OUT 按键4 按键5/输出BUSY信号或者闪光信号 按键6/输出BUSY信号或者闪光信号 按键7/输出BUSY信号或者闪光信号 按键8/输出BUSY信号或者闪光信号 电源输入端,供电电压2.4~3.6V PWM-音频输出 电源输入端,供电电压2.4~5V,需要接104电容到地线 PWM+音频输出/DAC音频输出 空 空 5、电气参数

参数 工作电压 待机电流(LDO ON) 待机电流(LDO OFF) 工作电流 输出驱动电流 输出灌电流 PWM驱动电流 PWM灌电流

环境条件 无 VDD=3V,没负载 VDD=3V,没负载 VDD=3V,没负载 VDD=3V,VOUT=0.6V VDD=3V,VOUT=2.4V VDD=3V,VOUT=1.5V VDD=3V,VOUT=1.5V 最小值 2.4 3 1 典型值 3 4 1.5 600 10 30 200 200 最大值 5.0 5 3 单位 V uA uA uA mA mA mA mA 环境温度25℃,工作电压DC3V 标记 VDD ISB ISB IOP IOD IOS IOD IOS 6、控制模式

6.1、按键控制

在按键控制模式下,任意控制端均可设置为脉冲可重复、脉冲不可重复、脉冲保持、脉冲不保持、电平保持可循环、电平保持不可循环、下一曲可循环等7种触发方式。

脉冲可重复

收到正脉冲信号后开始播放语音,在语音结束前如果还收到第二次正脉冲信号,则重新开始播放语音,在语音播放的过程中无收到正脉冲信号则播放完整段语音。

http://www.waytronic.com/ 脉冲不可重复

收到正脉冲信号后开始播放语音,在语音结束前如果再次收到正脉冲信号,则没有动作产生,在语音播放结束后再次收到正脉冲信号才会重新播放语音。

脉冲保持

收到正脉冲信号后开始播放语音,正脉冲信号停止时,语音也停止播放。如果正脉冲信号一直保持,并且持续的时间超出语音播放的长度,则播放完语音即停止,不再继续播放语音。

脉冲不保持

收到正脉冲信号后开始播放语音,正脉冲信号停止后语音继续播放完毕,如果正脉冲信号一直保持,并且持续的时间超出语音播放的长度,则播放完语音即停止,不再继续播放语音。

电平保持可循环

收到高电平后播放语音,高电平信号停止时,语音也停止播放,。如果一直保持高电平信号,则会一直循环播放当前段语音语音。

电平保持不可循环

收到高电平后播放语音,高电平信号停止时,语音也停止播放,。即时一直保持高电平信号,在语音播放完毕后也不再有任何动作。

下一曲可循环

http://www.waytronic.com/

此触发方式仅限于在P00控制端口。收到正脉冲信号后开始播放第一段地址语音,再次收到正脉冲信号则播放第二段地址语音,当触发到最后一段后,再次触发则重新开始播放第一段语音,如此循环。

6.2、一线串口控制

一线串口控制模式是通过在DATA线上发送不同的脉冲数量以达到控制语音地址的目的,该控制模式具有控制端口少,可控制语音地址数量多等优点。常用于MCU控制端口紧缺的场合。

一线串口控制模式带有复位控制,复位方式有软件复位和硬件复位两种方式。默认是采用软件复位方式,需要硬件复位方式在预订芯片时需说明。软件复位方式,速度快,无需要等待。硬件复位方式可靠稳定,但需要几十毫秒复位时间。

软件复位方式控制时序:

一线串口控制时序中,先发送200us的RESET信号(注:软件复位方式高电平有效),等待5ms后发送DATA,DATA中的第一个脉冲需要保持100us的高电平,等待50ms (DAC输出方式则等待50ms,PWM输出方式则等待100us) 后继续发送第二个脉冲,自第二个脉冲起,每个脉冲的高电平保持时间为100us,且两个脉冲之间的间隔时间需要100us。发送脉冲后等待200us,开始播放地址语音,再过200us后BUSY信号发生变化。注意不同输出方式,其第一个脉冲的低电平宽度有所不同(时序图中红色部分)。其时序如下图所示。

软件复位方式(高电平有效),DAC输出方式时的一线串口控制时序:

200usRESET5msDATAVOICE200usBUSY

软件复位方式(高电平有效),PWM输出方式时的一线串口控制时序:

80ms1100us2100us3N200usGroupN200us100us http://www.waytronic.com/ 200usRESET5msDATAVOICE100us1100us2100us100us3N200usGroupN200usBUSY200us硬件复位方式控制时序:

一线串口控制时序中,先发送200us的RESET信号(注:硬件复位方式低电平有效),等待50ms后发送DATA,DATA中的第一个脉冲需要保持100us的高电平,等待50ms (DAC输出方式则等待50ms,PWM输出方式则等待100us) 后继续发送第二个脉冲,自第二个脉冲起,每个脉冲的高电平保持时间为100us,且两个脉冲之间的间隔时间需要100us。发送脉冲后等待200us,开始播放地址语音,再过200us后BUSY信号发生变化。注意不同输出方式,其第一个脉冲的低电平宽度有所不同(时序图中红色部分)。其时序如下图所示。

硬件复位方式(低电平有效),DAC输出方式时的一线串口控制时序:

200usRESET50msDATAVOICE200usBUSY

硬件复位方式(低电平有效),PWM输出方式时的一线串口控制时序:

80ms1100us2100us3N200usGroupN200us100us200usRESET50msDATAVOICE100us1100us2100us100us3N200usGroupN200us200usBUSY

http://www.waytronic.com/ 脉冲数量以及所触发语音地址的对应关系如下表所示 序号 1 2 3 …… 61 62 脉冲数 1 2 3 …… 61 62 语音地址 1 2 3 …… 61 62 注意:为了防止误触发,在一线串口控制模式中,第一个地址的语音必须为静音。 6.3、两线串口控制 6.3.1、发送地址命令

两线串口控制模式由DI及CLK发送数据信号控制语音地址,同时由DO返回相关操作数据。在发送DI前先将CLK拉高100us以唤醒芯片工作,继而发送周期为200us的CLK信号跟DI,在接收到DI数据100us后DO返回DI所发送的数据。整个数据需要发送24bit,数据发送完成后200us,开始播放地址语音。

时钟周期的工作范围为50us~4000us。

*注意:在上电时,若CLK管脚有高脉冲或者高电平,则进入烧写模式,芯片无法正常工作,须重新上电复位。使用51系列MCU的客户需注意!此类MCU复位后IO默认输出高电平,所以会导致WTH芯片进入 烧写模式。

可通过控制WTH芯片的供电电源使芯片重新上电复位,这样可以避免芯片进入烧写模式。并且在干扰较大的场合可以通过电源的控制让芯片重新上电复位,可增加稳定性。

6.3.2、读取芯片工作状态

发送16bit的数据0×2200,可以通过读取DO返回的数据,知道芯片的当前状态。由DO返回的D7数据,0代表语音停止,1代表芯片正在播放语音。

http://www.waytronic.com/ 200us

CLKDI

100us

D15

D15

D14

D14

D13

D13

D12

D12

D11

DO

100us

D7

D7

D6

D6

D5

D5

D4

D4

D3

D3

D2

D2

D1

D1

D0

D0

D11

VOICE

GroupN

http://www.waytronic.com/ 6.3.3、控制命令

命令 初始化 播放 暂停 从暂停处播放 读取芯片状态 休眠指令 管脚 DI DO DI DO DI DO DI DO DI DO DI DO 数据 0×0A0140 0×18+语音地址 0×0A0148 0×0A0140 0×2200 检验D7 0x0A0100 时钟位 24 24 24 24 16 24 说明 每次上电后需要发送此命令,以唤醒芯片。 播放地址语音 可以暂停正在播放的语音 从暂停处恢复播放语音 检验芯片是否处于停止状态,0为停止,1为播放。 直接进入休眠,可以打断正在播放的语音 注意:两线串口模式下不会自动进入休眠状态,需要低功耗可通过休眠指令让芯片进入休眠状态。

6.3.4、语音地址

WTH040在两线串口模式下最多可加载256段语音,其控制命令及语音地址对应关系如下。

序号 1 2 3 4 5 6 …… 252 253 254 255 256 命令 0×1800C8 0×1800E8 0×180108 0×180128 0×180148 0×180168 …… 0×182028 0×182048 0×182068 0×182088 0×1820A8 语音地址 0 1 2 3 4 5 …… 251 252 253 254 255 7、复位及输出状态

7.1、硬件复位

可通过PC软件设置TG2为硬件复位控制端口,负脉冲触发,保持5ms以上有效,此时复位为硬件复位,TG2为低电平时,芯片停止工作;也可以通过PC软件设置TG2为软件复位控制端口,正脉冲触发,保持100us以上有效。,此时复位为软件复位,仅清除寄存器的值,TG2保持为高,芯片也正常工作。

http://www.waytronic.com/

7.2、输出状态

TG5、TG6、TG7、TG8均可以设置为输出端口,其中可设置的状态如下

      

待机状态高电平/低电平 播放语音时输出低电平 播放语音时输出高电平 LED闪光频率6Hz LED闪光频率3Hz LED闪光频率1.5Hz LED闪光频率0.75Hz

8、应用电路

8.1、按键控制模式应用电路

8.1.1、WTH040-8S/WTH040-8P按键控制(DC3V供电,PWM输出)

8.1.2、WTH040-8S/WTH040-8P按键模式(DC3V供电,DAC输出外接三极管)

http://www.waytronic.com/ 8.1.3、WTH040-8S/WTH040-8P按键模式(DC3V供电,DAC输出外接功放)

8.1.4、WTH040-8S/WTH040-8P按键模式(DC5V供电,PWM输出)

8.1.5、WTH040-8S/WTH040-8P按键模式(DC5V供电,DAC输出外接三极管)

8.1.6、WTH040-8S/WTH040-8P按键模式(DC5V供电,DAC输出外接功放)

http://www.waytronic.com/ 8.1.7、WTH040-16S按键模式(DC3V供电,PWM输出)

8.1.8、WTH040-16S按键模式(DC3V供电,DAC输出外接三极管)

8.1.9、WTH040-16S按键模式(DC3V供电,DAC输出外接功放)

8.1.10、WTH040-16S按键模式(DC5V供电,PWM输出)

http://www.waytronic.com/

8.1.11、WTH040-16S按键模式(DC5V供电,DAC输出外接三极管)

8.1.12、WTH040-16S按键模式(DC5V供电,DAC输出外接功放)

http://www.waytronic.com/ 8.2、一线串口控制模式应用电路

8.2.1、WTH040-8S/WTH040-8P一线串口模式(MCU为DC3V供电,PWM输出)

 语音地址少于32段(包括32段)时的应用电路

 语音地址大于32段,少于62段(包括62段)时的应用电路

8.2.2、WTH040-8S/WTH040-8P一线串口模式(MCU为DC3V供电,DAC输出外接三极管)

语音地址少于32段(包括32段)时的应用电路

 语音地址大于32段,少于62段(包括62段)时的应用电路

http://www.waytronic.com/

8.2.3、WTH040-8S/WTH040-8P一线串口模式(MCU为DC3V供电,DAC输出外接功放)

语音地址少于32段(包括32段)时的应用电路

 语音地址大于32段,少于62段(包括62段)时的应用电路

8.2.4、WTH040-8S/WTH040-8P一线串口模式(MCU为DC5V供电,PWM输出)

语音地址少于32段(包括32段)时的应用电路

http://www.waytronic.com/  语音地址大于32段,少于62段(包括62段)时的应用电路

8.2.5、WTH040-8S/WTH040-8P一线串口模式(MCU为DC5V供电,DAC输出外接三极管)

语音地址少于32段(包括32段)时的应用电路

 语音地址大于32段,少于62段(包括62段)时的应用电路

8.2.6、WTH040-8S/WTH040-8P一线串口模式(MCU为DC5V供电,DAC输出外接功放)

语音地址少于32段(包括32段)时的应用电路

http://www.waytronic.com/  语音地址大于32段,少于62段(包括62段)时的应用电路

8.2.7、WTH040-16S一线串口模式(MCU为DC3V供电,PWM输出)

语音地址少于32段(包括32段)时的应用电路

 语音地址大于32段,少于62段(包括62段)时的应用电路

8.2.8、WTH040-16S一线串口模式(MCU为DC3V供电,DAC输出外接三极管)

语音地址少于32段(包括32段)时的应用电路

http://www.waytronic.com/

 语音地址大于32段,少于62段(包括62段)时的应用电路

8.2.9、WTH040-16S一线串口模式(MCU为DC3V供电,DAC输出外接功放)

语音地址少于32段(包括32段)时的应用电路

 语音地址大于32段,少于62段(包括62段)时的应用电路

http://www.waytronic.com/ 8.2.10、WTH040-16S一线串口模式(MCU为DC5V供电,PWM输出)

语音地址少于32段(包括32段)时的应用电路

 语音地址大于32段,少于62段(包括62段)时的应用电路

8.2.11、WTH040-16S一线串口模式(MCU为DC5V供电,DAC输出外接三极管)

语音地址少于32段(包括32段)时的应用电路

 语音地址大于32段,少于62段(包括62段)时的应用电路

http://www.waytronic.com/

8.2.12、WTH040-16S一线串口模式(MCU为DC5V供电,DAC输出外接功放)

语音地址少于32段(包括32段)时的应用电路

 语音地址大于32段,少于62段(包括62段)时的应用电路

http://www.waytronic.com/ 8.3、两线串口控制模式应用电路

8.3.1、WTH040-8S/WTH040-8P两线串口模式(MCU为DC3V供电,PWM输出)

8.3.2、WTH040-8S/WTH040-8P两线串口模式(MCU为DC3V供电,DAC输出外接三极管)

8.3.3、WTH040-8S/WTH040-8P两线串口模式(MCU为DC3V供电,DAC输出外接功放)

http://www.waytronic.com/ 8.3.4、WTH040-8S/WTH040-8P两线串口模式(MCU为DC5V供电,PWM输出)

8.3.5、WTH040-8S/WTH040-8P两线串口模式(MCU为DC5V供电,DAC输出外接三极管)

8.3.6、WTH040-8S/WTH040-8P两线串口模式(MCU为DC5V供电,DAC输出外接功放)

http://www.waytronic.com/ 8.3.7、WTH040-16S两线串口模式(MCU为DC3V供电,PWM输出)

8.3.8、WTH040-16S两线串口模式(MCU为DC3V供电,DAC输出外接三极管)

8.3.9、WTH040-16S两线串口模式(MCU为DC3V供电,DAC输出外接功放)

8.3.10、WTH040-16S两线串口模式(MCU为DC5V供电,PWM输出)

http://www.waytronic.com/ 8.3.11、WTH040-16S两线串口模式(MCU为DC5V供电,DAC输出外接三极管)

8.3.12、WTH040-16S两线串口模式(MCU为DC5V供电,DAC输出外接功放)

9、程序范例

9.1、一线串口控制程序范例(适应于PWM输出方式)

//MCU: STC10F04 //晶振: 11.0592MHz

#include \"reg51.h\" /* reg51 头文件 */

sbit WTH_REST = P2^1; sbit WTH_PLUSE = P2^0; sbit

/*-------------------------------------- ;模块名称:Delay_10us

;功能:延时函数,STC10F04 10us @11.0592MHz ;入参:unsigned int n 延时次数 ;出参:无

;-------------------------------------*/ void Delay_10us(unsigned int n)

KEY1 = P3^7;

http://www.waytronic.com/ { }

/*-------------------------------------- ;模块名称:Delay_10ms

unsigned char i; for(;n>0;n--) { }

for(i=8;i>0;i--) { }

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

;功能:延时函数,STC10F04 10ms @11.0592MHz ;入参:unsigned int z 延时次数 ;出参:无

;-------------------------------------*/ void Delay_10ms(unsigned int z) { }

/*-------------------------------------- ;模块名称:

WTH_1LinePWM

unsigned int i,j; for(i=z;i>0;i--) { }

for(j=8450;j>0;j--);

;功能: WTH系列芯片一线串口控制,PWM输出方式适用 ;入参: unsigned char cnt 脉冲数,必须大于0 ;出参: 0 出错; 1 成功。

;-------------------------------------*/ unsigned char WTH_1LinePWM(unsigned char cnt) {

if(cnt==0)

return 0;

WTH_REST = 1;

Delay_10us(20); //复位高电平时间200us

http://www.waytronic.com/ WTH_REST = 0;

Delay_1ms(5);

while(cnt--) {

WTH_PLUSE = 1;

//5ms

Delay_10us(10); //100us高电平 WTH_PLUSE = 0;

Delay_10us(10); //100us低电平 }

WTH_PLUSE = 0; }

/*-------------------------------------- ;模块名称:

Main

return 1;

;功能: Main函数 ;入参: void ;出参: void

;-------------------------------------*/ void Main(void) {

WTH_REST = 0; WTH_PLUSE = 0;

while(1) {

if(KEY1 == 0) {

WTH_1LinePWM(0x02); }

Delay_10ms(30); }

}

9.2、一线串口控制程序范例(适应于DAC输出方式) //MCU: STC10F04 //晶振: 11.0592MHz

#include \"reg51.h\" /* reg51 头文件 */

sbit WTH_REST = P2^1; sbit WTH_PLUSE = P2^0;

http://www.waytronic.com/

sbit KEY1 = P3^7;

/*-------------------------------------- ;模块名称:Delay_10us

;功能:延时函数,STC10F04 10us @11.0592MHz ;入参:unsigned int n 延时次数 ;出参:无

;-------------------------------------*/ void Delay_10us(unsigned int n) {

unsigned char i; for(;n>0;n--) {

for(i=8;i>0;i--) {

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } } }

/*-------------------------------------- ;模块名称:Delay_10ms

;功能:延时函数,STC10F04 10ms @11.0592MHz ;入参:unsigned int z 延时次数 ;出参:无

;-------------------------------------*/ void Delay_10ms(unsigned int z) {

unsigned int i,j; for(i=z;i>0;i--) {

for(j=8450;j>0;j--); } }

/*--------------------------------------

http://www.waytronic.com/ ;模块名称: WTH_1LineDAC

;功能: WTH系列芯片一线串口控制,DAC输出方式适用 ;入参: unsigned char cnt 脉冲数,必须大于0 ;出参: 0 出错; 1 成功。

;-------------------------------------*/

unsigned char WTH_1LineDAC(unsigned char cnt) {

if(cnt==0) return 0; WTH_REST = 1;

Delay_10us(20); //复位高电平时间200us WTH_REST = 0;

Delay_1ms(5); //5ms /*********** 第一个脉冲 *************/ WTH_PLUSE = 1; Delay_10us(10); WTH_PLUSE = 0;

//100us高电平

Delay_10ms(8); //80ms低电平

/***********************************/

/*其他脉冲*/ while(--cnt) {

WTH_PLUSE = 1;

Delay_10us(10); //100us高电平 WTH_PLUSE = 0;

Delay_10us(10); //100us低电平 }

WTH_PLUSE = 0; return 1; }

/*-------------------------------------- ;模块名称: Main ;功能: Main函数 ;入参: void ;出参: void

;-------------------------------------*/ void Main(void) {

WTH_REST = 0; WTH_PLUSE = 0;

http://www.waytronic.com/

while(1) {

if(KEY1 == 0) {

WTH_1LineDAC(0x02); }

Delay_10ms(30); } }

9.3、两线串口控制程序范例

//MCU: STC10F04 //晶振: 22.1184MHz #include \"STC8051.h\" /* STC8051 definitions */ #include sbit WT_CLK = P2 ^ 0; sbit WT_DI = P2 ^ 2; sbit WT_DO = P2 ^ 3; sbit LED_OUT = P4 ^ 6; //指示灯 sbit KEY1 = P3 ^ 7; sbit KEY2 = P3 ^ 6; sbit KEY3 = P3 ^ 5; sbit KEY4 = P3 ^ 4; unsigned char VoiceAddr = 0; //存储语音地址 /*-------------------------------------- ;模块名称: Delay_10us ;功 能: 延时函数,STC10F04 10us @22.1184MHz ;入 参: unsigned int n 延时次数 ;出 参: 无 ;-------------------------------------*/ void Delay_10us(unsigned int n) { unsigned char i; for (; n > 0; n--) { http://www.waytronic.com/ for (i = 40; i > 0; i--) { _nop_(); } } } /*-------------------------------------- ;模块名称: Delay_1ms ;功 能: 延时函数,STC10F04 1ms @22.1184MHz ;入 参: unsigned int z 延时次数 ;出 参: 无 ;-------------------------------------*/ void Delay_1ms(unsigned int z) { unsigned int i, j; for (i = z; i > 0; i--) { for (j = 1700; j > 0; j--) ; } } /*-------------------------------------- ;模块名称:WTH_2L ;功 能:WTH二线串口通信函数,高位在前,发送24位数据 ;入 参:发送的24位数据 ;出 参:芯片返回的数据 ;-------------------------------------*/ unsigned long int WTH_2L(unsigned long int dat) { unsigned char i; unsigned long int return_dat; WT_CLK = 1; Delay_100us(2); for (i = 0; i < 24; i++) { WT_CLK = 1; if (dat & 0x800000) WT_DI = 1; else WT_DI = 0; dat <<= 1; Delay_10us(5); //50us http://www.waytronic.com/ if (WT_DO) return_dat |= 0x01; else return_dat &= ~(0x01); return_dat <<= 1; Delay_10us(5); //50us WT_CLK = 0; Delay_10us(10); //100us } Delay_10us(5); //50us if (WT_DO) return_dat |= 0x01; else return_dat &= ~(0x01); return_dat &= 0x7ffffe; //屏蔽前后无用的数据 return return_dat; } /*-------------------------------------- ;模块名称: Play_voice ;功 能:WTH二线串口通信,WTH芯片播放语音 ;入 参:播放的地址0~255 ;出 参:0:播放失败;1:播放成功 ;-------------------------------------*/ unsigned char Play_voice(unsigned char addr) { unsigned long int dat; dat = 0x1800c8 + (addr << 5); if (WTH_2L(dat) == dat) return 1; //播放成功 return 0; //播放失败 } /*-------------------------------------- ;模块名称:WTH_Check_sate ;功 能:WTH二线串口通信,查询WTH芯片状态,高位在前发送16位数据 ;入 参:无 ;出 参:0:芯片未处于播放状态;1:芯片正在播放状态 ;-------------------------------------*/ unsigned char WTH_Check_sate(void) { unsigned char i; unsigned long int dat = 0x2200; unsigned long int return_dat; WT_CLK = 1; Delay_100us(2); http://www.waytronic.com/ for (i = 0; i < 16; i++) { WT_CLK = 1; if (dat & 0x8000) WT_DI = 1; else WT_DI = 0; dat <<= 1; Delay_10us(5); //等待50us后才读取DO数据 if (WT_DO) return_dat |= 0x01; else return_dat &= ~(0x01); return_dat <<= 1; Delay_10us(5); //50us WT_CLK = 0; Delay_10us(10); //100us } if (WT_DO) return_dat |= 0x01; return_dat &= 0xffff; if (return_dat & 0x80) //只判断第9位数据 return 1; //正在播放 return 0; //未播放 } void Main(void) { unsigned long int temp; P2M0 = 0x00; P2M1 = (1 << 3); //P22(DO)为高阻输入,其他为普通IO WT_CLK = 0; WT_DI = 0; //如果是51系列单片机,请在在此时才给WTH芯片上电初始化。 P01 = 1; //打开WTH的电源控制 WTH_2L(0xa0140); //芯片初始化 while (1) { if (P3 != 0xff) { http://www.waytronic.com/ if (KEY1 == 0) { Delay_1ms(20); if (KEY1 == 0) 曲 曲 用于调试 { if (Play_voice(VoiceAddr)); //每按一次播放下一 if (VoiceAddr < 255) { VoiceAddr++; } } while (KEY1 == 0); } if (KEY2 == 0) { Delay_1ms(20); if (KEY2 == 0) { Play_voice(VoiceAddr); //每按一次播放上一 if (VoiceAddr) { VoiceAddr--; } } while (KEY2 == 0); } if (KEY3 == 0) { Delay_1ms(20); if (KEY3 == 0) { WTH_2L(0x1800c8); //手动播放某一指定地址,方便 } while (KEY3 == 0); } if (KEY4 == 0) { Delay_1ms(20); if (KEY4 == 0) http://www.waytronic.com/ { WTH_2L(0xa0140); //手动对芯片重新初始化,方便用于调试 } while (KEY4 == 0); } } Delay_1ms(30); if (WTH_Check_sate()) // LED_OUT1 = 1; // else LED_OUT1 = 0; // } } 检测芯片的状态 正在播放语音 未播放语音 http://www.waytronic.com/ 10、封装尺寸图

10.1、WTH040-8S封装尺寸图

单位:mm

http://www.waytronic.com/ 10.2、WTH040-8P封装尺寸图

单位:mm

http://www.waytronic.com/ 10.3、WTH040-16S封装尺寸图

单位:mm

http://www.waytronic.com/ 11、历史版本记录

版本号 V1.0 V1.1 V1.2 V1.3 V1.4 V1.5 V1.6 V1.7 V1.8 V1.9 V2.0 V2.1 日期 2010-12-07 2010-12-27 2011-04-01 2011-6-14 2011-10-08 2011-10-19 2011-10-19 2012-04-10 2012-11-07 2013-04-22 2013-06-21 2017-02-09 描述 原始版本 修改WTH040-8S管脚定义及其相关描述和原理图 增加部分应用电路及注意事项 增加WTH040上电注意事项和休眠指令 修改一线串口控制时序、参考例程,和参考应用电路 修改应用电路图和参考例程 修正管脚图和管脚功能列表不对应的错误 修改了读芯片状态的描述,一线串口增加硬件复位方式 修改了一线串口语音地址描述、读取芯片工作状态命令描述和注意事项 修改了两线串口参考例程 修改二线串口语音地址、指令对应表格和参考例程,修改TG3管脚定义 删除5V MCU连接3V语音芯片的应用电路 更新通讯方式和一线串口描述 修改公司地址 http://www.waytronic.com/

因篇幅问题不能全部显示,请点此查看更多更全内容

Top