亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于STM32的實(shí)時(shí)語音處理系統(tǒng)設(shè)計(jì)

        2014-04-29 11:35:27肖娟張志強(qiáng)
        電子世界 2014年15期
        關(guān)鍵詞:存儲(chǔ)數(shù)字信號(hào)

        肖娟 張志強(qiáng)

        【摘要】設(shè)計(jì)一個(gè)基于STM32的實(shí)時(shí)語音處理系統(tǒng)。硬件模塊通過放大、除雜完成將語音信號(hào)轉(zhuǎn)換成處理器能夠進(jìn)行高效處理的有效數(shù)字信號(hào),軟件部分主要涉及到TIM配合ADC采樣數(shù)據(jù)并通過DMA傳輸,SRAM存儲(chǔ)語音信號(hào)通過FSMC與STM32連通,按鍵控制輸出選擇模式,DAC經(jīng)過DMA將信號(hào)傳輸。

        【關(guān)鍵詞】實(shí)時(shí)語音;STM32;數(shù)字信號(hào);存儲(chǔ)

        引言

        聲音信號(hào)在人類的社會(huì)生活中普遍存在,隨著科學(xué)技術(shù)的不斷發(fā)展,語音處理系統(tǒng)在人們的生活中應(yīng)用越來越廣泛,處理方法也越來越多樣化。

        設(shè)計(jì)一個(gè)基于STM32F103ZET6的實(shí)時(shí)語音處理系統(tǒng)。硬件模塊通過放大、除雜完成將語音信號(hào)轉(zhuǎn)換成處理器能夠進(jìn)行高效處理的有效數(shù)字信號(hào),軟件部分主要涉及到TIM配合ADC采樣數(shù)據(jù)并通過DMA傳輸,SRAM存儲(chǔ)語音信號(hào)通過FSMC與STM32連通,按鍵控制輸出選擇模式,DAC經(jīng)過DMA將信號(hào)傳輸。

        1.系統(tǒng)方案設(shè)計(jì)

        本系統(tǒng)分為三大模塊:信號(hào)采集、信號(hào)處理、信號(hào)輸出。信號(hào)采集模塊包括聲電轉(zhuǎn)換、信號(hào)濾波與放大模塊;信號(hào)處理模塊包括模數(shù)轉(zhuǎn)換、信號(hào)存儲(chǔ)、按鍵控制模塊;信號(hào)輸出模塊包括數(shù)模轉(zhuǎn)換、功率放大模塊。系統(tǒng)設(shè)計(jì)框圖如圖1所示。

        圖1 系統(tǒng)總體設(shè)計(jì)框圖

        2.硬件設(shè)計(jì)

        本語音處理系統(tǒng)的硬件模塊包括:語音輸入模塊、音頻放大模塊、濾波模塊和功率放大模塊。

        2.1 語音輸入模塊

        駐極體的輸出線有兩根:一般用藍(lán)色塑線表示源級(jí)S,用紅色塑料線和連接金屬外殼的屏蔽線表示漏極D。語音輸入電路圖如圖2所示。

        圖2 語音輸入電路圖 ? ? ? ? ? ? 圖3 音頻放大電路圖

        2.2 音頻放大模塊

        本設(shè)計(jì)的音頻放大模塊選用LM386。 音頻放大的電路原理圖如圖3所示,本設(shè)計(jì)中由于駐極體出來的電壓是毫伏級(jí)別,單片機(jī)處理的最高電壓是3.3V,可通過電位器來調(diào)節(jié)從駐極體輸入過來的電壓值,放大倍數(shù)大致設(shè)為約為38倍,計(jì)算方法如:

        2.3 除雜濾波模塊

        本設(shè)計(jì)采集的聲音頻率范圍是200Hz到3000Hz,采用低通濾波和高通濾波電路來濾除雜波信號(hào),為了更好的濾掉3KHz以外的高頻保留3KHz以內(nèi)的低頻信號(hào),采用二階有源低通濾波電路。為使信號(hào)在低頻段以更快速率下降,采用一階有源高通濾波電路,濾波電路如圖4所示。

        圖4 濾波模塊電路圖 ? ? ? ? ?圖5 抬壓電路圖

        2.4 抬壓電路

        聲音信號(hào)經(jīng)過放大濾波后變?yōu)榧儍舻男盘?hào)送至控制芯片進(jìn)行A/D轉(zhuǎn)換,但是開發(fā)板只能接受正的電壓信號(hào),負(fù)電壓信號(hào)會(huì)對(duì)開發(fā)板造成不可逆的影響,同時(shí)為了使聲音實(shí)現(xiàn)不失真的儲(chǔ)存,需將聲音信號(hào)中的幅信號(hào)抬高至零參考電壓以上才送入處理器處理,電路原理圖如圖5所示。

        3.軟件設(shè)計(jì)

        軟件設(shè)計(jì)部分包括以下幾個(gè)模塊:信號(hào)的采集與轉(zhuǎn)換、語音信號(hào)的存儲(chǔ)、按鍵對(duì)存儲(chǔ)語音的控制。其中信號(hào)的采集是指控制器將經(jīng)過放大濾波后的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào);語音信號(hào)的存儲(chǔ)是指將通過端口采集到的語音數(shù)字信號(hào)存儲(chǔ)到SRAM中,需要播放的時(shí)候輸出播放;涉及到CPU的內(nèi)部資源的存儲(chǔ)、ADC、TIMER、DMA、FSMC等模塊。

        3.1 初始化設(shè)置

        STM32上電復(fù)位結(jié)束后,首先要進(jìn)行系統(tǒng)的初始化。

        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1|

        RCC_AHBPeriph_DMA2|RCC_AHBPeriph_FSMC, ENABLE);

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF|

        RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|

        |RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOC,ENABLE);

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6|RCC_APB1Periph_DAC|RCC_APB1Periph_TIM3|RCC_APB2Periph_AFIO,ENABLE);

        }

        3.2 A/D軟件設(shè)計(jì)

        為了頻段獲得優(yōu)良的音頻輸出,A/D的采樣頻率設(shè)置為40KHz,使用定時(shí)器進(jìn)行配合輸出,當(dāng)計(jì)數(shù)時(shí)間到了產(chǎn)生中斷,從而讓ADC采集一次數(shù)據(jù)。主要程序如下:

        void ADC_Config(void)

        {

        RCC_ADCCLKConfig(RCC_PCLK2_Div6);

        ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;

        ADC_InitStructure.ADC_ScanConvMode=ENABLE;

        //打開掃描模式

        .......

        ADC_Cmd(ADC1, ENABLE);//開啟ADC1

        ADC_ResetCalibration(ADC1);

        while(ADC_GetResetCalibrationStatus(ADC1)); //等待重新校準(zhǔn)完成

        ADC_StartCalibration(ADC1);//開始校準(zhǔn)

        while(ADC_GetCalibrationStatus(ADC1));//等待校準(zhǔn)完成

        ADC_SoftwareStartConvCmd(ADC1, ENABLE);

        }

        3.3 定時(shí)器軟件設(shè)計(jì)

        定時(shí)器控制準(zhǔn)確的時(shí)間來產(chǎn)生中斷控制DMA將ADC采集到的數(shù)據(jù)進(jìn)行相應(yīng)的處理。本設(shè)計(jì)選用的是通用定時(shí)器TIM3,它是16位的計(jì)數(shù)器可向上、向下、向上/向下自動(dòng)裝載。具有16位可編程預(yù)分頻器,分頻系數(shù)為1~65536之間任意數(shù)值。當(dāng)計(jì)數(shù)器向上或向下溢出時(shí)就會(huì)產(chǎn)生DMA請求。

        void TIM3_Configuration(void)

        {

        TIM_TimeBaseStructure.TIM_Period = 900;//自動(dòng)重裝載的值

        TIM_TimeBaseStructure.TIM_Prescaler=0; ? ? ? ?//預(yù)分頻系數(shù)

        TIM_TimeBaseStructure.TIM_ClockDivision= 0x0;//不設(shè)置時(shí)鐘分割

        TIM_TimeBaseStructure.TIM_CounterMode= TIM_CounterMode_Up;

        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

        TIM_Cmd(TIM3,ENABLE);//定時(shí)使能

        TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); ?//定時(shí)中斷使能

        }

        3.4 DAC軟件設(shè)計(jì)

        DAC轉(zhuǎn)換可以由某外部事件觸發(fā),本設(shè)計(jì)選擇TIM6的TRGO事件。每次DAC接口偵測到來自選中的定時(shí)器TRGO輸出,則最近存放在數(shù)據(jù)寄存器DAC_DHRx中的數(shù)據(jù)就會(huì)被傳送到數(shù)據(jù)輸出寄存器DAC_DORx中。

        void DAC_Config(void)

        {

        TIM_PrescalerConfig(TIM6, 0x0, TIM_PSCReloadMode_Update);//預(yù)分頻值為1

        TIM_SetAutoreload(TIM6,900);//自動(dòng)重裝載值900

        TIM_SelectOutputTrigger(TIM6, TIM_TRGOSource_Update);

        //使用更新時(shí)間觸發(fā)

        DAC_InitStructure.DAC_Trigger= DAC_Trigger_T6_TRGO;

        //DAC觸發(fā)方式為T6觸發(fā)

        DAC_InitStructure.DAC_WaveGeneration=DAC_WaveGeneration_None;

        DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;//不使用輸出緩存

        DAC_Init(DAC_Channel_1, &DAC_InitStructure);//初始化DAC

        }

        3.5 FSMC模塊設(shè)計(jì)

        FSMC(Flexible Static Memory Controller,可變靜態(tài)存儲(chǔ)控制器)是STM32系列采用的一種新型的存儲(chǔ)器擴(kuò)展技術(shù)。在外部存儲(chǔ)器擴(kuò)展方面具有獨(dú)特的優(yōu)勢,根據(jù)系統(tǒng)的應(yīng)用需要,通過設(shè)置相應(yīng)的時(shí)序,數(shù)據(jù)位數(shù)等,可以很方便地與存儲(chǔ)器傳輸。具體程序代碼略。

        3.6 按鍵控制設(shè)計(jì)

        本設(shè)計(jì)中使用SW1、SW2、SW3三個(gè)按鍵進(jìn)行控制。按下SW1時(shí)開始將語音信號(hào)存儲(chǔ)至SRAM中;按下SW2時(shí)播放存儲(chǔ)在SRAM中的語音信號(hào);按下SW3時(shí)進(jìn)行實(shí)時(shí)語音播放。程序有幾個(gè)分支需要進(jìn)行判斷。第一種情況是從存儲(chǔ)器讀出標(biāo)志位未置1,此時(shí)只進(jìn)行實(shí)時(shí)語音播放。第二種情況按下存儲(chǔ)按鍵時(shí),語音依然播放,并且通過函數(shù)FSMC_SRAM_WriteBuffer(Escalator8bit,write_read_addr++,1);進(jìn)行存儲(chǔ)。第三種情況按下播放按鍵時(shí)通過函數(shù)FSMC_SRAM_ReadBuffer(Escalator8bit, write_read_addr++,1);將存儲(chǔ)在SRAM中的數(shù)據(jù)讀出。第四種情況存儲(chǔ)超過范圍時(shí)將不再進(jìn)行存儲(chǔ)。第五種情況播放超出范圍時(shí)繼續(xù)重首地址播放。

        具體程序代碼略。

        4.結(jié)語

        設(shè)計(jì)一個(gè)基于STM32F103ZET6的實(shí)時(shí)語音處理系統(tǒng),該系統(tǒng)不僅能夠達(dá)到對(duì)語音信號(hào)的采集與不失真的輸出,同時(shí)還可以對(duì)語音信號(hào)進(jìn)行一定量的存儲(chǔ)。結(jié)果表明,達(dá)到了預(yù)期的設(shè)計(jì)要求,并用于實(shí)際項(xiàng)目中。

        參考文獻(xiàn)

        [1]易克初等.語音信號(hào)處理[M].北京:國防工業(yè)出版社,2000.

        [2]蔡蓮紅等.現(xiàn)代語音技術(shù)基礎(chǔ)與應(yīng)用[M].北京:清華大學(xué)出版社,2003.

        [3]齊子元等.一種實(shí)時(shí)語音信號(hào)采集處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2005,9:105-107.

        [4]吳明暉等.基于ARM的嵌入式系統(tǒng)開發(fā)與應(yīng)用[M].北京:人民郵電出版社,2004.

        [5]譚浩強(qiáng)等.C語言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2000.

        [6]Brian W.Kernighan.The C Programming Language[M].北京:機(jī)械工業(yè)出版社,2004.

        [7]Andrew Koenig.Expert C Programming[M].北京:人民郵電出版社,2008.

        作者簡介:

        肖娟(1975—),女,湖南常寧人,碩士,講師,現(xiàn)供職于武漢輕工大學(xué)金銀湖校區(qū)電氣與電子工程學(xué)院,主要研究方向:信息傳輸與處理。

        張志強(qiáng)(1992—),男,湖北黃石人,大學(xué)本科,現(xiàn)就讀于武漢輕工大學(xué)金銀湖校區(qū)電氣與電子工程學(xué)院,主要研究方向:電氣工程及其自動(dòng)化。

        猜你喜歡
        存儲(chǔ)數(shù)字信號(hào)
        數(shù)字信號(hào)分析中存在的誤區(qū)與解決對(duì)策
        兩種數(shù)字信號(hào)浪涌保護(hù)器(SPD)測試分析
        電子測試(2018年13期)2018-09-26 03:29:32
        數(shù)字電子技術(shù)中的數(shù)字信號(hào)和數(shù)字電路
        電子制作(2018年16期)2018-09-26 03:27:16
        基于小波神經(jīng)網(wǎng)絡(luò)的數(shù)字信號(hào)調(diào)制方式識(shí)別
        檔案管理中電子文件的存儲(chǔ)探究
        條形碼技術(shù)在涂裝生產(chǎn)中的應(yīng)用
        云計(jì)算與虛擬化
        大型機(jī)電設(shè)備出口包裝防護(hù)
        青青草久热手机在线视频观看| 亚洲av永久无码国产精品久久 | 伊人色综合九久久天天蜜桃| 色播在线永久免费视频网站| 亚洲免费一区二区av| 久久99精品久久久久久清纯| 久久精品国产69国产精品亚洲| 久久91综合国产91久久精品| 中文字幕一区二区三区在线看一区| 丰满人妻猛进入中文字幕| 国产男女猛烈无遮挡免费网站| 亚洲地址一地址二地址三| 丰满少妇一区二区三区专区| 精品一区中文字幕在线观看| 久久超碰97人人做人人爱 | 日本a爱视频二区三区| 中文字幕人妻第一区| 精品欧美一区二区在线观看 | 亚洲欧美精品伊人久久| 国产精品天干天干在线观蜜臀| 日本免费一区尤物| 亚洲av有码精品天堂| 日本免费大片一区二区| 天美传媒一区二区| 国产精品网站夜色| 国产一区二区白浆在线观看| 丰满少妇弄高潮了www| 欧美精品久久久久久久自慰| 国产精品亚洲婷婷99久久精品| 日本高清一区二区三区在线观看| 无码人妻久久一区二区三区app | 狠狠丁香激情久久综合| 日本av一级视频在线观看| 亚洲av无码乱码在线观看牲色| 国产精品乱码在线观看| 国产在线精品亚洲视频在线 | 色婷婷一区二区三区四区成人网| 免费无码成人av在线播放不卡| 人妻av午夜综合福利视频| 虎白女粉嫩粉嫩的18在线观看| 少妇性l交大片|