乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      ISD1700語音芯片SPI使用總結(jié)(一)

       ccbupt 2009-04-23
      ISD1700語音芯片SPI使用總結(jié)(一)--轉(zhuǎn)載

      ISD1700語音芯片SPI使用總結(jié)

      該語音芯片的使用要仔細(xì)分析英文PDF的資料,電路可按中青世紀(jì)論壇上面所給的電路搭建,也可按英文PDF后面所畫的電路圖焊接。

      本芯片使用不單純是一個放音電路,還含有其他的控制。因此程序首先要能完成指定地址的放音工作,其次還應(yīng)能嵌入整個費(fèi)額顯示程序中,即語音程序不能與電路其他功能相影響。費(fèi)額顯示中里面主要有八字板,點陣等其他的控制。

      SPI放音操作設(shè)計參考了網(wǎng)絡(luò)上的部分程序,各取所長設(shè)計了放音程序。在最后附上了部分程序,僅供參考。

             試驗中采用的是ISD1760語音芯片,采樣率為8K時,一共能播放60S的語音,最大地址為0x1EF,錄音實際地址為0x10-0x1EF,從此最大地址可得出:0x1EF-0x10=0x1DF=479

      479+1=480;480*125MS =60S,也就是說8K采樣率時每1個地址最小語音長度為125MS,因此如果知道單個語音的長度,暫時無編程器的時候,也可自己推斷每個語音所占的地址長度。

             SPI操作時要嚴(yán)格遵守PDF上所給的各項操作,這里不列出。暫時僅給出試驗中遇到的所有問題并如何解決的。

      1,  一開始本實驗是自己用通用板自己照電路搭建的平臺,此電路正確與否可把PLAY管腿和地短路,如果芯片有語音并且電路功放及外圍電路正確的話,此時芯片就會把所有語音全都循環(huán)讀一遍。接下來把4SPI口與單片機(jī)接通,嘗試軟件控制。主循環(huán)中可設(shè)置一個連續(xù)播放的程序,上電就循環(huán)放音。放音程序沒錯的話第一步便成功了!這期間我遇到的問題主要有放不出音,讀音混亂,有雜音。如果放不出音,先檢查電路,程序放出聲音應(yīng)該沒出現(xiàn)什么問題。

      2,  本芯片設(shè)置的APC值為0xA00x04,具體對應(yīng)功能參見中文PDF。

      接下來遇到的問題就是準(zhǔn)確放單個音和連續(xù)播放多個語音。播放單個語音首先是地址的編譯。1730以下的地址可定義為BYTE,從1740開始就需要定義為WORD,其實也可定義為BYTE,就是發(fā)送地址的時候先發(fā)0x10和后兩位即可。本程序定義為WORD,做一個偏移發(fā)送即可。

      接下來的問題就是連續(xù)播放的問題,這個問題直到最后才正確的解決。一開始的程序中只是一直發(fā)送SETPLAY,可以連續(xù)讀,就是讀的亂,其實就是錯誤操作,后來嘗試在后面添加一個2秒的延時,可以連續(xù)讀出語音了,就是每個要停頓一下才能放出第二個語音,自認(rèn)為就這樣就可以了,導(dǎo)致了以后還得解決此問題!因為此放音方式放棄了判斷芯片狀態(tài)寄存器,根本沒有實現(xiàn)連續(xù)放音,實際是單個語音人為把它們連起來播放,聽起來很不自然。問題拖到最后又衍生了別的問題,由于此放音方式的聲音輸出信號是有高有低,當(dāng)電平跳變時對功放產(chǎn)生影響,喇叭會出現(xiàn)“噗噗”聲,術(shù)語可以稱之為“過載”,如果人距離喇叭很近的話很容易聽出來。

      因此需修改程序,芯片內(nèi)部有個緩沖器,如果連續(xù)發(fā)送相同的兩個setplay命令,芯片會發(fā)完第一個音后接著連續(xù)發(fā)第二個音,并且兩音之間的間隔時間幾乎沒有。利用這個特點,可以在發(fā)完一個語音命令后一直發(fā)送讀芯片狀態(tài)命令,從返回來的數(shù)據(jù)判斷RDY,PLAY,INT位,當(dāng)?shù)谝粭l放音指令發(fā)送完,讀音播放完,立即發(fā)送第二條setplay,并以此類推。這樣實現(xiàn)了連續(xù)放音,并且聲音輸出一直為高電平(除了開始和結(jié)束音),解決了噗噗聲的問題。

      但是要一直發(fā)送讀芯片狀態(tài)指令就會影響其他指令,如本實驗是執(zhí)行串口指令,點陣刷新,八字板的顯示和亮度調(diào)整等,推薦在do{ISD_Rd_Status;}while();內(nèi)添加以上命令,便可解決只讀音不響應(yīng)其他命令的問題。串口可判斷標(biāo)志位;點陣可在連續(xù)刷新16行(16*16點陣)后執(zhí)行下一判斷芯片標(biāo)志位程序;八字板的顯示可以鎖存,因此有改變顯示時執(zhí)行一次即可;八字板的亮度需要一直執(zhí)行,但是當(dāng)亮度為3以下時(即16MS內(nèi)有3MS是點陣亮,13MS是不亮),放音時八字板會有閃爍現(xiàn)象,原因可能是執(zhí)行除了亮度調(diào)整指令外其他指令占用了大約3MS的時間,暫時還沒有好的解決辦法。

       

      正在放音的同時用串口發(fā)送調(diào)節(jié)音量也遇到了問題,一開始的解決辦法是打斷當(dāng)前語音,延時超過最大語音長度的時間,再發(fā)送修改APC的指令。這樣做的原因是如果用本程序在發(fā)完當(dāng)前音后突然發(fā)送修改APC的指令時候,芯片會從頭到尾讀所有音??!到最后仔細(xì)研究才發(fā)現(xiàn)這個程序中有個修改永久內(nèi)部寄存器的指令,當(dāng)正在進(jìn)行讀音操作發(fā)送修改內(nèi)部永久寄存器時會導(dǎo)致以上現(xiàn)象,把此程序剝離后實現(xiàn)了邊播放語音邊調(diào)節(jié)音量。發(fā)送時也要注意判斷芯片狀態(tài),RDY1后發(fā)送,RDY再次為1時繼續(xù)發(fā)放音指令。

      本芯片的錄音采用拷貝機(jī),拷貝機(jī)燒錄語音時也需注意以下問題:首先是在最后的語音后添加一空語音,以保證錄音不會出現(xiàn)問題;其次是燒錄語音時電腦除了運(yùn)行燒錄語音的程序,其它什么都不要開,什么QQ,殺毒軟件等都要關(guān)閉,最好鼠標(biāo)都不要動!燒錄語音前最好檢查下聲卡驅(qū)動,保證有驅(qū)動并且最新,最好將聲卡聲音輸出設(shè)置(本機(jī)為AC97 Audio)中喇叭組態(tài)設(shè)置為耳機(jī),不要什么立體聲等其他狀態(tài)。音量大小可以隨意,本試驗設(shè)置最大。官方意見是三分之二的狀態(tài),總之,在噪音最小的情況下也要保證音量。

             第一次芯片初始化修改APC時,最好在前面添加chk_mem這個指令,在1700datasheet里的說明并不多。大意是檢查環(huán)狀存儲器存儲地址是否首尾相連的意思。因為網(wǎng)上有人反映不添加此指令APC修改不了。

      拷貝機(jī)很貴,并不是必須買,本芯片燒錄語音的拷貝機(jī)也不是自己的,囧!燒錄語音的試驗還沒做過,將來會做這方面的試驗。另外芯片也有次品,主要表現(xiàn)是在放音時有很大的“咔嚓”聲,還有一個干脆就是燒不了音!拿去退貨!試驗樣本100ISD1760,次品率十五分之一。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多