ISD1700语音芯片SPI使用总结

上传人:cn****1 文档编号:456362434 上传时间:2023-01-07 格式:DOCX 页数:21 大小:27.39KB
返回 下载 相关 举报
ISD1700语音芯片SPI使用总结_第1页
第1页 / 共21页
ISD1700语音芯片SPI使用总结_第2页
第2页 / 共21页
ISD1700语音芯片SPI使用总结_第3页
第3页 / 共21页
ISD1700语音芯片SPI使用总结_第4页
第4页 / 共21页
ISD1700语音芯片SPI使用总结_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《ISD1700语音芯片SPI使用总结》由会员分享,可在线阅读,更多相关《ISD1700语音芯片SPI使用总结(21页珍藏版)》请在金锄头文库上搜索。

1、ISD1700语音芯片SPI使用总结(一)ISD1700语音芯片SPI使用总结该语音芯片的使用要仔细分析英文PDF的资料,电路可按中青世纪论坛上面所给的电路搭建,也可按英文PDF后面所画的电路图焊接。本芯片使用不单纯是一个放音电路,还含有其他的控制。因此程序首先要能完成指定地址的放音工作,其次还应能嵌入整个费额显示程序中,即语音程序不能与电路其他功能相影响。费额显示中里面主要有八字板,点阵等其他的控制。SPI放音操作设计参考了网络上的部分程序,各取所长设计了放音程序。在最后附上了部分程序,仅供参考。试验中采用的是ISD1760语音芯片,采样率为8K时,一共能播放60S的语音,最大地址为OxlE

2、F,录音实际地址为 Ox1O-Ox1EF,从此最大地址可得出:0x1EF-0x10=0x1DF=479479+仁480;480*125MS =60S,也就是说8K采样率时每1个地址最小语音长度为 125MS因此如果知道单个语音的长度,暂 时无编程器的时候,也可自己推断每个语音所占的地址长度。SPI操作时要严格遵守 PDF上所给的各项操作,这里不列出。暂时仅给出试验中遇到的所有问题并如何解决的。1,一开始本实验是自己用通用板自己照电路搭建的平台,此电路正确与否可把PLA Y管腿和地短路,如果芯片有语音并且电路功放及外围电路正确的话,此时芯片就会把所有语音全都循环读一遍。接下来把4个SPI 口与单

3、片机接通,尝试软件控制。主循环中可设置一个连续播放的程序,上电就循环放音。放音程序没错的话第一步便成功了!这期 间我遇到的问题主要有放不出音,读音混乱,有杂音。如果放不出音,先检查电路,程序放出声音应该没出现什么 问题。2,本芯片设置的 APC值为0xA0和0x04,具体对应功能参见中文PDF。接下来遇到的问题就是准确放单个音和连续播放多个语音。播放单个语音首先是地址的编译。1730以下的地址可定义为BYTE从1740开始就需要定义为 WOR,其实也可定义为 BYTE就是发送地址的时候先发0x10和后两位即可。本程 序定义为 WORD做一个偏移发送即可。接下来的问题就是连续播放的问题,这个问题

4、直到最后才正确的解决。一开始的程序中只是一直发送SETPLAY可以连续读,就是读的乱,其实就是错误操作,后来尝试在后面添加一个2秒的延时,可以连续读出语音了,就是每个要停顿一下才能放出第二个语音,自认为就这样就可以了,导致了以后还得解决此问题!因为此放音方式放弃了判断芯片状态 寄存器,根本没有实现连续放音,实际是单个语音人为把它们连起来播放,听起来很不自然。问题拖到最后又衍生了别 的问题,由于此放音方式的声音输出信号是有高有低,当电平跳变时对功放产生影响,喇叭会出现“噗噗”声,术语可 以称之为“过载”,如果人距离喇叭很近的话很容易听出来。因此需修改程序,芯片内部有个缓冲器,如果连续发送相同的两

5、个setplay命令,芯片会发完第一个音后接着连续发第二个音,并且两音之间的间隔时间几乎没有。利用这个特点,可以在发完一个语音命令后一直发送读芯片状态命令,从返回来的数据判断 RDY,PLAY,INT位,当第一条放音指令发送完,读音播放完,立即发送第二条setplay,并以此类推。这样实现了连续放音, 并且声音输出一直为高电平 (除了开始和结束音),解决了噗噗声的问题。但是要一直发送读芯片状态指令就会影响其他指令,如本实验是执行串口指令,点阵刷新,八字板的显示和亮度调 整等,推荐在doISD_Rd_Status;while();内添加以上命令,便可解决只读音不响应其他命令的问题。串口可判断标志

6、位;点阵可在连续刷新16行(16*16点阵)后执行下一判断芯片标志位程序;八字板的显示可以锁存,因此有改变显示时 执行一次即可;八字板的亮度需要一直执行,但是当亮度为3以下时(即16MS内有3MS是点阵亮,13MS是不亮),放音时八字板会有闪烁现象,原因可能是执行除了亮度调整指令外其他指令占用了大约3MS的时间,暂时还没有好的解决办法。四正在放音的同时用串口发送调节音量也遇到了问题,一开始的解决办法是打断当前语音,延时超过最大语音长度的时间,再发送修改 APC的指令。这样做的原因是如果用本程序在发完当前音后突然发送修改APC的指令时候,芯片会从头到尾读所有音! !到最后仔细研究才发现这个程序中

7、有个修改永久内部寄存器的指令,当正在进行读音操作发送修改内部永久寄存器时会导致以上现象,把此程序剥离后实现了边播放语音边调节音量。发送时也要注意判断芯片状态,RDY为1后发送,RDY再次为1时继续发放音指令。五本芯片的录音采用拷贝机,拷贝机烧录语音时也需注意以下问题:首先是在最后的语音后添加一空语音,以保证录音不会出现问题;其次是烧录语音时电脑除了运行烧录语音的程序,其它什么都不要开, 什么QQ杀毒软件等都要关闭,最好鼠标都不要动!烧录语音前最好检查下声卡驱动,保证有驱动并且最新,最好将声卡声音输出设置(本机为AC97Audio )中喇叭组态设置为耳机,不要什么立体声等其他状态。音量大小可以随

8、意,本试验设置最大。官方意见是三分之二的状态,总之,在噪音最小的情况下也要保证音量。第一次芯片初始化修改APC时,最好在前面添加 chk_mem这个指令,在1700的datasheet里的说明并不多。 大意是检查环状存储器存储地址是否首尾相连的意思。因为网上有人反映不添加此指令APC修改不了。拷贝机很贵,并不是必须买,本芯片烧录语音的拷贝机也不是自己的,囧!烧录语音的试验还没做过,将来会做这 方面的试验。另外芯片也有次品,主要表现是在放音时有很大的“咔嚓”声,还有一个干脆就是烧不了音!拿去退货! 试验样本100只ISD1760,次品率十五分之一。ISD1700语音芯片SPI使用总结(二)八另外

9、做了些其他实验,如在发送字节命令时,去掉了所有延时指令,芯片也可正常工作。试验中单片机为SST和STC 的产品,工作晶振 22.1184MHz和35MHz波特率为9600.九音质不满意,但硬件电路(外围干扰或功放电路等)又实在不能更改,可尝试修改音源。本实验采用的语音,在ISD2560 (并行操作,停产)播放语速很正常,而ISD1760 (替换2560)播放发现稍微有些慢。可使用COOL EDIT或者Adobe.Auditio n. v1.5.CN做些修改,本实验用后者软件做修改。做了修改破音,断音,去噪,不改变音质的情况下缩短语音播放长度,修改效果不错,可以尝试。想自己录音的可用WIN自带的

10、录音机,再配用此软件可调出不错的语音。也可软件合成语音,具体软件和语音库网上可以搞到。十目前人仍有潜在问题,发现当新板子焊有复位键时,按下复位键语音芯片会不工作,而再次按下复位键时语音芯片便可继续工作,也就是说复位键按下次数的奇数次都会产生这样的问题。但是当电路没有复位电路时就不会出现此问题!十一CM3本实验认为此处应接电阻。本电路是音频是采用 AUX输出,中青世纪的论坛上给的电路图是在此脚接一电容 接电容可能会影响音量,但在实际实验中未发现音量有变化。十二由于电路的原因,语音芯片的供电为3.3V,PDF说明2.4V-5.5V皆可。在采样率8K时震荡电阻为80K电阻,实际中无80K电阻,推荐用

11、240K与120K并联构成80K电阻!本电阻用82K代替。此电阻会影响放音的时间和音质。ISD1700语音芯片SPI使用总结(三)附:MAIN.Cvoid ISD_Reset(void)ISD_Se ndByte(CMD_1760_RESET);ISD_Se ndByte(OxOO);sbnl SD_SS=1;/ DelayX1ms(10);void ISD_PU(void)ISD_Se ndByte(CMD_1760_PU|0x10);ISD_Se ndByte(OxOO);sbnl SD_SS=1;DelayX1ms(50);void ISD_Rd_Status(void)ISD_Se n

12、dByte(CMD_1760_RD_STATUS);ISD_Se ndByte(OxOO);ISD_Se ndByte(OxOO);sbnl SD_SS=1;/ DelayXlms(IO);SRO_L=ISD_Se ndByte(CMD_1760_RD_STATUS);SRO_H=ISD_Se ndByte(OxOO);SR1=ISD_Se ndByte(OxOO);sbnl SD_SS=1;/ DelayX1ms(10);void ISD_ClrI nt(void)ISD_Se ndByte(CMD_1760_CLI_INT);ISD_Se ndByte(OxOO);sbnl SD_SS=1

13、;/ DelayX1ms(10);void ISD_CHK_MEM(void)ISD_Se ndByte(CMD_1760_CHK_MEM);ISD_Se ndByte(OxOO);sbnl SD_SS=1;/ DelayX1ms(10); void ISD_WR_APC2(BYTE Volume)ISD_Se ndByte(CMD_1760_WR_APC2);ISD_Se ndByte(Volume);/后3位为音量ISD_Se ndByte(0x04);sbnl SD_SS=1;0x04 EOM=0,VALERT=10x 0C EOM=1DelayX1ms(10);ISD_WR_NVCFG

14、(); /永久写入寄存器此程序正在放音要调整量时不要添加!void ISD_WR_NVCFG(void)ISD_Se ndByte(CMD_1760_WR_NVCFG);ISD_Se ndByte(OxOO);sbnl SD_SS=1;DelayX1ms(10);void ISD_RDAPC(void)ISD_Se ndByte(CMD_1760_RD_APC);ISD_Se ndByte(OxOO);ISD_Se ndByte(OxOO);ISD_Se ndByte(OxOO);sbnl SD_SS=1;DelayX1ms(10);SR0_L=ISD_Se ndByte(CMD_1760_RD_APC);APCL=ISD_Se ndByte(OxOO);APCH=ISD_Se ndByte(OxOO);sbnl SD_SS=1;DelayXlms(IO);void ISD_PD(void)ISD_Se ndByte(CMD_1760_PD);ISD_Se ndByte(OxOO);sbnl SD_SS=1;/ DelayX1ms(5);BYTE ISD_Se ndByte(BYTE BUF_ISD)BYTE i;BYTE dat=BUF_ISD;sblSD_SCLK=1;sbnl SD_SS=0;for(i=0;i=1;if(sblSD_MISO=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号