思泽远管家式售后服务 (让您省心放心)
5分钟内电话回访
2小时内报价
24小时在线服务
音乐芯片关于串口协议问题的日常处理
发布时间:2021-11-01 文章出自:思泽远科技
语音芯片关于串口协议问题的日常处理
一、基础说明:
1.1:IC供电电压参考范围2.2-5.5V(实际以IC资料为准)。
1.2:本协议是参考红外协议使用IO模拟的同步头+8BIT时序协议(范围0X00-0XFF)。
1.3:串口协议的使用的是十六进制。0X或者H:代表十六进制,包含(0-9,A,B,C,D,E,F),协议说 明是按照十六进制的方式做的。0X09后面是0X0A,不是0X10。
1.4:本说明主要解决思泽远公司日常的协议通信问题,如和专用的资料有差异,以专用的资料为准。
如按照本说明未能解决问题,请致电对应的业务和软件工程师。如对本说明有疑问请致电话 0796-29556853-812(胡工)
二、思泽远常见的协议时序如下图:
2.1:8MS协议时序
2.2:6MS协议时序
三、常见协议表范例(仅供参考,以实际项目的协议为准)
10进制 | 16进制 | 内容 | 10进制 | 16进制 | 内容 |
0 | 0X00 | 音乐1 | 21 | 0XF0 | 停止码 |
1 | 0X01 | 音乐2 | 22 | 0XF1 | 音量1(最小音量) |
2 | 0X02 | 音乐3 | 23 | 0XF2 | 音量2 |
3 | 0X03 | 音乐4 | 24 | 0XF3 | 音量3 |
4 | 0X04 | 音乐5 | 25 | 0XF4 | 音量4 |
5 | 0X05 | 音乐6 | 26 | 0XF5 | 音量5 |
6 | 0X06 | 音乐7 | 27 | 0XF6 | 音量6 |
7 | 0X07 | 音乐8 | 28 | 0XF7 | 音量7 |
8 | 0X08 | 音乐9 | 29 | 0XF8 | 音量8 |
9 | 0X09 | 音乐10 | 30 | 0XF9 | 音量9 |
10 | 0X0A | 音乐11 | 31 | 0XFA | 音量10 |
11 | 0X0B | 音乐12 | 32 | 0XFB | 音量11 |
12 | 0X0C | 音乐13 | 33 | 0XFC | 音量12 |
13 | 0X0D | 音乐14 | 34 | 0XFD | 音量13 |
14 | 0X0E | 音乐15 | 35 | 0XFE | 音量14 |
15 | 0X0F | 音乐16 | 36 | 0XFF | 音量15(最大音量) |
16 | 0X10 | 音乐17 | 37 | 0XE9 | 音量加 |
17 | 0X11 | 音乐18 | 38 | 0XEA | 音量减 |
18 | 0X12 | 音乐19 | 39 | 0XEB | 静音 |
19 | 0X13 | 音乐20 | 40 | 0XEC | 重播 |
20 | 0X14 | 音乐21 | 41 | 0XED | 上一曲 |
N~~ | N~~ | 42 | 0XEE | 下一曲 | |
43 | 0XEF | 循环指令:必须先发音乐协议后隔10MS再发循环指令 |
四、协议应用:
4.1:播放歌曲:比如播放下雨声,直接发送0X02。
4.2:调节音量:比如调节音量到最大,直接发送0XFF。
4.3:单曲循环:在语音播放过程中,发送0XEF,在无音乐播放过程中发0XEF无效。
4.4:协议连发:音量指令(0xf1-x0ff))+30MS+语音指令(0X00-0X0N)(N:做大音乐数)+30MS+循环指令
4.5:音量渐大:音量指令(0xf1)+30MS+语音指令(0X00-0X0N)(N:做大音乐数)+30MS+循环指令+1S+ 音量指令(0xf2)+1S+*********+音量指令(0xff)。
4.6:音量渐小:音量指令(0xff)+30MS+语音指令(0X00-0X0N)(N:做大音乐数)+30MS+循环指令+ 需要音量减小的时间+音量指令(0xfe)+1s+音量指令(0xfd)+****+音量指令(0xf1+)+30MS+停 止(0xf0)。
4.7:在有BUSY信号的情况下如何连播:比如下雨声,发送0X02后,检测BUSY脚是否为高电平, 如果是高电平,表示语音在播放,如果是低电平表示语音播放完毕,在检测BUSY为低电平的 时候发送下一条播放指令。
4.8:在没有BUSY信号的情况下如何连播:比如下雨声,语音长度5秒。MCU发送0X02后计时5 秒,5秒后发送下一条播放指令。难点:每条语音长度不一,需要建立全部语音长度的表库。
4.9:上电音量问题:上电一般默认为最大音量:如果上电音量不合适,需要在上电的时候发送对 应的音量指令,比如0XF6。但是MCU和语音IC的上电启动时间不一致,语音IC的上电启动时 间大概200MS,建议MCU在上电后延时200MS发送音量指令,防止因为语音IC未启动导致的丢 码。
4.10:停止播放语音:直接发送停止指令0XF0。
五、常见疑问解答
5.1:需要几个IO和语音IC通信
答:语音IC一般有DATA和BUSY两条IO脚做通信,对于语音IC,DATA是输入脚,接收MCU发送 的协议,是必须使用到的。BUSY是输出脚,反馈语音的播放状态,如果MCU需要连播,检测语 音播放状态,或者检测协议是否发送成功时需要使用BUSY。
5.2:原理图标准的BusyLo,BusyHi,BUSY,BUSYH之间的区别。
答:BusyLo 即有声音为低电平,无声音为高电平,不用可悬空。
BusyHi 即有声音为高电平,无声音为低电平,不用可悬空。
BUSY/BUSYH,一般和BusyHi 功能一致,有声音为高电平,无声音为低电平,不用可悬空。
5.3:DATA脚有些是悬空,有些要外置上下拉。
答:请按照原理图配置,一般默认悬空,需要外置上下拉的原理图会明确标注。
5.4:关于语音IC和MCU之间电压的问题
答:通信的MCU电压务必和音乐芯片电压保持一致,防止漏码与丢失。
音乐芯片的IO为CMOS特性,输入IO检查为高电平必须保证电压大于0.7VDD ,Input High Voltage (VIH) CMOS (0.7VDD),输入IO检查为低电平必须保证电压小于0.3VDD,Input Low Voltage (VIL) CMOS (0.3VDD)。
建议不要在临界值附近,IC制程上会有偏差。
关于IC之间通信的问题必须注意,否则会导致通信失败,丢码,异常。
5.5:关于语音IC供电电压明显大于MCU供电电压怎么办。
答:使用一个NPN三极管和一个PNP三极管构成通信电路。
5.6:关于语音IC供电电压明显小于MCU供电电压怎么办。
答:使用两个电阻分压的方式构成通信电路。
5.7:无法通信。
答:1/第一步先确定语音IC的程序编号和原理图,DATA脚位是否正确。
2/第二步核对MCU和语音IC的供电是否一致。
3/第三步抓取MCU发送的协议和串口时序对比是否一致,脉宽是否偏差太大(一般偏差+-10% 可兼容)。
4/第四步请注意有些数据位发码顺序,比如8MS协议是先发高位,在发低位。而6MS协议是先 发低位再发高位。
5/第五步请注意协议发送完毕后要建议间隔30MS以上在发送其他协议。
6/第六步协议发送完毕后信号要恢复到默认值,比如8MS和6MS协议都是要在发完协议后恢复 到低电平。
7/第七步请检查喇叭是否正常,有测试按键,请参考原理图使用测试按键,测试IC是否正常。
8/第八步有带功放的请检查功放是否开启,DAC脚是否有信号。
5.8:同步头的作用
答:同步头用于唤醒语音芯片,并且一个同步头只能带8BIT的数据,要发送多组数据请按照4.4操作。
六:C语言范例(8MS协议时序)
#ifndef __sendcode__
#define __sendcode__
#define datapin (1<<0) //数据引脚
#define dataport GPIOA // 数据引脚端口
#define clr_wdt() //清除看门狗指令
#define data1() dataport = datapin
#define data0() dataport &=~datapin
void delay_ms(unsigned char ms);
void delay_us(unsigned int us);
void send_code_init(void);
void send_head (void);
void send1(void);
void send0(void);
void sendByte(unsigned char buf);
#endif
#include "send_code.h"
void delay_ms(unsigned char ms)
{
while(ms--)delay_us(1000);
}
void delay_us(unsigned int us)
{
clr_wdt();
}
void send_code_init(void)
{
data0();
}
void send_head (void)
{
data1();
delay_ms(8);
data0();
delay_ms(1);
}
void send1(void)
{
data1();
delay_us(1500);
data0();
delay_us(500);
}
void send0(void)
{
data1();
delay_us(500);
data0();
delay_us(1500);
}
void sendByte(unsigned char buf)
{
unsigned char i;
send_head();
for (i = 0;i<8;i++)
{
if (buf&0x80)
{
send1();
}
else
{
send0();
}
buf <<= 1;
}
}
七:C语言范例(6MS协议时序)
#ifndef __sendcode__
#define __sendcode__
#define datapin (1<<0) //数据引脚
#define dataport GPIOA // 数据引脚端口
#define clr_wdt() //清除看门狗指令
#define data1() dataport = datapin
#define data0() dataport &=~datapin
void delay_ms(unsigned char ms);
void delay_us(unsigned int us);
void send_code_init(void);
void send_head (void);
void send1(void);
void send0(void);
void sendByte(unsigned char buf);
#endif
#include "send_code.h"
void delay_ms(unsigned char ms)
{
while(ms--)delay_us(1000);
}
void delay_us(unsigned int us)
{
clr_wdt();
}
void send_code_init(void)
{
data0();
}
void send_head (void)
{
data1();
delay_ms(6);
}
void send1(void)
{
data0();
delay_us(500);
data1();
delay_us(1500);
}
void send0(void)
{
data0();
delay_us(1500);
data1();
delay_us(500);
}
void sendByte(unsigned char buf)
{
unsigned char i;
send_head();
for (i = 0;i<8;i++)
{
if (buf&0x01)
{
send1();
}
else
{
send0();
}
buf >>= 1;
最新新闻
语音芯片在儿童玩具电子发声书方案应用
玩具发声书语音芯片方案以其独特的功能设计和广泛的应用场景,成为市场上备受欢迎的选择。轻松一点,知识响起,寓教于乐,从此开启孩子的声音探索之旅。
F29-38门铃音乐芯片介绍和ic电路图
思泽远科技的F29-38门铃音乐芯片是一款专为门铃设计的集成电路,旨在通过提供丰富多样的音乐播放功能,提升门铃的整体体验。这款芯片以其高集成度、低功耗以及灵活的定制性,在智能家居市场中占据了一席之地。
思泽远科技语音芯片应用领域:
〖一〗语音玩具(智趣玩具、故事机、绘本、挂图、毛绒公仔、发声发光玩具、宠物玩具、蓝牙童车、音乐盒等等) 〖二〗消费类电子(白噪音睡眠仪、智能闹钟、唤醒灯、闹钟、唤醒钟、音乐星空灯、婴幼安抚机、成人用品、飞机杯、充电宝、耳温枪、电子称、消毒盒、按摩仪、艾灸仪、电动车、圣诞礼品、音乐贺卡、万圣节、喊话器、变声器等等) 〖三〗智能家居(无线门铃、可视门铃、迎宾器、按摩椅、洗地机、扫地机、智能锁、安防监控
联系方式 · contact
联系电话: 0755-2911 2251400-993-7233
专线负责人手机:13760327233( 吴经理 )
公司地址:深圳市宝安区西乡街道宝民二路河东大厦A座7楼7001-7009室
手机扫码进入网站
微信扫码沟通
Copyright © 2021 深圳市思泽远科技有限公司 版权所有 备案号:粤ICP备15066427号 Powered By HuahanLink