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

圖1 系統(tǒng)構成圖

圖2 多線程程序流程圖

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

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

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




評論