两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于ARM的多通道聲音信號采集系統(tǒng)的制作方法

文檔序號:12550287閱讀:678來源:國知局
一種基于ARM的多通道聲音信號采集系統(tǒng)的制作方法與工藝

本發(fā)明屬于信號處理技術領域,具體涉及一種基于ARM的多通道聲音信號采集系統(tǒng)。



背景技術:

信號處理是對各種類型的電信號,按各種預期目的和要求進行加工過程的統(tǒng)稱。信號有模擬信號和和數(shù)字信號之分,對模擬信號的處理稱為模擬信號處理,對數(shù)字信號的處理稱為數(shù)字信號處理。信號采集屬于信號處理的第一環(huán)節(jié),信號只有先經(jīng)過采集才能進行下一步的處理。換而言之,信號處理的對象只能通過信號采集得到。因此,信號采集對于后期信號的處理有著至關重要的影響。當代計算機由于其強大的計算能力,是目前信號處理的主要工具,由于計算機只能接受數(shù)字信號,因此模擬信號需通過AD(模數(shù)轉(zhuǎn)換)轉(zhuǎn)化為數(shù)字信號才能被計算機處理。

聲音信號是自然界常見的模擬信號,聲音信號處理是信號處理領域的一個分支。同理,在聲音信號處理之前,需進行聲音信號的采集,此處的“采集”指的是將屬于模擬信號的聲音信號轉(zhuǎn)化為數(shù)字信號,以供計算機系統(tǒng)處理。目前市場上常見的聲音信號采集系統(tǒng),主要由AD模塊和DSP或FPGA組成。此類聲音信號采集系統(tǒng)往往具備采樣速率高、多通道采樣、AD精度高、實時性好等優(yōu)點,甚至有些采集系統(tǒng)還集成了簡單信號處理的功能,可直接輸出處理之后的數(shù)據(jù)。但此類系統(tǒng)往往價格昂貴,尤其是高精度高速度的采集系統(tǒng)。且此類系統(tǒng)內(nèi)部含有DSP或FPGA等模塊,往往需要對其進行編程,系統(tǒng)硬件復雜度和軟件復雜度均較高。這些因素導致了此類聲音信號采集系統(tǒng)不利于大范圍推廣。



技術實現(xiàn)要素:

本發(fā)明針對現(xiàn)有技術的不足,提供一種基于ARM的多通道聲音信號采集系統(tǒng)。本發(fā)明能有效解決上述缺陷,不僅能對聲音信號進行多通道高速采集、實時采集,還能將采集的數(shù)據(jù)進行存儲或?qū)崟r處理。且本發(fā)明降低了硬件、軟件的復雜度,降低了系統(tǒng)成本。本發(fā)明可以應用在多種涉及到聲音信號采集的場合,例如環(huán)境噪聲源的識別定位系統(tǒng)、地下管線防破壞監(jiān)測系統(tǒng)等場合。

為實現(xiàn)上述目的,本發(fā)明采用如下技術方案:

一種基于ARM的多通道聲音信號采集系統(tǒng),核心部分包括ARM平臺、AD模塊、聲音信號傳感器模塊,另外包括前端調(diào)理電路、SDRAM模塊、NandFlash模塊、SD卡模塊、以太網(wǎng)接口、串口接口。

聲音信號傳感器模塊包含4個聲音傳感器探頭,將4路聲音信號轉(zhuǎn)化為模擬信號,然后輸出至前端調(diào)理電路,在前端調(diào)理電路中將傳感器輸出的模擬信號進行調(diào)理;前端調(diào)理電路位于聲音信號傳感器模塊和AD模塊之間,前端調(diào)理電路將調(diào)理后的模擬信號輸入到AD模塊的4個輸入通道;AD模塊分別將4路模擬信號進行AD轉(zhuǎn)換得到對應的數(shù)字信號,并將4路數(shù)字信號按照特定的順序通過SPI總線傳輸至ARM平臺,ARM平臺將接收的數(shù)據(jù)存儲至SD卡模塊或直接進行處理;ARM平臺同時與SDRAM模塊、NandFlash模塊、SD卡模塊相連接,其中SD卡模塊用于存儲ARM平臺接收到的聲音信號數(shù)據(jù),NandFlash模塊和SDRAM模塊分別用于程序數(shù)據(jù)的存儲和程序的運行;同時ARM平臺通過串口接口和以太網(wǎng)接口與外界進行通信,進行信息交互。

本發(fā)明的核心技術在于AD模塊和ARM平臺以及兩者的協(xié)同工作。下面詳細介紹AD模塊和ARM平臺以及兩者之間如何協(xié)同工作。

AD模塊的核心是TI公司的ADS1278芯片。該芯片是24位8通道AD芯片,可同時對8路模擬信號進行轉(zhuǎn)換,采樣率可調(diào)且最高采樣率可達144KHz。該芯片有AIN[8:1]共8組模擬量輸入引腳,本發(fā)明用到了前四組模擬量輸入引腳AIN[4:1],將前四組模擬量輸入引腳AIN[4:1]與前端調(diào)理電路輸出端相連。根據(jù)采樣率、采樣精度、功耗的不同,該芯片有四種工作模式可選:Hight-Speed模式、Hight-Resolution模式、Low-Power模式和Low-Speed模式。且四種工作模式的選擇,完全通過芯片的MODE0引腳(34號引腳)和MODE1引腳(33號引腳)來控制,無需配置任何寄存器。本發(fā)明采用的工作模式是Low-Power模式,即該芯片需要將MODE0引腳接低電平,MODE1引腳接高電平。該芯片轉(zhuǎn)換后的數(shù)據(jù)通過芯片的串行接口輸出,數(shù)據(jù)輸出支持兩種串行接口協(xié)議:SPI協(xié)議或Frame-Sync協(xié)議,且支持多種數(shù)據(jù)輸出格式。數(shù)據(jù)輸出的串行接口協(xié)議和數(shù)據(jù)輸出格式的選擇完全通過FORMAT[2:0](30~32號引腳)三個引腳來控制。本發(fā)明將FORMAT[2:0]三個引腳接低電平,選擇SPI協(xié)議輸出數(shù)據(jù),輸出數(shù)據(jù)格式為TDM格式。此配置下,該芯片上與數(shù)據(jù)輸出相關引腳有SCLK引腳(28號引腳)、DOUT1引腳(20號引腳)和DRDY/FSYNC引腳(29號引腳)。其中SCLK引腳為SPI協(xié)議的時鐘引腳,本發(fā)明中該芯片作為SPI從機,ARM平臺作為SPI主機,故SPI時鐘由ARM平臺輸出至SCLK引腳(28號引腳)。DOUT1引腳為轉(zhuǎn)換后數(shù)據(jù)輸出引腳,此配置下,每次采樣,各個通道的轉(zhuǎn)換數(shù)據(jù)將按照一定的順序輸出到SPI總線上,通過DOUT1引腳即可讀取SPI總線上的數(shù)據(jù)。本發(fā)明使用了通道1~4共4個通道,故每次采樣,DOUT1按照通道1、通道2、通道3、通道4的順序依次輸出這四個通道的轉(zhuǎn)換結果。DRDY/FSYNC引腳的信號為數(shù)據(jù)輸出就緒狀態(tài)標識,當DRDY/FSYNC引腳為高電平時,數(shù)據(jù)不可讀;當為低電平時,數(shù)據(jù)可讀。即DRDY/FSYNC引腳的下降沿信號標志著數(shù)據(jù)可讀,此時各通道的轉(zhuǎn)換數(shù)據(jù)隨著SPI時鐘按順序輸出到DOUT1引腳,ARM平臺從DOUT1引腳即可讀取轉(zhuǎn)換后的數(shù)據(jù)。此配置下,只要ADS1278的SCLK引腳有時鐘信號輸入,AD模塊就會工作,將各通道的采樣數(shù)據(jù)依次輸出至SPI總線,從DOUT1引腳即可讀取數(shù)據(jù)。

ADS1278芯片最多能支持8通道同時采樣,當所用通道數(shù)低于8個時,可通過PWDN[8:1]引腳(35~42號引腳)將不需要用的通道關閉。PWDN[8:1]引腳與8個通道一一對應,當某個PWDN引腳接低電平時,對應的通道則關閉。本發(fā)明用到了前4個通道,需將后四個通道關閉,故將PWDN[8:5]四個引腳接低電平,PWDN[4:1]四個引腳接高電平。另外,本發(fā)明用外接10MHz的晶振作為該芯片的時鐘源,將CLKDIV引腳(10號引腳)接高電平,根據(jù)芯片手冊計算公式,可算出采樣頻率為10MHz/512≈19531Hz。該芯片其他配置可參考TI公司官方的ADS1278芯片手冊。

ARM平臺采用集成了EDMA功能模塊的ARM架構CPU。由于AD模塊采樣率較高,AD模塊將產(chǎn)生大量數(shù)據(jù),而ARM平臺要將數(shù)據(jù)進行存儲或處理就必然涉及到數(shù)據(jù)的拷貝工作。因此本發(fā)明使用ARM平臺的EDMA功能來完成數(shù)據(jù)的拷貝工作,以使數(shù)據(jù)拷貝工作盡可能少占用CPU資源,將CPU資源盡可能的分配給系統(tǒng)其它任務。

本發(fā)明采用TI公司的AM335x系列處理器作為ARM平臺,具體芯片型號推薦使用AM3354。AM335x系列處理器采用ARM Cortex A8內(nèi)核,最高主頻可達720MHz,集成有2個工業(yè)用千兆以太網(wǎng)MAC以及UART、McSPI和EDMA等常用外設模塊。ARM平臺負責從AD模塊讀取數(shù)據(jù),并對數(shù)據(jù)進行存儲或處理,及與外界進行通信等工作。ARM平臺上移植了強大的嵌入式Linux操作系統(tǒng),整個系統(tǒng)的軟件復雜功能和硬件資源管理都在Linux系統(tǒng)上實現(xiàn)。

本發(fā)明中,AD模塊輸出的聲音信號數(shù)據(jù)使用了SPI協(xié)議,涉及AM335x的McSPI功能模塊和EDMA功能模塊。SPI是串行外設接口,是一種高速的、全雙工同步通信總線,且在芯片管腳上只占用4根信號線。SPI以主從模式工作,通常有一個主設備和一個或多個從設備,通信時用到4根信號線(實際上當單向通信時使用3根信號線也可以)。這四根信號線分別是時鐘信號SCLK、主入從出數(shù)據(jù)線MISO、主出從入數(shù)據(jù)線MOSI和從設備片選信號線CS。其中,SCLK信號線只由主設備控制,通信的時鐘信號SCLK由主設備提供。根據(jù)時鐘信號相位(PHA)和時鐘極性(POL)的不同組合,SPI有模式0~3共4中工作模式,分別對應4種不同數(shù)據(jù)傳輸時序。McSPI是AM335x內(nèi)部集成的多通道SPI功能模塊,可作為主設備外接從設備,也可作為從設備工作于從機模式。AM335x共集成有兩個多通道SPI(SPI0和SPI1),支持時鐘頻率可調(diào),SPI字長可調(diào),且有4個數(shù)據(jù)傳輸通道(通道0~3)可選,有數(shù)據(jù)收發(fā)緩存。通過配置AM335x的相關寄存器,可對時鐘頻率、工作模式、SPI字長等進行設置。

本發(fā)明使用了AM335x的McSPI功能模塊,具體用到引腳為SPI1_CLK引腳(52號引腳)、SPI1_MISO引腳(53號引腳)、SPI1_CS0引腳(33號引腳)。且AM335x的SPI1_CLK引腳與ADS1278的SCLK相連,SPI1_MISO引腳與ADS1278的DOUT1相連,SPI1_CS0引腳與ADS1278的DRDY/FSYNC引腳相連。在本發(fā)明中,AM335x作為SPI通信的主機,AD模塊作為從機,配置相關寄存器使AM335x工作在主機只接收模式(Master Receive-Only mode),此時時鐘信號由AM335x提供,且只要ADS1278的SCLK引腳有時鐘信號輸入,AD模塊就會開始工作,將各通道的采樣數(shù)據(jù)依次輸出至SPI總線,從DOUT1引腳即可讀取數(shù)據(jù)。AM335x只負責從ADS1278讀數(shù)據(jù)而不給它發(fā)送數(shù)據(jù),故AM335x的SPI1_MOSI引腳(54號引腳)并未用到。由于整個系統(tǒng)只有一臺從設備,本發(fā)明中AM335x的SPI1_CS0引腳的信號并非從設備片選信號,而是EDMA數(shù)據(jù)傳輸?shù)挠|發(fā)信號;另外,本發(fā)明需使能SPI1的通道0作為數(shù)據(jù)傳輸通道,配置POL=0和PHA=0,使SPI工作在模式0,由于ADS1278的精度是24位,故配置SPI字長為24位,且使用SPI1自帶的長度為64字節(jié)的FIFO作為數(shù)據(jù)接收緩存。

本發(fā)明中,ARM平臺首先將AD模塊的數(shù)據(jù)讀取至SPI1的FIFO中,還需要將FIFO中的數(shù)據(jù)拷貝至內(nèi)存,以供AM335x處理。由于采樣率較高,數(shù)據(jù)量較大,若數(shù)據(jù)的拷貝工作由CPU來完成,則會占用大量的CPU資源,嚴重降低效率,不符合實際應用需求。故本發(fā)明利用AM335x自帶的EDMA模塊來完成數(shù)據(jù)拷貝工作,無需CPU干預,最大限度的減少CPU資源的占用,使系統(tǒng)分配更多CPU資源給其它任務。

AM335x的EDMA有多達64個DMA通道,用于數(shù)據(jù)傳輸,且這些通道支持多種觸發(fā)方式:外部事件觸發(fā),通過寫相應寄存器來手動觸發(fā)和鏈式觸發(fā)。具有多達256個參數(shù)項(PaRAM entry),這些參數(shù)項有自己的地址,其內(nèi)容包含各種字段,這些字段描述了數(shù)據(jù)傳輸?shù)木唧w細節(jié),如數(shù)據(jù)的源地址、目的地址、數(shù)據(jù)在源地址目的地址的排列方式等。且這些參數(shù)項支持鏈接機制(Linking mechanism),該機制能讓參數(shù)項自動更新,可利用該機制實現(xiàn)ping-pong緩存??赏ㄟ^配置AM335x相關寄存器將EDMA的通道與參數(shù)項進行綁定。AM335x的EDMA支持三維數(shù)據(jù)傳輸,以ACNT個字節(jié)的數(shù)據(jù)作為一個組(Array),BCNT個組作為一幀(Frame),CCNT個幀為一個塊(Block),因此一個數(shù)據(jù)塊共有ACNT×BCNT×CCNT個字節(jié)的數(shù)據(jù)。無論是源地址處還是目的地址處,數(shù)據(jù)塊中的數(shù)據(jù)不一定相鄰,可能是分散的,組(Array)之間的偏移由SRCBIDX/DSTBIDX參數(shù)決定,幀(Frame)之間的偏移由SRCCIDX/DSTCIDX參數(shù)決定。以上參數(shù)均屬于參數(shù)項的字段,可通過編程設置。EDMA的數(shù)據(jù)傳輸有兩種模式可選:A同步傳輸(A-Synchronized Transfers)和AB同步傳輸(AB-Synchronized Transfers),前者每次傳輸一組數(shù)據(jù)(即ACNT字節(jié)數(shù)據(jù)),共需要BCNT×CCNT次傳輸才能完成一個數(shù)據(jù)塊的傳輸;后者每次傳輸一幀數(shù)據(jù)(即ACNT×BCNT字節(jié)數(shù)據(jù)),共需要CCNT次傳輸才能完成一個數(shù)據(jù)塊的傳輸。

本發(fā)明利用EDMA功能模塊中參數(shù)項的鏈接機制,使用兩個參數(shù)項來實現(xiàn)ping-pong緩存,以解決數(shù)據(jù)傳輸與CPU處理速度不匹配問題。具體做法是,在內(nèi)存中申請一塊ping緩存和一塊相同大小的pong緩存,申請EDMA的兩個參數(shù)項,分別記為參數(shù)項A和參數(shù)項B,參數(shù)項A、B的數(shù)據(jù)源地址相同,均設置為SPI1的FIFO地址,參數(shù)項A、B的目的地址分別為ping緩存地址和pong緩存地址,參數(shù)項A的LINK字段設為參數(shù)項B的地址,參數(shù)項B的LINK字段設為參數(shù)項A的地址,兩參數(shù)項其它內(nèi)容相同。如此,每次傳輸任務的完成,數(shù)據(jù)傳輸?shù)哪康牡刂窌詣釉趐ing緩存和pong緩存之間切換,當下一次傳輸任務開始時,數(shù)據(jù)的目的地址就已經(jīng)切換完成。因此,本次將數(shù)據(jù)傳輸至ping緩存,下次則會將數(shù)據(jù)傳輸至pong緩存,再下次又會將數(shù)據(jù)傳輸至ping緩存。當數(shù)據(jù)傳輸?shù)絧ing緩存時,CPU能夠處理pong緩存的數(shù)據(jù),當數(shù)據(jù)傳輸?shù)絧ong緩存時,CPU能夠處理ping緩存的數(shù)據(jù)。這種工作狀態(tài)不停切換,就能實現(xiàn)數(shù)據(jù)的邊采集邊處理,兩者同步進行。

由于本發(fā)明中,AD模塊的精度是24位,且每次采樣4個AD通道的數(shù)據(jù)均從ADS1278的DOUT1引腳輸出,為配合AD模塊,設置EDMA數(shù)據(jù)傳輸為AB同步模式,且設置ACNT=3,BCNT=4,即每個通道的數(shù)據(jù)為一組(Array),每次采樣的數(shù)據(jù)為一幀(Frame)。至于CCNT的設置,則依據(jù)實際希望CPU每次處理多少數(shù)據(jù)以及實際的采樣頻率(FS)而定。例如希望每次采集K秒的數(shù)據(jù)給CPU處理,則CCNT=FS×K。隨著ACNT、BCNT、CCNT的確定,則需申請的ping緩存和pong緩存的大小也就確定了,其大小等于ACNT×BCNT×CCNT個字節(jié)。本發(fā)明需要使用外部事件來觸發(fā)EDMA傳輸數(shù)據(jù),具體使用的是AM335x的SPI1_CS0引腳信號作為觸發(fā)信號,即ADS1278的DRDY/FSYNC引腳下降沿信號來觸發(fā)EDMA數(shù)據(jù)傳輸,即每次ADS1278采樣,EDMA傳輸一次數(shù)據(jù)。以上配置涉及的寄存器,均可查詢TI公司官方的AM335x芯片手冊,限于篇幅,本說明書對此部分內(nèi)容不再贅述。

本發(fā)明有益效果如下:

本發(fā)明使用ARM平臺作為系統(tǒng)的處理器,不同于市場上常見的使用DSP+FPGA的方案,減少了系統(tǒng)成本,且降低了軟硬件復雜度。本發(fā)明不僅可以將聲音數(shù)據(jù)采集存儲至SD卡,且由于ping-pong緩存技術的使用,大大降低了數(shù)據(jù)采集對ARM平臺中CPU的占用,在以極小的資源實現(xiàn)采集任務的同時,為后續(xù)對數(shù)據(jù)的進一步的實時處理預留了大量的時間和資源。本發(fā)明預留有豐富的通信接口,方便系統(tǒng)與外界進行信息交互。本發(fā)明在ARM平臺上移植了嵌入式Linux系統(tǒng),系統(tǒng)的所有軟件功能和硬件資源分配均在Linux系統(tǒng)上實現(xiàn),提高了系統(tǒng)資源管理的效率,同時降低了后續(xù)功能拓展或定制的難度,便于該系統(tǒng)的進一步推廣使用。

附圖說明

圖1為本發(fā)明的系統(tǒng)硬件架構圖;

圖2位本發(fā)明的系統(tǒng)功能流程圖。

具體實施方式

下面結合附圖和實施例對本發(fā)明做進一步說明。

一種基于ARM的多通道聲音信號采集系統(tǒng),需要實現(xiàn)的基本功能是:

1)利用AD模塊將4路聲音信號進行采集并轉(zhuǎn)換成數(shù)字信號,并通過SPI協(xié)議,將轉(zhuǎn)換得到的數(shù)字信號輸入到ARM平臺;

2)在ARM平臺上,利用自帶的EDMA功能,實現(xiàn)ping-pong緩存,將來自AD模塊的數(shù)據(jù)存入ping-pong緩存;

3)在ARM平臺上,將ping-pong緩存中的數(shù)據(jù)存入SD卡模塊,或直接對數(shù)據(jù)進行處理,實現(xiàn)對聲音信號的邊采集邊處理;

4)系統(tǒng)預留出串口接口、以太網(wǎng)接口等通信接口,方便系統(tǒng)與外部的信息交互。

本發(fā)明硬件功能和軟件功能的具體劃分如下:

硬件功能具體如下:

1)聲音信號傳感器模塊將外界的4路聲音信號轉(zhuǎn)化成電信號,并輸入到前端調(diào)理電路,此過程的信號為模擬信號;

2)前端調(diào)理電路完成對模擬信號的調(diào)理,并將調(diào)理后的信號輸入到AD模塊,此過程的信號仍是模擬信號;

3)AD模塊完成對前端調(diào)理電路輸出的模擬信號的采集并將其轉(zhuǎn)換成數(shù)字信號,輸入到ARM平臺,此過程的信號為數(shù)字信號。

4)留出串口接口、以太網(wǎng)接口等硬件接口,方便系統(tǒng)與外界通信。

軟件功能具體如下:

1)在ARM平臺上,對McSPI模塊進行配置。使用SPI通信協(xié)議,讀取AD模塊傳來的數(shù)字信號至SPI1的FIFO中;

2)在ARM平臺上,對EDMA模塊進行配置。利用EDMA功能,實現(xiàn)ping-pong緩存,將SPI1的FIFO中的數(shù)據(jù)存入ping-pong緩存;

3)在ARM平臺上,ping-pong緩存中的數(shù)據(jù)存入SD卡模塊,或?qū)ing-pong緩存中的數(shù)據(jù)進行實時處理;

4)ARM平臺移植有嵌入式Linux操作系統(tǒng),完成系統(tǒng)資源和任務的統(tǒng)一分配管理。

本發(fā)明硬件的具體實施方式如下:

本發(fā)明的系統(tǒng)硬件架構圖如圖1所示,為了使整個結構看起來清晰簡潔,圖中表示出了系統(tǒng)的核心硬件架構,一些結構細節(jié)并未在圖中表示出來。本發(fā)明硬件架構核心部分包括ARM平臺、AD模塊、聲音信號傳感器模塊,另外包括前端調(diào)理電路、SDRAM模塊、NandFlash模塊、SD卡模塊、以太網(wǎng)接口、串口接口。聲音信號傳感器模塊包含4個聲音傳感器探頭,產(chǎn)生4路聲音信號,此時的信號為模擬信號。前端調(diào)理電路位于聲音信號傳感器和AD模塊之間,主要功能是將傳感器輸出的4路模擬信號進行調(diào)理,并將調(diào)理后的模擬信號輸入到AD模塊的4個輸入通道。AD模塊分別將4路模擬信號進行AD轉(zhuǎn)換得到對應的數(shù)字信號,并將4路數(shù)字信號按照特定的順序通過SPI總線傳輸至ARM平臺。ARM平臺負責接收AD模塊傳輸過來的數(shù)據(jù),將這些數(shù)據(jù)存儲至SD卡模塊或直接進行處理。SD卡模塊可用于存儲系統(tǒng)采集到的聲音信號數(shù)據(jù)。串口接口和以太網(wǎng)接口為系統(tǒng)與外界進行通信的接口,系統(tǒng)可通過串口或以太網(wǎng)來跟外界進行信息交互。例如通過串口,系統(tǒng)可以將聲音信號處理的結果輸出至外界。NandFlash模塊和SDRAM模塊分別用于程序數(shù)據(jù)的存儲和程序的運行。本發(fā)明的AD模塊采用TI公司的ADS1278芯片。本發(fā)明的ARM平臺使用TI公司的AM335x系列處理器,具體型號推薦使用AM3354。

本發(fā)明需對AD模塊進行配置,主要設置ADS1278的相關引腳。本發(fā)明用到了ADS1278的前四組模擬量輸入引腳AIN[4:1],需將它們與前端調(diào)理電路輸出端相連;將ADS1278的MODE0接低電平,MODE1引腳接高電平,使之處于Low-Power工作模式;本發(fā)明將FORMAT[2:0]三個引腳接低電平,選擇SPI協(xié)議輸出數(shù)據(jù),數(shù)據(jù)格式為TDM格式;本發(fā)明將PWDN[8:5]四個引腳接低電平,PWDN[4:1]四個引腳接高電平,只使用前4個通道;本發(fā)明用外接10MHz的晶振作為ADS1278的時鐘源,CLKDIV引腳接高電平,此時采樣頻率為19531Hz;本發(fā)明將ADS1278的SCLK引腳、DOUT1引腳和DRDY/FSYNC引腳分別與AM335x的SPI1_CLK引腳、SPI1_MISO引腳和SPI1_CS0引腳相連。另需注意的是,由于DRDY/FSYNC引腳的下降沿表示數(shù)據(jù)可讀,而AM335x的SPI1_CS0引腳是上升沿觸發(fā)EDMA傳輸,故在DRDY/FSYNC引腳和AM335x的SPI1_CS0引腳間需接一個反相器。

本發(fā)明軟件功能的具體實施方式如下:

本發(fā)明的系統(tǒng)功能流程圖如圖2所示。本發(fā)明的AD模塊通過SPI協(xié)議,將AD轉(zhuǎn)換得到的聲音信號數(shù)據(jù)傳輸給ARM平臺SPI1的FIFO中。ARM平臺通過EDMA將SPI1的FIFO的數(shù)據(jù)傳輸至ping-pong緩存,并將ping-pong緩存中的數(shù)據(jù)存儲至SD卡或進行實時處理。本發(fā)明軟件的核心部分是AM335x的SPI1模塊和EDMA模塊的配置,以及利用EDMA模塊實現(xiàn)ping-pong緩存,使之配合AD模塊進行數(shù)據(jù)采集。在本發(fā)明中,數(shù)字信號的傳輸使用SPI協(xié)議,AM335x作為SPI通信的主機,AD模塊作為從機。故配置AM335x的相關寄存器使之工作在主機只接收模式(Master Receive-Only mode),將SPI時鐘配置為5MHz,此時時鐘信號由AM335x提供。本發(fā)明需配置相關寄存器使能SPI1的通道0作為數(shù)據(jù)傳輸通道,配置POL=0和PHA=0,使SPI工作在模式0。由于本發(fā)明的AD模塊的精度是24位,故配置SPI字長為24位,且使用SPI1自帶的長度為64Byte的FIFO作為數(shù)據(jù)接收緩存。

本發(fā)明需要通過配置AM335x的相關寄存器來設置EDMA模塊。配置相關寄存器,設置EDMA數(shù)據(jù)傳輸為AB同步模式,使能EDMA的通道20作為數(shù)據(jù)傳輸通道,并設置觸發(fā)方式為外部事件觸發(fā),將通道20與SPI1_CS0引腳的上升沿信號觸發(fā)事件綁定。本發(fā)明利用EDMA的參數(shù)項的鏈接機制,使用EDMA的兩個參數(shù)項來實現(xiàn)ping-pong緩存。具體做法是,在內(nèi)存中申請一塊ping緩存和一塊相同大小的pong緩存(分配的內(nèi)存類型為int型,即每個存儲單位為32位),申請兩個參數(shù)項(假定為參數(shù)項A和參數(shù)項B)。參數(shù)項A、B的數(shù)據(jù)源地址相同,均設置為SPI1的FIFO地址,參數(shù)項A、B的目的地址分別為ping緩存地址和pong緩存地址,參數(shù)項A的LINK字段設為參數(shù)項B的地址,參數(shù)項B的LINK字段設為參數(shù)項A的地址,兩參數(shù)項其它內(nèi)容相同。本發(fā)明需對EDMA的三維數(shù)據(jù)傳輸中的相關參數(shù)進行設置,設置ACNT=3,BCNT=4,即每個通道的數(shù)據(jù)位一組(Array),每次采樣的數(shù)據(jù)為一幀(Frame)。至于CCNT的設置,則可以依據(jù)實際希望CPU每此處理多少數(shù)據(jù)以及實際的采樣頻率(FS)而定,例如希望每次采集K秒的數(shù)據(jù)給CPU處理,則CCNT=FS×K。若ACNT、BCNT、CCNT確定了,則待申請的ping/pong緩存的大小也隨之確定,其大小等于ACNT×BCNT×CCNT個字節(jié)。以K=0.2為例,且已知FS=19531Hz,則CCNT=19531×0.2≈3906。此時申請的ping-pong緩存大小等于3×4×3906=46872字節(jié)。以上配置涉及的寄存器,均可查詢TI公司官方的AM335x芯片手冊,限于篇幅,本說明書對此部分內(nèi)容不再贅述。

本發(fā)明軟件功能的具體實施有以下4點需注意:

1)本發(fā)明建議將數(shù)據(jù)采集相關的程序?qū)iT寫成內(nèi)核驅(qū)動模塊,將數(shù)據(jù)存入SD卡模塊和將數(shù)據(jù)進行實時處理這兩部分相關的程序?qū)懗蓱贸绦?,這樣系統(tǒng)軟件結構層次會更清晰明朗;

2)上述將EDMA的通道20和SPI1_CS0引腳的上升沿信號綁定,作為EDMA的觸發(fā)信號,需要配置AM335x中與EDMA模塊的Crossbar相關的寄存器;

3)由于SPI字長設置為24位(3字節(jié)),因此存入ping-pong緩存的每個AD值長度為3字節(jié)。而AM335x的字長為32位(4字節(jié)),又申請的ping-pong緩存的最小存儲單元是4字節(jié)。所以每個AD值存儲在了ping-pong緩存存儲單元中的低3字節(jié),高字節(jié)內(nèi)容未知。

故需要根據(jù)每個AD值的符號位,先將ping-pong緩存中的數(shù)據(jù)進行處理,將存儲在低3字節(jié)的數(shù)據(jù)轉(zhuǎn)換成32位格式數(shù)據(jù),然后才能使用ping-pong緩存中的數(shù)據(jù);

4)上述將ping-pong緩存的數(shù)據(jù)存儲至SD卡或者進行實時處理,具體涉及到的程序需根據(jù)實際情況而定。如可以將ping-pong緩存的數(shù)據(jù)以wav文件格式存儲至SD卡,或者直接對ping-pong緩存的數(shù)據(jù)進行濾波處理。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
呼图壁县| 新竹县| 淮南市| 河间市| 壤塘县| 绥棱县| 同心县| 阜阳市| 锦屏县| 绵阳市| 海南省| 田东县| 原阳县| 循化| 金平| 呼图壁县| 肃南| 新晃| 浮山县| 天全县| 平潭县| 虹口区| 当雄县| 土默特右旗| 九寨沟县| 涪陵区| 庄浪县| 电白县| 清水河县| 通城县| 文登市| 乌鲁木齐市| 永州市| 左权县| 西安市| 泽普县| 呼和浩特市| 沈阳市| 彰化县| 南岸区| 育儿|