久久久91-久久久91精品国产一区二区-久久久91精品国产一区二区三区-久久久999国产精品-久久久999久久久精品

ABB
關(guān)注中國自動化產(chǎn)業(yè)發(fā)展的先行者!
橫河電機25年9月
工業(yè)智能邊緣計算2025年會
2025工業(yè)安全大會
CAIAC 2025
OICT公益講堂
當前位置:首頁 >> 案例 >> 案例首頁

案例頻道

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



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

1  數(shù)據(jù)采集電路設計

    系統(tǒng)由模數(shù)轉(zhuǎn)換模塊、系統(tǒng)控制與數(shù)據(jù)處理模塊、顯示模塊和鍵盤控制模塊組成,示意圖如圖1所示。



圖1  基于IIS總線的嵌入式頻譜分析系統(tǒng)體系結(jié)構(gòu)




1.1  系統(tǒng)控制模塊

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

1.2  模數(shù)轉(zhuǎn)換模塊

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

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

1.3  IIS總線

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



圖2  UDA1341 中的IIS總線格式


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

2  系統(tǒng)的軟件設計

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

2.1  啟動代碼boot loader

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



圖3  bootloader流程圖



2.2  Lcd和UDA1341驅(qū)動程序的設計

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

(1)  LCD驅(qū)動

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

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

(2)  UDA1341驅(qū)動

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

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



圖4  地址傳送模式時序圖



 



圖5  數(shù)據(jù)傳送模式的時序圖



    UDA1341的驅(qū)動中還要包括ep7312中DAI接口的初始化。由于在ep7312中DAI、SSI2、CODEC共用一組硬件資源,需要在程序中通過設置來選擇DAI接口。同時,驅(qū)動程序還需要設置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);//數(shù)據(jù)傳送,reset所有設置
sendadd(0x16);
senddat(0x21);// 設置SCLK為256Fs,數(shù)據(jù)格式為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);
  …………………………….
}

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

2.3  應用程序設計

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

(1)  數(shù)據(jù)的采集和存儲

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

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

(2)  數(shù)據(jù)處理模塊

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

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

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

第二層循環(huán):算法討論中的“組”作為第二層循環(huán),第m級的組數(shù)為,用j作循環(huán)變量,。

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

    分析上面循環(huán)嵌套可以得出:第三層循環(huán)完成個2m個蝶形單元計算;第二層循環(huán)使第三層循環(huán)進行次,因此,當?shù)诙友h(huán)完成時,共進行次蝶形單元計算。第一層循環(huán)又使第二層循環(huán)進行了M次,因此,當?shù)谝粚友h(huán)完成時,共進行了次蝶形單元計算。

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

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

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

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

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

用于顯示頻譜圖的數(shù)據(jù)NUM與其在LCD上Y坐標的關(guān)系式為:

Y=137+NUM*90/0XFF

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

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

3  結(jié)語

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



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


 

熱點新聞

推薦產(chǎn)品

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



2.詳細的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 国语三级| 一区二区三区欧美| 久久成人综合| 国产91精品新入口| 日韩一区二区三区四区| 国产精品一区三区| 欧美成人26uuu欧美毛片| 日韩日b| 激情在线观看视频免费的| 亚洲成网777777国产精品| 韩国黄色一级视频| 1024国产视频| 成 年 人 黄 片 大全| 香蕉钻洞视频| 久久综合婷婷香五月| 一级毛片免费| 国产色婷婷| 国产一区二区三区四卡| 久久国产香蕉一区精品| 欧美一级毛片片aa视频| 国偷盗摄自产福利一区在线| www.日韩在线| 国产一区二区影视| 国产福利视频在线播放| 亚洲无卡视频| 极品一区| 国产91精品新入口| 亚洲精品自拍| 尤物免费视频| 伊人久久综合影院| 91精品国产欧美一区二区| 1000部未满岁18在线观看网站| 成 人 黄 色 大 片| 国产哺乳期奶水avav| 国产精品对白刺激久久久| 亚洲va中文字幕欧美不卡| 日本欧美成人免费观看| 欧美一级特黄刺激爽大片| 国产福利在线观看永久视频| 亚洲国产精品久久久久久网站| 在线亚视频|