基于麥克風(fēng)陣列的信號采集處理系統設計
依據PCM4204的I2S數據格式,將接收幀同步信號的寬度定為32 bit,接收延遲設置為1個(gè)delay;AXR[0]~AXR[7]設置為接收模式。
通過(guò)以下函數,完成對McASP1接口的配置


2.2 EDMA傳輸程序設計
為保證數據的完整性,選用Ping-Pong模式對EDMA傳輸進(jìn)行配置,Ping緩存存放如表3所示,Pong緩存與Ping緩存結構相同。本文引用地址:http://dyxdggzs.com/article/194624.htm
依據Ping、Pong緩存數據格式,對EDMA接收進(jìn)行配置,即對:EDMA的opt,src,cnt,dst,idx,及rld寄存器分別進(jìn)行設置。通過(guò)opt寄存器設置數據長(cháng)度為32 bit,源數據和目的數據為一維方式,源地址固定,目的地址采用索引,啟用幀同步等。源地址和目的地址分別寫(xiě)入src,dst寄存器。cnt寄存器主要用于配置幀計數和單元計數。由于采用I2S的數據格式,所以1幀數據只包含2個(gè)單元數據。通過(guò)配置idex及rld寄存器,目的數據可以按照設定的索引方式存儲。
2.3 DSP端OSB接口程序設計
首先,通過(guò)調用用戶(hù)的初始化函數,使能外部中斷并初始化USB寄存器。之后,程序通過(guò)數據傳輸函數,完成DSP與PC機的數據傳輸。
USB初始化程序配置如下:
(1)使能外部中斷6(EXT_INT6)。
(2)加載USB描述表,并進(jìn)行自舉檢測,如自舉不成功,則重新自舉,直到端點(diǎn)0收到設置包為止。
(3)配置USB為異步從FIFO(Asynchronous SlaveFIFO)模式,采用內部48 MHz時(shí)鐘源。
(4)讀取FNADDR寄存器,判斷USB工作狀態(tài)。
(5)依據USB工作狀態(tài),配置EP2、EP4、EP6、EP8,并設置一次傳送的Byte長(cháng)度。設置EP2、EP4為BULK OUT,EP6、EP8為BULK IN,其緩沖大小分別為2×512 Byte。
在數據傳輸過(guò)程中,PC端通過(guò)EP2向DSP發(fā)送讀數據命令,DSP通過(guò)外部中斷收到讀命令后,使用EP6發(fā)送已采集好的數據。在聲音數據采集系統中,每路麥克風(fēng)以96 kHz進(jìn)行24位采樣,按照ping-pong方式進(jìn)行存儲。在傳輸過(guò)程中還需進(jìn)行判斷,當采集數據存儲在ping緩存時(shí),發(fā)送pong緩存中的數據,當采集數據存儲在pong緩存時(shí),發(fā)送ping緩存的數據。
由于TMS320C6713通過(guò)EMIF的CE3存儲空間可以外擴USB2.0接口,需對EMIF接口的CE3寄存器進(jìn)行配置,將USB接口設為16位異步存儲接口,設定讀/寫(xiě)的建立時(shí)間(Setup)、促發(fā)時(shí)間(Strobe)、保持時(shí)間,使其滿(mǎn)足CY7C68001的讀/寫(xiě)時(shí)序要求。
2.4 PC機平臺應用程序設計
PC端接口程序采用VC++6.0編寫(xiě),首先調用OpenDriver()打開(kāi)USB接口設備,獲得設備的句柄hDevice,之后調用Sx2SendVendorReq()函數向外設發(fā)出命令,讀取USB配置,最后調用Sx2BulkdataTrans()進(jìn)行數據傳輸,通過(guò)調用CFile類(lèi)將接收到的數據存放在文本文件中。程序使用多線(xiàn)程技術(shù),使得應用程序將USB數據傳輸在后臺進(jìn)行處理,應用程序前臺還可進(jìn)行其他操作。
3 結束語(yǔ)
設計了16通道麥克風(fēng)陣列采集處理平臺,并通過(guò)外擴USB芯片與PC主機端進(jìn)行數據傳輸,可使用戶(hù)方便地在PC端進(jìn)行數據處理。該系統采樣數據量大、同步性強、精確度高、傳輸速率快、可靠性好,方便為各種麥克風(fēng)陣列算法提供原始數據。
評論