摘 要:本文以ARM EP7312和CS5341為核心設(shè)計了音頻信號采集系統(tǒng),研究了嵌入式Linux系統(tǒng)的驅(qū)動程序設(shè)計和基于多線程、模塊化的應(yīng)用程序設(shè)計問題。該系統(tǒng)能夠?qū)Σ杉男盘栠M(jìn)行FFT變換、存儲和顯示。
在工程應(yīng)用中,通過數(shù)字采集系統(tǒng)對信號進(jìn)行采集和顯示,可以獲取直觀的時域波形。但往往人們還需要從時域信息中提取出信號的其它特征,如信號的頻域信息。本設(shè)計通過數(shù)據(jù)采集電路對模擬信號進(jìn)行采集,采用512點的時間抽取基2 FFT算法對采集的數(shù)據(jù)進(jìn)行處理,然后在LCD上顯示其頻譜曲線。系統(tǒng)構(gòu)建于嵌入式Linux操作系統(tǒng)之上,具有嵌入式設(shè)備體積小、成本低、功耗低等特點,可便捷地進(jìn)行語音采集、顯示、處理和聲音信號的頻譜分析,適用于環(huán)境監(jiān)測及故障診斷等場合。

圖1 系統(tǒng)構(gòu)成圖

圖2 多線程程序流程圖

圖3 信號的時域圖和頻譜圖

數(shù)據(jù)采集電路設(shè)計
本系統(tǒng)由模數(shù)轉(zhuǎn)換模塊、數(shù)據(jù)處理和控制模塊、顯示模塊這三部分組成,如圖1所示。
模數(shù)轉(zhuǎn)換芯片采用的是Cirrus Logic公司推出的24位兩通道立體聲模數(shù)轉(zhuǎn)換芯片CS5341,其輸出為串行形式,采樣頻率從32kHz 到192kHz。它有主從兩種工作模式,由主從模式選擇開關(guān)進(jìn)行選擇。
數(shù)據(jù)處理和控制模塊采用了ARM7系列的嵌入式32位EP7312處理器,主頻為74MHz。
在該設(shè)計中,模擬信號經(jīng)過放大電路可放大為原來的1倍、2倍、4倍或10倍,具體可由放大倍數(shù)開關(guān)控制。放大倍數(shù)通過EP7312的通用端口控制LCD上每個刻度代表的電壓值。CS5341的工作模式為從模式,在該模式下主時鐘、串行數(shù)據(jù)時鐘和通道選擇時鐘都由EP7312提供,串行數(shù)據(jù)時鐘的頻率為通道選擇時鐘的64倍,主時鐘頻率為通道選擇時鐘的256倍。當(dāng)串行數(shù)據(jù)時鐘處于上升沿時,CS5341輸出一位數(shù)據(jù)。通道選擇時鐘高電平時左通道有效,低電平時右通道有效。
系統(tǒng)的軟件設(shè)計
系統(tǒng)的軟件設(shè)計包括驅(qū)動設(shè)計和應(yīng)用設(shè)計兩部分。
驅(qū)動設(shè)計
在嵌入式Linux系統(tǒng)中,設(shè)備驅(qū)動程序隱藏了各種設(shè)備的具體細(xì)節(jié),維護(hù)著設(shè)備的正常工作,在用戶與設(shè)備之間起到了橋梁作用。開發(fā)設(shè)備驅(qū)動程序是開發(fā)嵌入式系統(tǒng)的重要工作之一。在該系統(tǒng)中,涉及兩個驅(qū)動程序:CS5341驅(qū)動和LCD驅(qū)動。EP7312為LCD的控制提供了良好的支持,驅(qū)動程序的具體設(shè)計可參照參考文獻(xiàn)3。
下面介紹CS5341驅(qū)動程序的設(shè)計。由于CS5341數(shù)據(jù)采集速度較快,最高達(dá)192kHz。為了與其相匹配,我們采用了快速中斷fiq。與普通中斷不同,快速中斷模式有專用的組合寄存器集,因而大大減少了中斷時間。而快速中斷的申請需要用到中斷處理函數(shù)的首地址和末地址,為了得到這兩個地址,中斷處理函數(shù)必須用匯編來編寫。因此,該驅(qū)動有兩個文件構(gòu)成:主文件cs5341.c和中斷文件fiq.s。在此著重說明主文件中的設(shè)備初始化函數(shù)cs5341init()和中斷函數(shù)。
int CS5341Init(void)
{
..................................
//禁止中斷
INTMR3 = 0x0;
//設(shè)置相關(guān)寄存器
SYSCON3 |= 0x00000008;
DAI64FS = 0x60B;
DAIR =0x00220404;
DAISR =0xFFFFFFFF;
DAIR |=0x10000;
...................................
//注冊設(shè)備
rc= register_chrdev (cs5341_major, "CS5341", &CS5341_fops);
...................................
//申請fiq
fiqhandler_start = &dai_fiq_handler_start;
fiqhandler_length = &dai_fiq_handler_end - &dai_fiq_handler_start;
if (claim_fiq(&cs5341_fh))
{
printk("cs5341_fh: couldn't claim FIQ.\n");
return;
}
set_fiq_hander(fiqhander_start, fiqhander_length);
set_fiq_regs(regs);
..................................
return 0;
}
中斷處理程序:
.....................................
.text
.align 2
.global dai_fiq_handler_start
.global dai_fiq_handler_end
dai_fiq_handler_start:
//程序首地址
........................................
........................................
dai_fiq_handler_end:
//程序末地址
應(yīng)用程序設(shè)計
該系統(tǒng)的應(yīng)用程序設(shè)計主要包括數(shù)據(jù)存儲、數(shù)據(jù)處理(FFT)和波形顯示。
數(shù)據(jù)存儲
在該模塊中,申請兩塊緩沖區(qū)buf和buffer,buf用來存放采集的數(shù)據(jù),buffer為臨界資源。程序把數(shù)據(jù)從buf放入臨界資源buffer中,設(shè)置一個共享鎖,實現(xiàn)該模塊、數(shù)據(jù)的處理和顯示模塊的互斥訪問。
數(shù)據(jù)處理模塊
該模塊采用FFT算法對采集的數(shù)據(jù)進(jìn)行處理。
FFT變換的具體實現(xiàn)如下:
首先進(jìn)行碼位倒置,得到FFT運算所需要的輸入序列。然后采用3層循環(huán)完成N點FFT(這里N=512)。
第一層循環(huán):“級”作為第一層循環(huán),N點FFT運算共有M級,這里,我們用m作循環(huán)變量,。
第二層循環(huán):“組”作為第二層循環(huán),第m級的組數(shù)為,用j作循環(huán)變量,。
第三層循環(huán):每組里的蝶形單元作為第三層循環(huán),每一組里共有蝶型單元2m個,用i作循環(huán)變量,。
分析上面循環(huán)可以得出:第三層循環(huán)完成2m個蝶形單元計算;第二層循環(huán)使第三層循環(huán)進(jìn)行次,因此,當(dāng)?shù)诙友h(huán)完成時,共進(jìn)行次蝶形單元計算;第一層循環(huán)又使第二層循環(huán)進(jìn)行了M次,因此,當(dāng)?shù)谝粚友h(huán)完成時,共進(jìn)行了次蝶型單元計算。
波形顯示模塊
因為要把處理前的數(shù)據(jù)和經(jīng)過FFT處理后的數(shù)據(jù)同時顯示在LCD上,所以,把LCD的上半屏分配給未處理的數(shù)據(jù),用于顯示時域圖;下半屏用于顯示頻譜圖。為了把波形顯示在特定的區(qū)域,需要對數(shù)據(jù)進(jìn)行處理。所采集的數(shù)據(jù)和FFT變換過的數(shù)據(jù)的范圍均為0~0XFF,0對應(yīng)于LCD上Y軸坐標(biāo)的120和210,0XFF對應(yīng)于LCD上Y軸坐標(biāo)的30和120。因此,用于顯示時域圖的數(shù)據(jù)VAL與其在LCD上Y坐標(biāo)的關(guān)系式為:
Y=120-VAL×90/0XFF
用于顯示頻譜圖的數(shù)據(jù)NUM與其在LCD上Y坐標(biāo)的關(guān)系式為:
Y=210-NUM×90/0XFF
LCD一屏可顯示310個數(shù)據(jù)點,點與點之間用矢量法直線相連。
多任務(wù)操作系統(tǒng)下的編程
與傳統(tǒng)的單片機系統(tǒng)不同,Linux是一個多任務(wù)的嵌入式操作系統(tǒng)。內(nèi)核允許將一項工作劃分為幾個相互獨立的任務(wù),這樣就縮短了整個系統(tǒng)的響應(yīng)時間,提高了系統(tǒng)性能。
在設(shè)計時采用了多線程的編程方式,從而克服了多進(jìn)程編程中資源占用量多和響應(yīng)時間慢等缺點。該程序包括三個線程,流程圖如圖2所示。主線程負(fù)責(zé)數(shù)據(jù)的采集和傳輸,另外兩個輔助線程是在主線程的運行過程中產(chǎn)生的,分別完成數(shù)據(jù)的處理和波形的顯示。
當(dāng)輸入信號的頻率為0.377kHz (周期為2.65ms)時,該信號的時域波形及頻譜曲線如圖3所示。從圖中可以看出,通過FFT變換,輸入信號的頻率特性可以較準(zhǔn)確地反映出來。
結(jié)語
以EP7312處理器和模數(shù)轉(zhuǎn)換芯片CS5341為核心構(gòu)成的數(shù)據(jù)采集系統(tǒng),充分運用了它們在音頻采集和處理方面的優(yōu)勢,可以對音頻數(shù)據(jù)流進(jìn)行實時性的采集、變換、存儲和顯示,具有速度快、采樣頻率高、體積小和低功耗等特點。以該系統(tǒng)為核心技術(shù)開發(fā)的產(chǎn)品可應(yīng)用于醫(yī)療、運輸、娛樂等行業(yè),具有廣泛的應(yīng)用前景。
- 分析技術(shù)(7080)
基于EP9312的金融嵌入式系統(tǒng)實現(xiàn)方案
1569
基于FPGA平臺的手持式頻譜分析儀的設(shè)計原理
5226
基于EP7312的新型嵌入式系統(tǒng)的實現(xiàn)
1542
分析嵌入式系統(tǒng)的技術(shù)特點
嵌入式技術(shù)具有哪些特性應(yīng)用?
嵌入式技術(shù)究竟是什么?
嵌入式移動通信技術(shù)的研究與發(fā)展分析,不看肯定后悔
嵌入式視覺技術(shù)是什么?
頻譜分析儀技術(shù)基礎(chǔ)-R&S
頻譜分析儀使用意義
頻譜分析儀原理結(jié)構(gòu)框圖
什么是頻譜分析儀
使用頻譜分析儀應(yīng)該注意些什么
光頻譜分析儀的技術(shù)原理和應(yīng)用場景
幾種嵌入式軟件代碼壓縮技術(shù)的比較分析
基于DDS實現(xiàn)信號的頻譜分析
如何學(xué)習(xí)嵌入式linux?學(xué)習(xí)嵌入式linux有什么技術(shù)門檻嗎?
如何實現(xiàn)基于FPGA平臺的手持式頻譜分析儀的應(yīng)用?
實時頻譜分析儀與傳統(tǒng)掃描式頻譜分析儀有什么區(qū)別?
帶你走進(jìn)頻譜分析儀“世界”,了解頻譜分析儀!
怎樣去實現(xiàn)基于EP7312的新型嵌入式系統(tǒng)?
我國嵌入式技術(shù)及應(yīng)用現(xiàn)狀分析
手持式頻譜分析儀實現(xiàn)
掃頻式頻譜分析儀的技術(shù)原理和應(yīng)用場景
有關(guān)頻譜分析問題
直接數(shù)字式頻譜分析儀的技術(shù)原理和應(yīng)用場景
頻譜分析儀介紹
0Linux中基于EP7312的LCD驅(qū)動程序設(shè)計
28EP72 7312 嵌入式系統(tǒng)中SoftModem 的實現(xiàn)
12基于EP7312 的新型嵌入式系統(tǒng)的實現(xiàn)
10基于DSP技術(shù)的虛擬式FFT頻譜分析儀
62頻譜分析的8項提示應(yīng)用指南
17Agilent N9340B手持式頻譜分析儀技術(shù)資料
68嵌入式系統(tǒng)關(guān)鍵技術(shù)分析與開發(fā)應(yīng)用
21什么是頻譜分析儀
5146頻譜分析儀的使用
1291μC/OS-II在EP7312上的移植
1340
信號頻譜分析和測試
6547
基于EP7312的嵌入式系統(tǒng)軟硬件開發(fā)
1290
基于EP7312的嵌入式系統(tǒng)設(shè)計實現(xiàn)
953
接收機與頻譜分析儀的差異
0頻譜分析儀的種類與應(yīng)用
3878
頻譜分析儀原理與使用說明

基于EP7312的新型嵌入式瀏覽器的ARM Linux系統(tǒng)簡介
0頻譜分析儀原理結(jié)構(gòu)框圖
3008
TI的嵌入式分析技術(shù)使設(shè)備更加智能
13頻譜分析入門教程之頻譜分析基礎(chǔ)知識的詳細(xì)資料概述
0頻譜分析儀的技術(shù)基礎(chǔ)教程免費下載
14頻譜分析儀的原理結(jié)構(gòu)和框圖詳細(xì)說明
17如何選擇頻譜分析儀和維修頻譜分析儀的故障分析
4870
Bird微波射頻頻譜分析儀分析
1346怎么分析頻譜分析儀失鎖維修故障?
1783掃頻頻譜分析儀的結(jié)構(gòu)框圖
3283
掃頻式頻譜分析儀是什么?它的工作原理是怎樣的?
3039
頻譜分析儀和示波器有什么區(qū)別?頻譜分析儀軟件和示波器軟件分享
3002
“拆解”頻譜分析儀,徹底“看透”頻譜分析儀內(nèi)部結(jié)構(gòu)!
1951
Agilent安捷倫8565EC頻譜分析儀
1182
Agilent8563EC頻譜分析儀
1297
Agilent8563E頻譜分析儀介紹
1頻譜分析儀的使用方法
3770手持式頻譜分析儀和臺式頻譜分析儀的優(yōu)劣對比
1623頻譜分析儀的常見誤差來源 頻譜分析儀的校準(zhǔn)方法
2919頻譜分析儀的功能和特點
3650掃頻頻譜分析儀與實時頻譜分析儀的區(qū)別
4312頻譜分析儀的分類和技術(shù)指標(biāo)
1697頻譜分析儀怎么測量頻率
3359實時頻譜分析儀的關(guān)鍵技術(shù)淺析
2100便攜式頻譜分析儀與手持式頻譜分析儀的區(qū)別
1744頻譜分析儀是干什么用的 頻譜分析儀和示波器的區(qū)別
2319頻譜分析儀使用方法 頻譜分析儀的作用
3332Keysight 頻譜分析儀(信號分析儀)
1885
便攜式頻譜分析儀的優(yōu)勢
1134頻譜分析儀的主要技術(shù)參數(shù)
2872如何挑選一款合適的便攜式實時頻譜分析儀?
371如何合理選擇頻譜分析儀,便攜式頻譜分析儀,手持式頻譜分析儀
456
電子發(fā)燒友App



評論