基于ARM的樓宇對講系統(tǒng)設計參考模板_第1頁
基于ARM的樓宇對講系統(tǒng)設計參考模板_第2頁
基于ARM的樓宇對講系統(tǒng)設計參考模板_第3頁
基于ARM的樓宇對講系統(tǒng)設計參考模板_第4頁
基于ARM的樓宇對講系統(tǒng)設計參考模板_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 基于ARM的樓宇對講系統(tǒng)設計班 級: 電信 12-2 姓 名: 李 猛 學 號: 1206110207 指導教師: 張沛泓 成 績: 電子與信息工程學院信息與通信工程系1 / 15基于ARM的樓宇對講系統(tǒng)設計摘要近年來,基于ARM內核的處理器被廣泛應用,越來越多的樓宇對講設備增加了語音、圖像等多媒體處理能力。本文利用三星的ARM9微處理器S3C2440和Philips公司的UDAl341芯片構建了一個嵌入式樓宇對講系統(tǒng),并給出硬件電路的設計和基于Linux的基本實現(xiàn),該系統(tǒng)可以采樣、傳輸語音信號,可以雙工通話,可以應用于網(wǎng)絡監(jiān)控、視頻傳輸?shù)榷喾N系統(tǒng)中。關鍵詞:嵌入式;ARM;Linux;音頻

2、;驅動程序1 系統(tǒng)設計思路1.1 功能分析傳統(tǒng)的對講系統(tǒng)中話路傳輸采用模擬信號傳輸,信令和數(shù)據(jù)往往采用簡單的串行通訊方式,這必然造成重復投資,布線施工及調試的難度大大增加。同時由于使用串行信號線,無法解決遠距離信號衰減等問題。隨著嵌入式處理器技術的發(fā)展,原來被廣泛采用的模擬語音通信技術正逐漸被數(shù)字語音技術所代替。雙向語音通信是樓宇對講系統(tǒng)的基本功能,如何設計一個高效率的雙向語音對講系統(tǒng)對基于其上的多種應用都有很現(xiàn)實的技術意義。由此,本文提出了一種利用三星公司的ARM9 2440處理器和Linux操作系統(tǒng)的樓宇對講系統(tǒng)。1.2 設計思路本文采用的嵌入式微處理器為三星公司的ARM9 2440處理器

3、,該芯片是一款使用ARM公司的ARM920T處理器核,180nm制造工藝的32位微控制器。其擁有獨立的16KB指令Cache、16KB數(shù)據(jù)Cache和存儲器管理單元,最高可運行在533MHz,具有更高的指令和數(shù)據(jù)處理能力,能夠運行完整的Linux系統(tǒng)。同時它集成了USB控制器、以太網(wǎng)控制、RTC、SPI、IIC等豐富的外圍設備,系統(tǒng)采用的硬件平臺的總體結構如圖1-1所示。本設計軟硬件采用模塊化嵌入式系統(tǒng)設計,使系統(tǒng)容易擴展,豐富了智能社區(qū)系統(tǒng)的功能。其他相關硬件有中國臺灣DAVICOM公司的以太網(wǎng)接口芯片DM9000A,該芯片集成10/100M物理層接口,內部帶有用來接收發(fā)送數(shù)據(jù)的FIFO緩存

4、SRAM 16K字節(jié),支持8/16bit兩種主機工作模式,是實現(xiàn)嵌入式設備網(wǎng)絡接口的理想選擇。SAMSUNG公司的64M NAND FLASH芯片K9F1208;現(xiàn)代公司的32M SDRAM芯片;IIS音頻接口。2440核心板S3C2440 CPU64M SDRAM64M NAND FLASHSD卡接口3路RS232接口SPI、IIC接口2路變頻輸出3.5寸觸摸屏接口10M/100M網(wǎng)絡接口4個發(fā)光二極管4個按鍵電源、復位邏輯電路、JTAG調試接口IIS音頻接口2路USB接口圖1-1 系統(tǒng)硬件設計結構圖2 系統(tǒng)設計2.1 音頻硬件設計S3C2440內置數(shù)字音頻接口IIS,IIS(Inter-I

5、C Sound)是Philips公司提出的串行數(shù)字音頻總線協(xié)議。目前很多音頻芯片和MCU都提供了對IIS的支持,UDA1341就是Philips公司生產(chǎn)的一款通用的支持IIS接口的音頻芯片,其采用位流轉換技術進行信號處理,具有可編程增益放大器(PGA)和數(shù)字自動增益控制器(AGC),提供兩組音頻信號輸入接口,每組包括左右2個聲道。由于IIS總線只處理音頻數(shù)據(jù),因此UDA1341還內置用于傳輸控制信號的L3總線接口,L3接口相當于混音器控制接口,可以控制輸入/輸出音頻信號的高低音及音量大小等,UDA1341的L3總線由時鐘、數(shù)據(jù)、模式3根線構成,UDA1341和S3C2440的連接如圖2-1所示

6、。由于S3C2440具備IIS總線接口,所以可直接外接8/16比特的立體聲CODEC,它還可以給FIFO通道提供DMA傳輸模式,從而使數(shù)據(jù)發(fā)送和接收同時進行。IIS為了處理聲音數(shù)據(jù),提供了4根串行總線:串行數(shù)據(jù)輸入(I2SSDI)、串行數(shù)據(jù)輸出(I2SSDO)、左右聲道選擇(IISLRCK)和串行位時鐘(IISCLK)。另外,CDCLK為UDA1341芯片提供音頻A/D、D/A采樣時的時鐘信號。S3C2440的IIS總線信號與UDAl34l的IIS信號直接相連。圖2-1 UDA1341硬件原理圖S3C2440的TOUT2、TCLK0和TOUT3通用數(shù)據(jù)輸出引腳和UDA1341TS的引腳L3MO

7、DE、L3CLOCK和L3DATA分別連接,可以控制輸入/輸出音頻信號的低音及音量大小,UDAl34l對外提供兩組音頻信號輸入接口,每組包括左右2個聲道,本設計使用了其中的一組。UDAl34l的VOUTL、VOUTR分別經(jīng)過電容C405、C406和電阻R400、R401、R402、R403組成的低通濾波電路和揚聲器相連接。VINL1、VINR1經(jīng)過電容C407和話筒相連4。2.2 音頻驅動的實現(xiàn)音頻設備驅動程序除了對硬件的控制實現(xiàn)音頻流的傳輸,還要向上層提供標準的音頻接口。設備驅動程序需要完成的工作包括:對設備以及資源初始化及釋放;讀取應用程序傳送給設備文件的數(shù)據(jù)轉交給系統(tǒng)底層處理,并回送應用

8、程序請求的數(shù)據(jù)。UDA1341芯片的驅動程序結構如圖2-2所示,從上到下可以劃分為:用戶接口層、數(shù)據(jù)I/O層、硬件接口層三個層次2。設備驅動的具體實現(xiàn)包括設備初始化、DSP驅動、MIXER驅動和釋放設備四部分。MIXER(混音器)和DSP(數(shù)字信號處理器)是兩個最基本的音頻設備,MIXER的作用是將多個信號組合或者疊加在一起,在Linux系統(tǒng)中,其對應的設備文件是/dev/mixer,DSP為編解碼器,實現(xiàn)錄音和放音功能,其對應的設備文件是/dev/dsp。UDA1341設備驅動用戶接口層:DSP設備驅動、MIXER設備驅動DMA方式數(shù)據(jù)輸入DMA方式數(shù)據(jù)輸出UDA1341硬件接口層一層二層三

9、層圖2-2 音頻芯片的驅動程序結構框圖2.3 DSP驅動的實現(xiàn)DSP設備讀取數(shù)據(jù)時,從麥克輸入的模擬信號經(jīng)過低通濾波以后發(fā)送給A/D轉換器,A/D轉換器將模擬信號轉變成數(shù)字信號并保存在音頻驅動程序的內核緩沖區(qū)中,同時還要向應用程序提供read()系統(tǒng)調用接口。當向DSP設備寫入數(shù)據(jù)時,數(shù)字信號會經(jīng)過D/A轉換器變成模擬信號,應用程序可以通過write()系統(tǒng)調用完成這個過程。DSP驅動實現(xiàn)的主要工作就是完成file_operations中的open()、read()、write()、ioctl()等函數(shù),其中ioct l()函數(shù)能夠對采樣率、量化精度、DMA緩沖區(qū)塊大小等參數(shù)進行設置1。為了提

10、高傳輸速度和系統(tǒng)性能,本系統(tǒng)使用DMA技術直接將需要回放或錄制的聲音存放在內核的DMA緩存區(qū)中,由于S3C2440的DMA控制器沒有內置的DMA存儲區(qū)域,因而驅動程序必須在內存中為音頻設備分配DMA緩存區(qū)。緩沖區(qū)大小的設置對系統(tǒng)性能有很大的影響,因為音頻數(shù)據(jù)量通常較大,緩存太小容易造成緩存溢出,而如果要填充大的緩沖區(qū),CPU就要一次處理大量的數(shù)據(jù),這樣處理數(shù)據(jù)時間較長,容易造成延遲。為此,本文采用一個環(huán)形緩沖區(qū)(ring buffer),將DMA緩沖區(qū)分成多個固定大小的塊,塊的大小可以通過ioctl()系統(tǒng)調用來調整,驅動程序每次在聲音緩沖區(qū)傳送一個塊的數(shù)據(jù)到用戶的應用程序中??刂蒲h(huán)緩沖區(qū)的

11、兩個結構為:typedef struct int size;char *start;dma_addr_t dma_addr;struct semaphore sem;int master; audio_buf_t;typedef struct audio_buf_t *buffers;audio_buf_t *buf;u_int buf_idx;u_int fragsize;u_int nbfrags;dmach_t dma_ch; audio_stream_t;audio_buf_t內記錄了每個DMA緩存區(qū)的長度、虛擬地址、物理地址以及一個用來防止多個write對緩存區(qū)同時操作的信號量。au

12、dio_stream_t內包含了指向循環(huán)緩存區(qū)開始的指針,正被使用的緩存區(qū)的指針,每個緩存區(qū)的大小,緩存區(qū)的個數(shù)以及使用的DMA通道號。如果要驅動DSP,還需要注冊一個DSP設備,注冊函數(shù)為:Int register_sound_dsp(struct_file_operatio ns *fops,int dev);參數(shù)fops是一個文件操作接口,第二個參數(shù)dev是設備編號,如果值為-1,則系統(tǒng)自動分配一個設備編號。2.4 MIXER驅動的實現(xiàn)MIXER驅動只控制混音效果,可以控制輸入/輸出音頻信號的低音及音量大小等2。其中最主要的函數(shù)為:static int mixdev_ioctl(stru

13、ct inode* inod,struct file *file,unsigned int cmd, unsigned long arg);ioctl()函數(shù)通過不同的I/O控制命令來實現(xiàn)MIXER的不同功能。本文實現(xiàn)的主要控制命令如表2-1。用戶的應用程序可以調用ioctl()函數(shù)對MIXER進行控制。表2-1 MIXER主要控制命令控制命令注釋SOUND_MIXER_INFO返回MIXER信息SOUND_MIXER_READ_STEREODEVS獲取設備對立體聲的支持SOUND_MIXER_READ_CAPS獲取聲卡能力SOUND_MIXER_WRITE_VOLUME錄音音量調節(jié)SOUND

14、_MIXER_READ_VOLUME放音音量調節(jié)SOUND_MIXER_READ_IGAIN放音增益調節(jié)SOUND_MIXER_WRITE_IGAIN錄音增益調節(jié)2.5 L3接口的設計L3接口由S3C2440的引腳TOUT2、TCLK0和TOUT3組成,與S3C2440的B組通用寄存器GBB2、GPB3、GPB4復用。在設備MIXER工作之前,需要對這些端口進行初始化,本文是用了下面的宏將引腳初始化為輸出模式,低電平觸發(fā)2。set_gpio_ctrl(GPIO_MODE_OUT | GPIO_PULLUP_DIS | GPIO_B4);set_gpio_ctrl(GPIO_MODE_OUT |

15、 GPIO_PULLUP_DIS | GPIO_B3);set_gpio_ctrl(GPIO_MODE_OUT | GPIO_PULLUP_DIS | GPIO_B2);2.6 設備的安裝與卸載在UDA1341加載模塊中,除了需要初始化IIS接口、設置L3總線對應的GPIO、設置UDA1341的工作模式外,還需要申請DMA通道和注冊DSP和MIXER接口。S3C2440具有4個DMA通道,為了實現(xiàn)存儲器和I/O之間的傳輸,本文采用DMA通道1輸出聲音數(shù)據(jù),DMA通道2來輸入聲音數(shù)據(jù),其初始化的過程代碼為:output_stream.dma_ch = DMA_CH2;if (audio_init

16、_dma(&output_stream, "UDA1341 out") audio_clear_dma(&output_stream);printk( KERN_WARNING AUDIO_NAME_VERBOSE ": unable to get DMA channelsn" );return -EBUSY; input_stream.dma_ch = DMA_CH1;if (audio_init_dma(&input_stream, "UDA1341 in") audio_clear_dma(&in

17、put_stream);printk( KERN_WARNING AUDIO_NAME_VERBOSE ": unable to get DMA channelsn" );return -EBUSY; 設備的卸載由注銷函數(shù)close()來完成。注銷函數(shù)釋放驅動程序使用的各種系統(tǒng)資源,如DMA和緩沖區(qū)等。3 系統(tǒng)工作流程3.1 工作流程設備驅動程序完成以后,就可以在用戶空間實現(xiàn)數(shù)據(jù)的輸入和輸出,其程序流程如圖3-1所示。失敗打開設備文件設置緩沖區(qū)為512字節(jié)設置采樣率、位數(shù)、格式、聲道等讀/dev/dsp實現(xiàn)錄音寫/dev/dsp實現(xiàn)放音結 束啟 動成功失敗失敗圖3-1 用戶

18、錄音放音程序流程圖采樣率設置為44.1kHz,位數(shù)為16bit,格式為立體聲,雙聲道。主要實現(xiàn)了對DSP接口的讀寫,讀數(shù)據(jù)的過程就是錄音的過程,寫數(shù)據(jù)的過程就是播放的過程。測試用的讀函數(shù)代碼為:Static ssize_t audio_read(struct file *file, char *buffer, size_t count,loff_t *ppos);測試用的寫函數(shù)代碼為:Static ssize_t audio_write(struct file *file, char *buffer, size_t count, loff_t *ppos);參數(shù)file是要操作的設備,在使用之

19、前必須要打開,buffer是一個環(huán)形的緩沖區(qū),每次讀寫緩沖區(qū)的大小由count來設定,ppos為用來控制數(shù)據(jù)的指針4。3.2 數(shù)據(jù)的傳輸為了實現(xiàn)設備之間的對講,還要能夠在設備間進行數(shù)據(jù)傳輸,數(shù)據(jù)傳輸是利用SOCKET來實現(xiàn)的,在每一個終端上都實現(xiàn)了一個服務器應用程序,監(jiān)聽端口是3391,如果接收到一個響應,就利用服務器管理程序進行數(shù)據(jù)處理??紤]到樓宇對講系統(tǒng)的特點,不會有兩個網(wǎng)絡請求同時到達同一個終端的情況,所以本文采用循環(huán)服務器模型來處理數(shù)據(jù),在同一時刻只能處理一個客戶機請求。服務器在接收到一個客戶機請求之后,立即處理,在處理完這個請求之后再繼續(xù)下一個。在處理一個請求的過程中,下一個請求將等待。3.3 系統(tǒng)測試模型整個測試系統(tǒng)分為前端設備和終端設備兩部分,拓撲結構如圖3-2所示。圖3-2 系統(tǒng)測試模型驅動程序被單獨編譯為一個可加載的模塊,模塊的加載代碼寫在文件/etc/profile文件中,在Linux內核啟動以后,會自動執(zhí)行這個腳本文件,在控制終端可以看到有“UDA1341 audio driver initialized” 信息,說明設備已經(jīng)初始化。進入終端之后,查看設備文件名:ls -al /dev/sound/*crw- 1 root root 14, 3 Jan 1 00:00 /dev/sound/dspcrw- 1 ro

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論