日本在线www-日本在线播放一区-日本在线不卡免费视频一区-日本在线不卡视频-成人影院久久久久久影院-成人影院一区二区三区

最新廣告
關注中國自動化產業發展的先行者!
工業智能邊緣計算2025年會
CAIAC 2025
2025工業安全大會
OICT公益講堂
當前位置:首頁 >> 案例 >> 案例首頁

案例頻道

嵌入式音頻采集和頻譜分析技術
  • 企業:控制網     領域:機器視覺     行業:石油天然氣    
  • 點擊數:3743     發布時間:2005-10-12 17:26:11
  • 分享到:
論述了以嵌入式處理器ARM EP7312和模數轉換器UDA1341為核心,對音頻信號進行采集、存儲、FFT變換和顯示技術。



    對信號進行頻譜分析是一種常用的獲取信號頻域信息的方法。本設計采用EP7312嵌入式處理器和UDA1341 模數轉換芯片對音頻信號進行采集,采用512點的時間抽取基2 FFT算法,對所采集的數據進行處理,在LCD上同時顯示時域波形和頻譜曲線。本系統具有體積小、成本低、采集速度快等特點,可應用于鋼琴調率和環境監測、故障診斷等便攜式語音采集、顯示和頻譜分析的場合。

1  數據采集電路設計

    系統由模數轉換模塊、系統控制與數據處理模塊、顯示模塊和鍵盤控制模塊組成,示意圖如圖1所示。



圖1  基于IIS總線的嵌入式頻譜分析系統體系結構




1.1  系統控制模塊

    本部分的核心是嵌入式處理器EP7312,這是一款屬于ARM7系列,適用于對價位和功耗敏感的消費類應用場合的處理器。Ep7312中的DAI接口是一種高速串行的數字音頻接口,可以連接與DAI接口兼容的音頻設備。接口通過位時鐘和幀同步時鐘產生64bit幀數據。數字音頻數據的接收和發送均采用全雙工方式,對應于12個采樣深度的接收FIFO和8個采樣深度的發送FIFO,FIFO的數據寬度是16bit。系統的外部存儲器由4M的NOR Flash(29LV160TE)和16M的
SDRAM(hy57v641620hg)組成。

1.2  模數轉換模塊

    模數轉換芯片采用的是Philip公司推出的UDA1341,芯片的模數轉換(ADCs)部分采用了先進的Sigma-delta過采樣技術。芯片的工作電壓范圍為:2.4~3.6V,由于其功耗特別低,非常適合于MP3、MD播放器等低功耗場合的應用。UDAl341芯片除了提供模數轉換功能外,還具有數模轉換部件(DACs)、L3接口、IIS(Inter-IC Sound bus)接口和麥克風揚聲器接口。

    在音頻信號采集系統中,L3接口分別連到Ep7312的3個通用數據輸出引腳上。Ep7312通過向這個通用端口發送數據來對Uda1341進行初始化。

1.3  IIS總線

    IIS又稱I2S,是Philip公司提出的串行數字音頻總線協議。目前很多音頻芯片和MCU都提供了對IIS的支持。Ep7312和UDA1341都支持IIS總線協議。但是由于Ep7312只能接收16bit數據,所以在數據采集中只取了UDA134120bit輸出數據中的高16位。圖2是UDA1341 IIS總線的時序圖,由圖中可知數據的最高位總是出現在WS(也就是一幀開始)變化后的第2個BCK脈沖處。這就使得接收端與發送端的有效位數可以不同。如果接收端所能處理的有效位數少于發送端,則可以放棄數據幀中的低位數據;如果接收端能處理的有效位數多于發送端,可以自行補足剩余的位。這種同步機制使得數字音頻設備的互連更加方便,而且不會造成數據錯位。



圖2  UDA1341 中的IIS總線格式


    Ep7312的DAI接口中的主時鐘(SUB)、位時鐘(SSICLK)、左右通道時鐘(SSITXFR)、音頻數據(SSIRXDA)分別接UDA1341 中的SCLK、BCK、WS、DO。為了保證EP7312的SSIRXDA能正確接收到UDA1341 發送的數據,需要使兩者之間的左右通道時鐘一致,即把SSITXFR同時作為SSITXFR和UDA1341中的WS輸入。

2  系統的軟件設計

    系統的軟件設計包括三部分:啟動代碼boot loader、驅動程序設計和應用程序設計,其中重點是驅動程序和應用程序的設計。

2.1  啟動代碼boot loader

    boot loader是系統加電后運行的一段代碼。雖然對于具體的嵌入式系統而言,不同的系統完成的功能不同,但是boot loader的功能基本相同,完成如下操作:對硬件設備初始化,把代碼從Flash加載到Sdram,跳轉到Sdram中的代碼執行。圖3是bootloader的流程圖。



圖3  bootloader流程圖



2.2  Lcd和UDA1341驅動程序的設計

    在嵌入式系統中,設備驅動程序隱藏了各種設備的具體細節,維護著設備的正常工作,在用戶與設備之間起到了橋梁作用。開發設備驅動程序是開發嵌入式系統的重要工作之一。在該系統中,有兩個重要設備的驅動:UDA1341驅動和LCD驅動。

(1)  LCD驅動

    本設計采用的LCD為320(W)×240(H)像素的彩色STN液晶屏。

    在LCD上顯示的曲線是通過對采集的離散的數據點用直線連接,以提高顯示效果。因此驅動中的一個重要函數是連線函數lcd_vline();
int lcd_vline(unsigned char *fbuf, int x, int y, int y1, int color, int xorm)
{
  //fbuf為緩沖區的初始地址,p是點(x,y)在LCD上對應的地址
p = fbuf + x * 12 / 8 + y * (320 * 3 * 4 / 8);
  //經過變換使y<=y1
for (; y <= y1; y++){
//根據x的奇偶性設置點的顏色來決定是否要顯示該點
 ….……………………………..
 p += (320 * 3 * 4 / 8);
}
  return 0;
}

(2)  UDA1341驅動

    由于UDA1341實現的是高速數據流的采集,其數據采集速度非常快,為了與其相匹配,采用了快速中斷fiq。在申請快速中斷的時候需要用到它的首地址和未地址,為了得到這兩個地址,中斷處理函數必須用匯編來編寫。因此,該驅動有兩個文件構成:主文件UDA1341.c和中斷文件fiq.s。在此著重說明主文件中的設備初始化函數UDA1341 init()和中斷函數。

    Ep7312按一定的時序向L3接口寫數據實現對UDA1341的初始化。L3接口包括L3MODE、L3CLOCK、L3DATA三個腳,分別連接ep7312的port d 端口的第3、4、5位,Ep7312通過向port d端口這三位輸出數據實現UDA1341的初始化。UDA1341的L3控制模式按照傳送信息的不同分為地址傳送模式和數據傳送模式,圖4是地址傳送模式時序圖,圖5 是數據傳送模式的時序圖。



圖4  地址傳送模式時序圖



 



圖5  數據傳送模式的時序圖



    UDA1341的驅動中還要包括ep7312中DAI接口的初始化。由于在ep7312中DAI、SSI2、CODEC共用一組硬件資源,需要在程序中通過設置來選擇DAI接口。同時,驅動程序還需要設置IIS總線中采樣時鐘頻率、左右通道時鐘頻率、主時鐘頻率。

int UDA1341 init (void)
{
INTMR3 = 0x0; //禁止中斷
SYSCON3|=0x0e;      // 選擇DAI接口
SYSCON3&=0xffffdff;  //設置BCLK為WS的64倍
DAI64FSCR=0x240b;//采樣頻率的選取,這里設置是8kHz
PORTDDIR=PORTDDIR&0xc7;  //設置D端口為輸出
PORTDDAT=PORTDDAT|0x10;  //初始化D端口的3、4、5位 (pd3=0;pd4=1;pd5=0)
sendadd(0x16);//地址傳送,地址為0x16
senddat(0x40);//數據傳送,reset所有設置
sendadd(0x16);
senddat(0x21);// 設置SCLK為256Fs,數據格式為IIS。
..……………………………
 //注冊設備
rc = register_chrdev(UDA1341 _major, "UDA1341 ", &UDA1341 _fops);
  //申請fiq
fiqhandler_start = &dai_fiq_handler_start;
fiqhandler_length = &dai_fiq_handler_end - &dai_fiq_handler_start;
if (claim_fiq(&UDA1341 _fh))
{
   printk("UDA1341 _fh: couldn't claim FIQ.\n");
     return;
}
set_fiq_hander(fiqhander_start,fiqhander_length);
set_fiq_regs(regs);
  …………………………….
}

中斷處理程序:保存被中斷寄存器環境,清中斷位,讀取FIFO中的數據放入公共數組中,恢復被中斷寄存器環境,然后返回被中斷程序。
.text
        .align  2
        .global dai_fiq_handler_start
        .global dai_fiq_handler_end
dai_fiq_handler_start: //程序首地址
………………………………….
dai_fiq_handler_end: //程序未地址

2.3  應用程序設計

應用程序設計主要包括數據的采集和存儲、數據的處理(FFT)、波形的顯示和刷新。

(1)  數據的采集和存儲

    在該模塊中,由于UDA1341對輸入信號的交流分量進行采樣,在采集到的16位數據中,最高位是符號位,當輸入電壓為正時,該位為0,當輸入信號電壓為負時,該位為1。Ep7312 接收UDA1341采集的數據放到FIFO中,當12個字節的FIFO半滿時,即FIFO中有6個或者多于6個數據時產生中斷,調用快速中斷處理程序讀取數據放入共用數組中。

    對于ep7312可產生8k~48kHz的采樣頻率,而在對低頻段信號進行采樣時,如果不采取一定的措施記錄這些低頻信號的時域特征需要很大的內存空間。例如,在采樣頻率為8kHz時,被采集的信號頻率為15Hz,一個周期的數據量為600個,而在系統的LCD上用256個點是無法把這600個數據表述清楚的。要想更好地顯示時域波形,需要提高LCD每行顯示的個數或者縮小采樣頻率。對于要想改變LCD每行的顯示個數似乎不太現實;EP731的采樣頻率最小是8kHz,不能滿足需要;在設計中,使用了通過軟件算法來實現減小采樣頻率的方法。具體原理如下:在采樣頻率一定時,兩個采樣數據的時間間隔是一定的,時間間隔的大小為采樣頻率的倒數。可以按一定規律丟棄一些數據來實現采樣頻率的減小。例如當采樣頻率為8kHz時,進行連續采樣5120個點放到數組data[5120],然后按每16個數據取一個,即取data[512]中的0、15、31……、5103,此時實現的采樣頻率為500Hz,對于25Hz的信號在500Hz的采樣頻率下,時域波形能夠很好地顯示出來。

(2)  數據處理模塊

    在該模塊,采用FFT算法對所采集的數據進行處理,把得到的頻譜曲線和時域圖同時顯示在LCD上。FFT變換的具體實現如下:

首先進行碼位倒置,得到FFT運算所需要的輸入序列。然后采用3層循環完成全部運算(N點FFT)。

第一層循環:算法討論中的“級”作為第一層循環,N點FFT運算共有M級,這里,用m作循環變量,0 ≤ m < M。

第二層循環:算法討論中的“組”作為第二層循環,第m級的組數為,用j作循環變量,

第三層循環:每組里的蝶形單元作為第三層循環,每一組里共有蝶形單元2m個,用i作循環變量,0 ≤ i < 2m

    分析上面循環嵌套可以得出:第三層循環完成個2m個蝶形單元計算;第二層循環使第三層循環進行次,因此,當第二層循環完成時,共進行次蝶形單元計算。第一層循環又使第二層循環進行了M次,因此,當第一層循環完成時,共進行了次蝶形單元計算。

(3)  波形顯示和刷新模塊

    由于要采樣的信號頻率的未知性,對采樣頻率的選擇設置了兩種方式:手動方式和自動模式。對于手動模式,通過鍵盤人為地設定采樣頻率,然后進行采樣,處理和時域圖、頻譜圖的顯示。對于自動模式,首先通過設定采樣頻率為48kHz,然后采樣,通過FFT計算相應的頻率大小,根據計算出的頻率來重新設定相應的采樣頻率,在進行采樣,顯示時域和頻域圖。例如,當采樣信號頻率為25Hz時,在采樣頻率為48kHz時,進行FFT處理后能夠得到頻率大小為50Hz,然后選擇采樣頻率為8kHz,軟件實現采樣頻率為500Hz,則此時能很好的顯示時域波形,并且此時FFT計算的頻率為25Hz,精度更高。

    下面介紹當選擇采樣頻率為8kHz時,LCD的顯示情況。EP7312為LCD的控制提供了良好的支持,顯示主要通過LCD控制器完成的。因為要把時域數據和經過FFT處理后的數據同時顯示在LCD上,所以把LCD的上半屏分配用于顯示時域圖,下半屏用于顯示頻譜圖。由于LCD的坐標與顯示波形所用坐標的X軸方向相反,并且要把波形顯示在特定的區域,所以要對數據進行處理。在LCD右下角的坐標為(0,0),時域和頻域的坐標軸原點分別對應(300,27)、(300,137)。采集的音頻數據范圍為0~0X1FFFF,FFT變換過的數據范圍是0~0xFF。顯示時域圖的數據VAL與其在LCD上Y坐標的關系式為:

Y=(data[2*(256-i)])*25/0xffff+180;

   由采樣頻率可以知道每兩個采樣點的時間間隔是1/8000 s。LCD上時域圖中顯示的是512個中的256個采樣數據點,每兩個數據點取其中一個,在時域圖的坐標軸上每十個點顯示一個刻度,即每個格代表的時間是1.25ms。

用于顯示頻譜圖的數據NUM與其在LCD上Y坐標的關系式為:

Y=137+NUM*90/0XFF

    在頻域圖上可以顯示當前測得的主頻率。當前主頻率具體計算公式如下:設FFT處理后得到的數組為frequency[512],tempint對應frequency數組中后256個數據中最大值出現的位置,則此時主要頻率大小為(512-tempint)*4000/256。當采樣頻率為8kHz時,可測得的頻率范圍為16~4000Hz,即256個點等分4000Hz。

    圖6是當信號發生器產生140Hz的被測信號,系統采樣頻率為8kHz時,該信號的時域波形及經過變換得到的頻譜曲線。從圖中可以看到,通過FFT變換可較準確地掌握輸入信號的頻率特性。

3  結語

    本文以嵌入式處理器EP7312和模數轉換芯片UDA1341 為核心設計了音頻數據采集和FFT處理系統。采用了fiq技術對音頻數據流進行實時性的采集,具有速度快,采樣頻率可靈活設置等特點,可應用于環境監測、故障診斷等便攜式語音采集、顯示和頻譜分析的場合。



圖6  在LCD上顯示的時域和頻域圖


 

熱點新聞

推薦產品

x
  • 在線反饋
1.我有以下需求:



2.詳細的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 天堂网在线观看-天堂网在线www最新版在线-天堂网在线www资源在线-天堂网在线www资源网-精品久久一区二区-精品久久一区 | 日本成人一区,欧美日韩亚洲无线码在线观看,交换伦交,在线观看国产视频,日韩欧美视频一区,国产精品欧美一区二区三区不卡 | 亚洲精品色情影片-亚洲精品沙发午睡系列-亚洲精品深夜AV无码一区二区-亚洲精品天堂在线观看-亚洲精品偷拍AV一区二区-亚洲精品偷拍影视在线观看 | 亚洲精品在线免费观看,在线日韩欧美,午夜高清在线观看免费完整版,亚洲综合久久久,久久一区二区三区免费,日韩小视频在线 | 久久精品一区二区三区不卡牛牛,国产片精品电影www,久久久久久97,www奇米,好姑娘中文在线播放,美女被羞羞视频网站在线 | 欧美精品久久久亚洲,欧美国产第一页,亚欧成人一区二区,久久精品一区二区影院,国产成人精品综合久久久,亚洲国产精品一区 | 中文字幕第一页亚洲-中文字幕第一页国产-中文字幕第38页永久乱码-中文字幕不卡在线观看-久久久久青草大香线综合精品-久久久久青草 | 亚欧成人毛片一区二区三区四区-亚欧成人乱码一区二区-亚久久伊人精品青青草原2020-亚飞与亚基在线观看-国产综合成人观看在线-国产综合91天堂亚洲国产 | 国产精品视_精品国产免费-国产精品视-国产精品深夜福利免费观看-国产精品三区四区-四虎成人4hutv影院-四虎成年永久免费网站 | 美国a毛片-美国成人影院-美国毛片aa-美国毛片aaa在线播放-美国毛片基地-美国毛片基地a级e片 | 91看片淫黄大片欧美看国产片-91看片在线观看-91蝌蚪91九色-91蝌蚪国产-91蝌蚪九色-91蝌蚪论坛 | 欧美日韩国产精品-欧美日韩国产剧情-欧美日韩国产伦理-欧美日韩国产欧美-you ji z z日本人在线观看-you jizz jizz japan日本 | 99久久这里只精品国产免费,毛片在线播放网站,狠狠色狠色综合曰曰,国产在线成人精品,欧美色视频网,激情五月婷婷综合 | 国产夜色福利院在线观看免费-国产夜趣福利免费视频-国产野花视频天堂视频免费-国产亚洲综合一区二区在线-日韩精品在线观看免费-日韩精品在线电影 | 国产日韩精品欧美一区-国产日韩高清一区二区三区-国产日韩不卡免费精品视频-国产日产欧美精品一区二区三区-午夜国产精品免费观看-午夜国产精品理论片久久影院 | 91香蕉视频在线播放-91香蕉视频在线看-91香蕉小视频-91香蕉亚洲精品人人影视-91香蕉影院-91香蕉在线视频 | 欧美日日射-欧美日视频-欧美日穴-欧美日一级-草久久免费视频-草久伊人 | 国产成人综合在线观看网站-国产成人综合在线-国产成人综合亚洲亚洲欧美-国产成人综合亚洲动漫在线-国产成人综合亚洲-国产成人综合网在线观看 | 五月天六月婷婷开心激情,天使的性电影,三级韩国一区久久二区综合,五月婷婷久,九九精品在线视频,66精品综合久久久久久久 | 欧美日韩国产精品-欧美日韩国产剧情-欧美日韩国产伦理-欧美日韩国产欧美-you ji z z日本人在线观看-you jizz jizz japan日本 | 天天噜噜色-天天看天天射天天视频-天天看天天射天天碰-天天看天天碰-国产成人高清-国产成人爱情动作片在线观看 | 国产精品jlzz视频-国产精品jizz在线观看直播-国产精品jizz在线观看网站-国产精品jizz在线观看软件-日日爽夜夜操-日日爽天天干 | 伊人久久综合成人亚洲-伊人久久综合-伊人久久中文字幕久久cm-伊人久久中文大香线蕉综合-久久国产香蕉-久久国产视频网站 | 日本久久久久久久,97久久精品一区二区三区,狠狠色噜噜狠狠狠狠97,日日干综合,五月天婷婷在线观看高清,九色福利视频 | 亚洲黄色网页-亚洲黄色三级视频-亚洲黄色片免费看-亚洲黄色免费在线观看-国产中文字幕免费观看-国产中文字幕乱码一区 | 久久精品片-久久精品欧美一区二区-久久精品女人毛片国产-久久精品嫩草影院免费看-在线日韩国产-在线日韩不卡 | 久久精品片-久久精品欧美一区二区-久久精品女人毛片国产-久久精品嫩草影院免费看-在线日韩国产-在线日韩不卡 | 91精品国产色综合久久不卡蜜,999国内精品永久免费视频试看,五月婷婷六月香,欧美成人综合在线,日韩亚洲第一页,国产欧美日韩不卡在线播放在线 | 天天干天操-天天干天天爱天天操-天天干天天操天天干-天天干天天操天天摸-久久2-久久2017 | 日本漫画母亲口工子全彩-日本漫画大全无翼乌-日本妈妈在线观看中文字幕-日本妈妈xxxx-操他射他影院-操老太太的逼 | 欧美日日操,日日爱网站,99久久久久久久,日本高清不卡免费,久久免费观看国产精品,秋霞在线观看视频一区二区三区 | 天堂视频在线观看免费-天堂视频在线-天堂视频免费-天堂色区-国产精品一区二区欧美视频-国产精品一区二区免费 | 免费一区在线-免费一区视频-免费一区区三区四区-免费一区二区视频-97dyy影院理论片-97caoporn | 麻豆高潮AV久久久久久久-麻豆高清免费国产一区-麻豆国产13p-麻豆国产96在线日韩麻豆-麻豆国产AV尤物网站尤物-麻豆国产精品AV色拍综合 | 欧美在线观看一区,免费看日产一区二区三区,欧美一区二区三区在线,精品1区2区3区,亚洲国产一成人久久精品,久久国产精品最新一区 | 一个人看的www观看免费-一个人看的www高清在线观看-一个人看的www高清视频-一个人看的www高清免费资源-久久999-久久996热精品xxxx | 久久精品一区二区三区不卡牛牛,国产片精品电影www,久久久久久97,www奇米,好姑娘中文在线播放,美女被羞羞视频网站在线 | 亚洲成人777777-亚洲成av人在线视-亚洲成av人影片在线观看-亚洲成av人片在线观看-玖玖色资源-玖玖色在线 | 黑人性xxxⅹxxbbbbb-黑人性xxx-黑人同学征服教师麻麻-黑人双渗透-亚洲精品国产成人中文-亚洲精品国产成人99久久 | 亚洲精品www久久久久久-亚洲精品m在线观看-亚洲精品99久久久久久-亚洲精品97福利在线-黑人解禁-黑人家教 | 中文字幕在线观看网址-中文字幕在线观看网站-中文字幕在线观看国产-中文字幕在线观看-开心片色99xxxx-开心久久激情 |