新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM的嵌入式語音存儲系統設計

        基于ARM的嵌入式語音存儲系統設計

        作者: 時間:2012-05-23 來源:網絡 收藏

        3.3 IDE硬盤控制模塊

        IDE接口是硬盤和光驅普遍使用的外部接口,接口采用16位數據總線并行傳送,體積小、速度快,兼容性強。IDE接口主要有可編程輸入輸出(Programming Input Output,PIO)和直接內存訪問(Direct Mcmory Access,DMA)兩種傳輸模式。PIO模式占用大量的資源,數據傳輸速率較低;DMA模式需要額外的驅動程序或設置,資源占用少、執行效率較高。本選擇DMA模式。

        e.JPG

        S3C2440A與硬盤接口如圖5所示。其接口信號分為片選信號、數據信號和控制信號3個部分。硬盤上寄存器分為兩組,分別由/CS0和/ CS1選中其中的一組,A0~A2引腳用于組內寄存器尋址,包括數據寄存器、錯誤寄存器、扇區計數器、扇區號寄存器、低柱面號寄存器、高柱面寄存器、狀態寄存器和命令寄存器。數據線D0~D15用于數據的雙向傳輸。/DIOR、/DIOW是讀寫控制信號;/Reset是硬盤復位信號;DMARQ(DMA請求信號)和/DMACK(DMA應答信號)是專用于DMA模式的信號。

        4 軟件實現

        4.1 數據的采集

        采集部分主要是完成UDA1341TS驅動程序的編寫,其初始化相關代碼如下:

        f.JPG

        端口初始化包括L3總線接口和I2S接口的設置,首先將與L3接口相連的通用I/O口GPB2、GPB3、GPB4設置為輸出模式,然后設置與I2S控制器輸出信號相關的GPIO引腳,將GPE0~GPE4這5個引腳設置為I2S接口的信號模式。UDA1341TS芯片初始化部分包括L3接口時序和協議的模擬,完成采樣速率、數據格式等參數的設置。系統采樣速率為8 kHz,使用時鐘為384 fs,數據輸入格式設置為MSB-Justifled模式。接下來通過“audio_init_dma()”申請DMA通道,輸出音頻緩沖區的DMA通道設為通道2,輸入音頻緩沖區的DMA通道設為通道1。若初始化失敗會返網相應的錯誤標志,初始化成功后方可進行后續操作。

        4,2 IDE接口函數

        硬盤驅動程序實現分為設備初始化、打開設備、設備I/O操作和釋放設備等幾部分。要完成硬盤數據交換的工作,就需要對寄存器進行頻繁的讀寫操作,為了方便在程序中的調用,把這些和硬件操作密切相關的操作都寫成了接口函數,其函數說明略——編者注。

        4.3 系統主程序流程

        主進程開始后首先初始化采樣參數,包括采樣速率、采樣點數、數據格式及采樣通道,若初始化不成功會返回相應的錯誤標志,并作出相應的出錯處理,成功后可繼續下一步操作。然后通過鍵值判斷數據的區是選擇Flash還是選擇硬盤,并初始化相應的區,這是保證系統在沒有外擴硬盤的情況下也能正常運行,只不過是數據存儲量較小而已;若選擇操作硬盤,但硬盤未連接,仍然會返回相應的錯誤標志,并進入出錯處理函數繼續執行。接下來根據鍵值判斷是否進行壓縮處理,若進行壓縮處理,則相應的編解碼標志置位;根據該標志確定是否啟動編解碼進程,即系統能存儲未壓縮的數據,也能存儲壓縮后的數據,可以根據需要進行適當的選擇。啟動A/D轉換進程并進行數據的存儲,相當于錄音的過程;數據存儲完成后,即錄音結束后,啟動D/A轉換進程進行語音播放。錄音和播放可以同時進行,為了測試方便,這里把這兩個過程分離開來。

        總的來說,系統主進程創建了A/D、D/A轉換進程和編解碼進程,結合Linux的共享機制和進程間通信等手段,實現了語音信號的采集、壓縮、存儲、回放等環節。

        系統主程序流程圖略——編者注。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 建阳市| 临沧市| 航空| 满城县| 封丘县| 同德县| 泸溪县| 噶尔县| 阿荣旗| 桂林市| 文昌市| 云南省| 类乌齐县| 塔城市| 黔东| 布拖县| 永福县| 广丰县| 怀远县| 同江市| 航空| 嵩明县| 建德市| 呼和浩特市| 海口市| 镇江市| 宣化县| 济源市| 泽普县| 汝南县| 子长县| 东海县| 大理市| 通道| 嘉善县| 湖南省| 保亭| 天水市| 张北县| 安泽县| 兴化市|