全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽要點(diǎn)_第1頁(yè)
全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽要點(diǎn)_第2頁(yè)
全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽要點(diǎn)_第3頁(yè)
全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽要點(diǎn)_第4頁(yè)
全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽要點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2013年全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽2013 National Undergraduate Electronic Design Contest設(shè)計(jì)報(bào)告design report參賽題目: 紅外光通信裝置(F題)隊(duì)伍編號(hào):20130136日 期:2013年9月7日紅外光通信裝置(F題)摘要本裝置由32位MCUfe主控制器。采集音頻信號(hào)及溫度信號(hào)后, 利用紅外發(fā)光 管和紅外光接收模塊作為收發(fā)器件,用來(lái)定向傳輸。另配有一個(gè)紅外光通信中繼轉(zhuǎn) 發(fā)節(jié)點(diǎn),以改變通信方向90。,傳輸距離為2m。接收裝置在接收到信號(hào)后用耳機(jī) 播放出語(yǔ)音,用液晶屏顯示當(dāng)前溫度。 當(dāng)接收裝置不能接收發(fā)射端發(fā)射的信號(hào)時(shí), 用發(fā)光管指示。

2、裝置如圖所示:語(yǔ)音信號(hào)紅外發(fā)射裝置紅外光4中維轉(zhuǎn)發(fā)節(jié)點(diǎn)溫度傳感器,J21n21紅外光溫度顯示.紅外接收裝置一耳機(jī)關(guān)鍵詞: MCU ;紅外通信;語(yǔ)音信號(hào)定向傳輸Abstract: This communication device is based on a 32-bit MCU controller . First , the system Acquisition audio signal and temperature . Then , we use infrared receiver and infrared transmitter to transport audio signal .

3、Beside , there is a relay node.we can use relay node to change transmission direction 90° , and relay distance no less than 2 meters . Last , the system play audio by earphone and show the temperature by LCD . If infrared receiver can't receive signals , the LED turned on .Keyword: MCU Infr

4、ared Communication Audio Transmission1.引言我們?cè)诜治鲱}目之后認(rèn)為難點(diǎn)是利用紅外收發(fā)裝置盡可能完整的傳輸信號(hào)而且信號(hào)中要包含音頻信息和溫度信息。于是我們?cè)O(shè)計(jì)了三種方案:(一)直接傳輸音頻的模擬信號(hào),定時(shí)發(fā)生中斷,在中斷中發(fā)送溫度的數(shù)字信號(hào)。(二)用VS1503把采到的音頻信號(hào)轉(zhuǎn)化為壓縮比較高的.og/式,再通過(guò)串口方式發(fā)送給 接收端,接收端解碼為音頻信號(hào)播出。(三)用STM32對(duì)采集到的音頻信號(hào)轉(zhuǎn)化 為數(shù)字信號(hào),通過(guò)軟件降噪后再轉(zhuǎn)化為模擬信號(hào)傳輸。 接收端同樣將接收到的模 擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),用軟件處理后轉(zhuǎn)化為模擬信號(hào)播放。在硬件方面,考慮到音頻信號(hào)的采

5、集和播放,需要設(shè)計(jì)一些濾波電路和一些 放大電路等。紅外數(shù)字傳輸可以用包絡(luò)檢波在模擬信號(hào)中加載出信號(hào)。在完成硬件平臺(tái)后,我們開始從以上方案入手,開始對(duì)問(wèn)題的討論。2.方案設(shè)計(jì)與論證方案(一)直接傳輸音頻的模擬信號(hào),定時(shí)發(fā)生中斷,在中斷中發(fā)送溫度的數(shù)字信號(hào) 流程圖如下:音頻信號(hào)輸入信號(hào)預(yù)處理 k紅外發(fā)射端zr11+發(fā)送音頻卜經(jīng)過(guò)仔細(xì)分析,用模擬信號(hào)傳輸音頻會(huì)造成很大的失真,在發(fā)送溫度時(shí)會(huì)嚴(yán) 重影響音頻的播放。方案(二)用VS1503把采到的音頻信號(hào)轉(zhuǎn)化為壓縮比較高的.ogg格式,再通過(guò)串口方式 發(fā)送給接收端,接收端解碼為音頻信號(hào)播出。此方案從理論上來(lái)說(shuō)造成音頻信號(hào) 的失真非常小,使用串口方式通信的

6、話波特率我們根據(jù)紅外光發(fā)射接收頭的波長(zhǎng) 特性,發(fā)射功率等參數(shù)計(jì)算并測(cè)試下來(lái)可達(dá)到 4800bps,如要實(shí)時(shí)更新音頻信號(hào) 則會(huì)有較大延時(shí), 可能會(huì)超過(guò)5-10秒,如采用數(shù)字語(yǔ)音壓縮算法,8K采樣率下8 位數(shù)據(jù)可壓縮至1K byte/秒,且必須靠可靠的雙向通信協(xié)議來(lái)保證,不然信號(hào)將失真嚴(yán)重,故此方案被放棄。方案(三)用STM32對(duì)采集到的音頻信號(hào)經(jīng)過(guò)8k或16k采樣周期轉(zhuǎn)化為數(shù)字信號(hào),采 用軟件降低噪音, 采用芯片帶的PWM更新中斷協(xié)調(diào)好8K載波周期。 采用 11位高精度PWM脈寬調(diào)制。接收端同樣將接收到的微弱的模擬信號(hào)經(jīng)過(guò)帶通 濾波器,電容隔直放大信號(hào)后 ADC采樣轉(zhuǎn)化為數(shù)字信號(hào),溫度傳感器采集

7、的 數(shù)字信號(hào)通過(guò)包絡(luò)載波形式加載與模擬信號(hào)之中用軟件數(shù)字降噪調(diào)理處理后轉(zhuǎn) 化為模擬信號(hào)播放。具體流程如下:STMJ2STM32此方案的操作性比較強(qiáng),從理論上分許可以達(dá)到預(yù)定目標(biāo)3.系統(tǒng)設(shè)計(jì)本系統(tǒng)分為5個(gè)模塊,分別用3塊STM32來(lái)控制1)語(yǔ)音及溫度的采集語(yǔ)音信號(hào)的采集主要是實(shí)現(xiàn)聲音信號(hào)到電信號(hào)的轉(zhuǎn)換。使用的方法是用一個(gè) 駐極體,接受聲音信號(hào),然后進(jìn)行信號(hào)放大。一般麥克風(fēng)輸出電平為幾十毫伏,經(jīng)增益約為46 dB的前置放大器A 1放大至1V左右的范圍,以便推動(dòng)后級(jí)電路。通過(guò)帶通濾波器將頻帶通路設(shè)置在人耳比較容易實(shí)現(xiàn)的300HZ - 20KHz CPU每秒鐘采樣8 000點(diǎn)語(yǔ)音數(shù)據(jù),每一點(diǎn)數(shù)據(jù)以一個(gè)

8、12位分辨率采樣及傳輸,因?yàn)?音頻放大芯片已經(jīng)將處理為1.65V為中心的模擬信號(hào),因此我們可以根據(jù)此特 性進(jìn)行數(shù)字濾波及降噪聲處理,溫度采集使用DS18B20數(shù)字溫度傳感器。通過(guò)STM32與DS18B201接,得到 實(shí)時(shí)的溫度信息。紅外發(fā)送紅外發(fā)送電路我們使用了 9013三極管處于飽和狀態(tài) PWM脈寬調(diào)試方 式來(lái)驅(qū)動(dòng)紅外發(fā)射管, 通過(guò)STM32主CPU進(jìn)行和8K頻率進(jìn)行ADC 一致 的高級(jí)定時(shí)器設(shè)置, 并且進(jìn)行了過(guò)采樣來(lái)保證聲音的銀色,用12位高精度PWM脈寬周期來(lái)調(diào)理紅外發(fā)射電路,因?yàn)楦咻d波,因此我們無(wú)需多個(gè)發(fā)射管 串聯(lián)就可以將數(shù)據(jù)傳輸?shù)暮苓h(yuǎn)。對(duì)于數(shù)字信號(hào)的包絡(luò)波方式加載于模擬信號(hào)中, 不過(guò)

9、再此次項(xiàng)目中我們并沒(méi)有使用軟件做數(shù)字38k載波處理,我們選擇了使用硬件電路做數(shù)字載波,通過(guò)幅度的不同來(lái)區(qū)分與模擬信號(hào)。3)紅外接收紅外接收電路中我們使用了兩套電路,一套使用電容隔直流并放大音頻信號(hào)來(lái)采集到調(diào)制過(guò)的模擬信號(hào),我們并沒(méi)有使用傳統(tǒng)的運(yùn)放比較器去濾除加載的數(shù)字信號(hào),我們選擇了更加靈活的38k 一體接收芯片做為單獨(dú)的通道處理數(shù) 字信號(hào),模擬信號(hào)我們?cè)?ADC采集后進(jìn)行數(shù)字化降噪和分離出數(shù)字信號(hào),進(jìn) 實(shí)際測(cè)試, 此設(shè)計(jì)方案非常好的處理好模擬數(shù)字通道的發(fā)送和接收。對(duì)于中繼 我們還放大了數(shù)字信號(hào)為了更好的傳輸語(yǔ)音信號(hào)。4)后級(jí)功放電路及電源由于此次設(shè)計(jì)需要比較好的模擬量調(diào)理電路,所以我們沒(méi)有選

10、擇開關(guān)電源降低電源質(zhì)量, 減少紋波。 后級(jí)功放電路我們選擇了數(shù)字功放,更將簡(jiǎn)單處理功放的設(shè)計(jì),由于高集成度,所以更加方便的避免了萬(wàn)能板做電路對(duì)于電源 信號(hào)的處理難問(wèn)題,特別是數(shù)字模擬功率三部分三點(diǎn)接地的處理上更加容易了。4.方案測(cè)試i)測(cè)試聲音是否正常采集放大將采集到的信號(hào)經(jīng)過(guò)放大電路輸入到示波器上,觀察得到的波形。峰值可以 達(dá)到1V左右,達(dá)到預(yù)期的要求,說(shuō)明音頻采集放大電路沒(méi)有問(wèn)題。2)測(cè)試聲音信號(hào)經(jīng)過(guò)傳輸后的還原情況接收的聲音應(yīng)無(wú)明顯失真。當(dāng)發(fā)射端輸入語(yǔ)音信號(hào)改為800Hz單音信號(hào)時(shí),在8Q 電阻負(fù)載上,接收裝置的輸出電壓有效值為 0.7V。不改變電路狀態(tài),減小發(fā)射端輸 入信號(hào)的幅度至0V

11、,測(cè)量此時(shí)接收裝置輸出端噪聲電壓,讀數(shù)約為 80nVo3)測(cè)試溫度檢測(cè)是否正常啟動(dòng)系統(tǒng),發(fā)送端通過(guò)DS18B2采集到溫度后,經(jīng)系統(tǒng)傳輸后顯示在超大液 晶屏上。 用手輕輕捂住溫度傳感器,顯示的溫度有所增加,說(shuō)明溫度值在通過(guò) 系統(tǒng)實(shí)時(shí)傳輸。與此同時(shí),音頻信號(hào)傳輸正常,播放正常。4)測(cè)試中繼節(jié)點(diǎn)工作是否正常在系統(tǒng)中加入中繼節(jié)點(diǎn)電流為峰值 5個(gè)毫安左右,提供5Vt源。系統(tǒng)開啟后依 然可以正常工作。此時(shí)通過(guò)數(shù)字毫安表測(cè)得中繼節(jié)點(diǎn)中的電流為。 我們做了低功 耗待機(jī)的電流減少處理,通過(guò)模擬信號(hào)及數(shù)字信號(hào)的觸發(fā)方式來(lái)喚醒 CPU處于 恢復(fù)工作狀態(tài)。5.總結(jié)經(jīng)過(guò)不斷的測(cè)試,我們決定使用方案(三)。在方案實(shí)現(xiàn)的過(guò)

12、程中,我們遇 到了很多困難,但是我們都堅(jiān)持不到最后一刻絕不放棄的原則, 將問(wèn)題一個(gè)一個(gè) 解決。最終很好的完成了基本要求,基本完成了附加要求。我們的團(tuán)隊(duì)意識(shí)非常 好,每個(gè)人都努力把分到的工作認(rèn)真對(duì)待。在隊(duì)友出現(xiàn)小錯(cuò)誤的時(shí)候不埋怨不氣 餒,而是耐心的檢查并找出解決問(wèn)題的方案。在作品完成之后我們都很高興,也 在此次競(jìng)賽中吸取了很多寶貴經(jīng)驗(yàn),收獲了難得的友誼。附錄:附1 :元器件明細(xì)表1、 紅外發(fā)射管、接收管2、 駐極體、喇叭、耳機(jī)、彩色液晶屏3、 LM567、LM358、74HC00、STM32 , MCP6002 等4、 三極管 9012、90135、 電位器、電容、電阻、杜邦線若干。附2:儀器設(shè)

13、備清單1、邏輯分析儀2、數(shù)字毫安表3、失真度測(cè)量?jī)x4、數(shù)字示波器5、穩(wěn)壓電源附3:電路圖圖紙音頻采集放大電路溫度采集電路PG9TSMCJNE1TSMC_NCE3PG1O FSMC_XC E<1 FSMC_XE3PG11T SMCNCE4JPG12FSMC_NE4124 PG9125 PG10KS48: bitFSMC NE3WIRE DQ126 PGU127 PG:WTCrH38K載波發(fā)生電路紅外發(fā)射電路Pi 曰 hriew I 由 Twh Cwign <>11囪卜咐 Ubr«iyEp * E $Ee 七8 i303aLa苫砧 圖三* *。唄邕|白則¥|震

14、|*/|醫(yī)|*,1留;!1國(guó)由h C口丁|一*1到1 UulAllMRPl 1EHHK4-SR1LED<TEXT>1k+fWXT>01HHO.luF<TEXT>U1:A3中 MCP6OO2 <textJ-&He-l 上 l I,I Ti-l uRoJ iwvl 1TWO 國(guó)HD 貼紅外接收電路附4:部分軟件程序Main.cINT8U P500usReq = 0;INT8U SendState;INT8U DestUart = 0;pwm_t Mypwm;ppm_t Myppm;void P500us(void)static INT16U AnlogT

15、imes = 0;LedTask();if(Uart2Rb0)DMA_Cmd(DMA1_Channel6, DISABLE);DMA1_Channel6->CNDTR = 1;DMA_Cmd(DMA1_Channel6, ENABLE); if(Uart2Rb0 % 8 = (Uart2Rb0 >> 3) % 8) Send_Hex(Uart2Rb0);DestUart = Uart2Rb0;Uart2Rb0 = 0;switch(SendState)case Anlog:if(AnlogTimes+ >= 31995)AnlogTimes = 0;SendState

16、= Digtal;DacValueSet(1,ADC_CH1_ConvertedValue); break;case Digtal:if(DestUart)TIM_Cmd(TIM1, DISABLE);Send_Hex(DestUart);TIM_Cmd(TIM1, ENABLE); DestUart = 0;SendState = Anlog;break;case Idle:break;void PeriphCompent_init(void)SystemInit();1,2SysTick_Config(720000/320); / 初始化滴答定時(shí)器InitUartMonitor();初始化

17、串口pwm_init(&Mypwm); ppm_init(&Myppm);ADC1_Init();DAC_Configuration();LedInit();INT8U Temp =7;/* brief* param None* retval None* /int main(void)PeriphCompent_init();while (1)if (P500usReq) /輪詢時(shí)間信號(hào)狀態(tài)P500usReq = 0;P500us();* file PPM.C* author Lvhaian R&D Driver Software Team* version V1.0.

18、0* date 07/24/2012* brief 配置 PPM*clude "PPM.h"#include "stm32f10x_gpio.h"#include "stm32f10x_exti.h"#include "stm32f10x_tim.h"#include "define.h"/* addtogroup XFlyer_Driver* */* addtogroup PPM* */* defgroup PPM_Private_TypesDefinitions* */* */* defgr

19、oup PPM_Private_Defines* */* */* defgroup PPM_Private_Macros* */* */* defgroup PPM_Private_Variables* */#define MinDig 2038ppm_t *p_ppm = 0;/*< pointer to PPM area */* */* defgroup PPM_Private_FunctionPrototypes* */void ppm_timer_init(void);void PPM_GPIO_Configuration(void);void TIM_ResetCounter(

20、TIM_TypeDef* TIMx);void ppm_init(ppm_t *ppm);void PPM_NVIC_Configuration(void);int LimitPpmValue(int v);* */* defgroup PPM_Private_Functions* */* brief TIMER重新計(jì)數(shù)* param TIM_TypeDef* TIMx :選擇 TIMER* retval None*/void TIM_ResetCounter(TIM_TypeDef* TIMx)/* Check the parameters */assert_param(IS_TIM_LIS

21、T3_PERIPH(TIMx);/* Set the Capture Compare4 Register value */ TIMx->CNT = 0;* brief NVIC 初始化* param None* retval None*/ void PPM_NVIC_Configuration(void)NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC

22、_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/*brief PPM初始化param Noneretval None*/void ppm_init(ppm_t *ppm) p_ppm = ppm;PPM_NVIC_Configuration(); PPM_GPIO_Configuration(); ppm_timer_init();/*brief ppm_timer 的初始化param

23、Noneretval None*/void ppm_timer_init(void)/ TIM3輸出初始化TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_ICInitTypeDef TIM_ICInitStructure;通道輸入初始化結(jié)構(gòu)RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2,這里做部分REMAP CH3,CH4通道復(fù)位定時(shí)器TIM_DeInit(TIM2);開時(shí)鐘RCC_APB1Perip

24、hClockCmd(RCC_APB1Periph_TIM2, ENABLE);定時(shí)器ENABLE);TIM_TimeBaseStructure.TIM_Period = 0xFFFF;TIM_TimeBaseStructure.TIM_Prescaler = 2-1;不分頻了/APB1總線用于解8K16K因此TIM_TimeBaseStructure.TIM_ClockDivision =0x00;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBase

25、Structure);/選擇輸入上通道方向選擇每次TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;通道1 一一一 一TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;升沿捕獲TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;/TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;檢測(cè)到捕獲輸入就觸發(fā)一次捕獲TIM_ICInitStructure.TIM_

26、ICFilter = 0x0;TIM_ICInit(TIM2, &TIM_ICInitStructure);/* TIM enable counter */ TIM_Cmd(TIM2, ENABLE);/* Enable the CC1 Interrupt Request */ /* Enable the CC1 Interrupt Request */ TIM_ITConfig(TIM2, TIM_IT_CC4, ENABLE);/* brief 將PPM信號(hào)值PM定在-125125之間 * param int v :信號(hào)值* retval None* /int LimitPpmVa

27、lue(int v) if(v>PPM_MAX)return PPM_MAX;if(v<PPM_MIN)return PPM_MIN;return v;/* brief GOIO 設(shè)置* param None* retval None*/void PPM_GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ;GPIO_Init

28、Structure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 ;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOB, &GPIO

29、_InitStructure);/* brief TIMER2 中斷事件* param None* retval None */INT16U Flag1 = 0;INT16U Flag2 = 0;void TIM2_IRQHandler(void) TIM_ICInitTypeDef TIM_ICInitStructure;通道輸入初始化結(jié)構(gòu)if ( TIM_GetITStatus(TIM2 , TIM_IT_CC4) != RESET ) if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) / Rising 上升沿 TIM_ClearITPendingB

30、it(TIM2 , TIM_IT_CC4);TIM_Cmd(TIM2, DISABLE);TIM_ResetCounter(TIM2); / 復(fù)位定時(shí)器TIM_ICInitStructure.TIM_Channel=TIM_Channel_4;/選擇通道1TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Falling;/輸入上升沿捕獲TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;/ 通道方向選擇TIM_ICInitStructure.TIM_ICPrescaler

31、=TIM_ICPSC_DIV1;每次檢測(cè)到捕獲輸入就觸發(fā)一次捕獲TIM_ICInitStructure.TIM_ICFilter = 0x0;TIM_ICInit(TIM2, &TIM_ICInitStructure);/* TIM enable counter */ TIM_Cmd(TIM2, ENABLE);/* Enable the CC1 Interrupt Request */ TIM_ITCon巾g(TIM2, TIM_IT_CC4, ENABLE); else Flag1+;p_ppm->CH8 = TIM_GetCapture4(TIM2);if(P_PPm-&g

32、t;CH8 > MinDig - 300) else Flag2+;TIM_ClearITPendingBit(TIM2 , TIM_IT_CC4); TIM_Cmd(TIM2, DISABLE);TIM_ResetCounter(TIM2); / 復(fù)位定時(shí)器TIM_ICInitStructure.TIM_Channel=TIM_Channel_4;/選擇通道1TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;/輸入上升沿捕獲TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelect

33、ion_DirectTI;/ 通道方向選擇TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;每次檢測(cè)到捕獲輸入就觸發(fā)一次捕獲TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_ICInit(TIM2, &TIM_ICInitStructure);/* TIM enable counter */ TIM_Cmd(TIM2, ENABLE);/* Enable the CC1 Interrupt Request */TIM_ITConfig(TIM2, TIM_IT_CC4, ENABLE);/* fi

34、le PPM.C* author Lvhaian R&D Driver Software Team* version V1.0.0* date 07/24/2012* brief 配置 PPM* copy* 硬件版本:MiniStar V1.0* 硬件型號(hào):MiniStar V1.0* 硬件說(shuō)明:四軸控制主板 firmware.* 此版本軟件遵循Doxygen軟件編程規(guī)范,可直接生成說(shuō)明文檔.* Doxygen輸入編碼模式為GB2312,如果使用默認(rèn)將不能正確顯示中文* <h2><center>&copy; COPYRIGHT 2012 STEP Ele

35、ctronics</center></h2>* /* Includes*/#include "PPM.h"#include "stm32f10x_gpio.h"#include "stm32f10x_exti.h"#include "stm32f10x_tim.h"#include "define.h"/* addtogroup XFlyer_Driver* * /* addtogroup PPM* * /* defgroup PPM_Private_TypesDefin

36、itions* * /* */* defgroup PPM_Private_Defines* */* */* defgroup PPM_Private_Macros* */* * /* defgroup PPM_Private_Variables* * /*< pointer to PPM area */#define MinDig 2038ppm_t *p_ppm = 0;* */* defgroup PPM_Private_FunctionPrototypes* */void ppm_timer_init(void);void PPM_GPIO_Configuration(void)

37、;void TIM_ResetCounter(TIM_TypeDef* TIMx);void ppm_init(ppm_t *ppm);void PPM_NVIC_Configuration(void);int LimitPpmValue(int v);/* */* defgroup PPM_Private_Functions* * /* brief TIMER重新計(jì)數(shù)* param TIM_TypeDef* TIMx :選擇 TIMER* retval None*/void TIM_ResetCounter(TIM_TypeDef* TIMx)/* Check the parameters

38、*/assert_param(IS_TIM_LIST3_PERIPH(TIMx);/* Set the Capture Compare4 Register value */ TIMx->CNT = 0;/* brief NVIC 初始化* param None* retval None* /void PPM_NVIC_Configuration(void)NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelP

39、reemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* brief PPM 初始化* param None* retval None*/void ppm_init(ppm_t *ppm) p_ppm = ppm;PPM_NVIC_Configuration();PPM_GPIO_Configuration(); ppm_timer_init

40、();/* brief ppm_timer 的初始化* param None* retval None*/void ppm_timer_init(void)/ TIM3輸出初始化TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_ICInitTypeDef TIM_ICInitStructure;通道輸入初始化結(jié)構(gòu)RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2,這里做部分REMAP CH3,CH4通道 復(fù)

41、位定時(shí)器TIM_DeInit(TIM2); 開時(shí)鐘RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); 定時(shí)器TIM_TimeBaseStructure.TIM_Period = 0xFFFF;TIM_TimeBaseStructure.TIM_Prescaler = 2-1;APB1 總線 用于解 8K不分頻了TIM_TimeBaseStructure.TIM_ClockDivision =0x00;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBas

42、eInit(TIM2, &TIM_TimeBaseStructure);TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;通道1TIM ICInitStructure.TIM ICPolarity = TIM ICPolarity Rising;升沿捕獲ENABLE);16K因此/選擇輸入上/通道方向選擇TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;每次TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;檢測(cè)

43、到捕獲輸入就觸發(fā)一次捕獲TIM_ICInitStructure.TIM_ICFilter = 0x0;TIM_ICInit(TIM2, &TIM_ICInitStructure);/* TIM enable counter */TIM_Cmd(TIM2, ENABLE);/* Enable the CC1 Interrupt Request */* Enable the CC1 Interrupt Request */TIM_ITConfig(TIM2, TIM_IT_CC4, ENABLE);/*brief 將PPM信號(hào)值PM定在-125125之間param int v :信號(hào)值re

44、tval None*/ int LimitPpmValue(int v) if(v>PPM_MAX) return PPM_MAX; if(v<PPM_MIN) return PPM_MIN; return v;/*brief GOIO 設(shè)置param Noneretval None*/ void PPM_GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pi

45、n = GPIO_Pin_11 ;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 ;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);/* brief TIMER2 中斷事件* param None* retval None */INT16U Flagl = 0;INT16U Flag2 = 0;void TIM2_IRQHandler(void) TIM_ICInitTypeDef TIM_ICInitStructure;通道輸入初始化結(jié)構(gòu)if ( TIM_GetITStatus(TIM2 , T

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論