1. 概述:
WTN6 系列为多功能,低功耗,高性能的 CMOS 语音芯片。现有 WTN6020E、WTN6040E、 WTN6080E、WTN6170E 四种芯片(语音长度分别为 20s、40s、80s、170s),已投入市场。 音频采样率目前最高可达 32kHz,16 级音量控制,两种音频输出方式 PWM 输出和 DAC 输 出。精准的+/-1%内部震荡,不需要加外部震荡,具备超低功耗待机。
2. 功能简述:
(1)工作电压:2.2V~5.5V;
(2)待机模式下,静态电流小于 5uA(语音播放完成后,DATA /CLK 信号线保持稳定的电平 2 秒左右即可休眠);
(3)精准的+/-1%内部震荡,有低压复位(LVR=2.0V)
(4)12 位 PWM 纯音频输出,可直接驱动 8Ω/0.5W 喇叭和蜂鸣器,DAC 音频输出,可外接播放;
(5)具备串口控制模式:数脉冲,按键,一线串口,两线串口(最多可以加载 224 段语音, 后续有详解)
(6)支持 BUSY 状态输出(标准程序 BUSY 脚默认为高电平,语音播放过程中为低电平。另外,串口控制模式下,只有当语音芯片收到正确的语音地址时序 BUSY 脚才会有电平变化)
3. 管脚描述:
3.1. 管脚分布图
Pad Name | PadNo. | ATTR. | Description描述 |
PA2 | 1 | I/O | 忙信号输出 |
PA1 | 2 | I/O | 两线串口时钟信号输入端/一线串口数据信号输入端/数脉冲数据信号输入端 |
PA0 | 3 | I/O | 两线串口数据信号输入端/复位脚 |
PA3 | 4 | I/O | 暂未使用(NC) |
PWM- | 5 | out | PWM 输出脚 |
VDD | 6 | Power | 电源正极 |
PWM+/DAC | 7 | I/O | PWM、DAC 输出脚 |
GND | 8 | Power | 电源负极 |
4. 极限参数
标识 | 范围值 | 单位 |
VDD~GND 电源电压 | -0.5 ~ +5.5 | V |
Vin 输入电压 | GND-0.5 < Vin < VDD+0.5 | V |
Vout 输出电压 | GND < 0.3V ~ VDD+0.3 | V |
Top 工作温度 | -20~ +85 | ºC |
5.管脚分配
6. 一线串口时序图
7. 语音说明
8. 示例代码
Driver_speaker.h
//
// Created by seven on 2024/10/24.
//#ifndef LOCK_DRIVER_SPEAKER_H
#define LOCK_DRIVER_SPEAKER_H#include <driver/gpio.h>
#include "Utils.h"#define P_DATA 9#define UC8 uint8_t#define DATA_LOW gpio_set_level(9,0)
#define DATA_HIGH gpio_set_level(9,1)/*--------------------------------------
;模块名称:Line_1A_WTN6(UC8 DDATA)
;功 能:实现一线串口通信函数
;入 参: DDATA 为发送数据
;出 参:
;P_DATA 为数据口
;-------------------------------------*/void Line_1A_WTN6_Init(void);void Line_1A_WTN6( uint8_t DDATA);#endif //LOCK_DRIVER_SPEAKER_H
Driver_speaker.c
//
// Created by seven on 2024/10/24.
//#include "Driver_speaker.h"void Line_1A_WTN6_Init(void){gpio_config_t io_conf = {};io_conf.intr_type = GPIO_INTR_DISABLE;io_conf.mode = GPIO_MODE_OUTPUT;io_conf.pin_bit_mask = (1ULL << P_DATA);gpio_config(&io_conf);
}void Line_1A_WTN6( uint8_t DDATA)
{uint8_t S_DATA,j;uint8_t B_DATA;S_DATA = DDATA;DATA_LOW;Delay(10); //延时 5msB_DATA = S_DATA&0X01;for(j=0;j<8;j++){if(B_DATA == 1){DATA_HIGH;Delay_Us(600); //延时 600usDATA_LOW;Delay_Us(200); //延时 200us}else{DATA_HIGH;Delay_Us(200); //延时 200usDATA_LOW;Delay_Us(600); //延时 600us}S_DATA = S_DATA>>1;B_DATA = S_DATA&0X01;}DATA_HIGH;Delay(2);}