![]() |
發(fā)布時(shí)間: 2011-12-15 14:35
正文摘要:我在做一個(gè)表,我想用AD1和AD2同時(shí)測(cè)量2路電壓值,當(dāng)沒(méi)時(shí)能AD2時(shí),AD1測(cè)得的正弦波為正常波形,當(dāng)時(shí)能了AD2時(shí),兩路測(cè)得的同一信號(hào)正弦波形峰峰值偏大了,直接導(dǎo)致測(cè)得的有效值偏大了,這個(gè)會(huì)是什么原因呢 |
/******************************************************************************* * 函數(shù)名 : DMA_configuration 說(shuō)明 : DMA通道1初始化配置,用于ADC結(jié)果傳輸保存 *******************************************************************************/ void DMA_Configuration(void) { // DMA_ISR = 0x00000000; /*DMA中斷狀態(tài)寄存器,可通過(guò)設(shè)置IFCR對(duì)應(yīng)位清除 |||||||+---GIF1 =0:通道1沒(méi)產(chǎn)生TE、HT或TC事件全局中斷標(biāo)志 |||||||+---TCIF1=0:通道1沒(méi)產(chǎn)生傳輸完成中斷標(biāo)志 |||||||+---HTIF1=0:通道1沒(méi)產(chǎn)生半傳輸中斷標(biāo)志 |||||||+---TEIF1=0:通道1沒(méi)產(chǎn)生傳輸錯(cuò)誤中斷標(biāo)志 ||||||+----通道2中斷標(biāo)志組 ||||++-----通道3中斷標(biāo)志組 ||||++-----通道4中斷標(biāo)志組 |||+-------通道5中斷標(biāo)志組 ||+--------通道6中斷標(biāo)志組 ||+--------通道7中斷標(biāo)志組 +----------保留*/ // DMA_IFCR= 0x00000000; /*DMA中斷標(biāo)志清除寄存器,可由軟件設(shè)置或清除 |||||||+---CGIF1 =1:清除通道1的TE、HT或TC事件全局中斷標(biāo)志 |||||||+---CTCIF1=1:清除通道1的傳輸完成中斷標(biāo)志 |||||||+---CHTIF1=1:清除通道1的半傳輸中斷標(biāo)志 |||||||+---CTEIF1=1:清除通道1的傳輸錯(cuò)誤中斷標(biāo)志 ||||||+----清除通道2中斷標(biāo)志組 ||||++-----清除通道3中斷標(biāo)志組 ||||++-----清除通道4中斷標(biāo)志組 |||+-------清除通道5中斷標(biāo)志組 ||+--------清除通道6中斷標(biāo)志組 ||+--------清除通道7中斷標(biāo)志組 +----------保留*/ DMA_CCR1= 0x00003A80;/*0011 1010 1000 0000 |||| |||| |||| |||| |||+--EN = 0:通道關(guān)閉,1:通道開(kāi)啟 |||| |||| |||| |||| ||+---TCIE=0:不允許傳輸完成中斷 |||| |||| |||| |||| |+----HTIE=0:禁止半傳輸中斷 |||| |||| |||| |||| +-----TEIE=0:禁止傳輸錯(cuò)誤中斷 |||| |||| |||| |||+-------DIR =0:數(shù)據(jù)傳輸方向(從外設(shè)讀) |||| |||| |||| ||+--------CIRC=0:不執(zhí)行循環(huán)操作 |||| |||| |||| |+---------PINC=0:不執(zhí)行外設(shè)地址增量模式 |||| |||| |||| +----------MINC=1:執(zhí)行存儲(chǔ)器地址增量模式 |||| |||| ||++------------PSIZE=10:32位外設(shè)數(shù)據(jù)寬度 |||| |||| ++--------------MSIZE=10:32位存儲(chǔ)器數(shù)據(jù)寬度 |||| ||++-----------------PL=11:最高通道優(yōu)先級(jí) |||| |+-------------------MEM2MEM=0:非存儲(chǔ)器到存儲(chǔ)器模式 ++++-------+--------------------保留*/ DMA_CNDTR1=40;//0x00001000; //DMA通道1傳輸數(shù)量寄存器(4096*2 Bytes) DMA_CPAR1 = (uint32_t)ADC1_DR_ADDR; //DMA通道1的外設(shè)數(shù)據(jù)寄存器基地址 DMA_CMAR1 =(uint32_t)&(Scan_Buffer[0]);//DMA通道1的源或目標(biāo)的存儲(chǔ)器地址 // DMA_CCR1 |= 0x00000001; // EN = 1:DMA通道1開(kāi)啟 } /******************************************************************************* * 函數(shù)名 : ADC_configuration 說(shuō)明 : ADC初始化,采樣完成后自動(dòng)DMA到緩沖區(qū) *******************************************************************************/ void ADC_Configuration(void) { ADC2_CR1 =0x00000000; ADC1_CR1 =0x00060000;/* ||||||++---AWDCH[4:0]:模擬看門(mén)狗通道選擇位 ||||||+----=000:不允許EOC、AWD、JEOC中斷 |||||+-----Nib8_SCAN=1:使用掃描模式 ||||++-----保持復(fù)位值 |||+-------DUALMOD=6:規(guī)則同步模式 ||+--------規(guī)則通道和注入通道禁用模擬看門(mén)狗 ++---------保留*/ ADC2_CR2 =0x001E0000; ADC1_CR2 =0x00100100;/* |||||||+---ADON=0:關(guān)閉ADC轉(zhuǎn)換/校準(zhǔn),=1:開(kāi)啟ADC并啟動(dòng)轉(zhuǎn)換 |||||||+---CONT=0:1:連續(xù)轉(zhuǎn)換模式 |||||||+---CAL=0,=1:A/D校開(kāi)始準(zhǔn),校準(zhǔn)后該位將被硬件清除 |||||||+---RSTCAL=0,=1:初始化校準(zhǔn)寄存器,校準(zhǔn)后該位將被硬件清除 ||||||+----保留 |||||+-----ALIGN=0 & DMA=1:數(shù)據(jù)右對(duì)齊和使用DMA模式 ||||+------注入通道設(shè)置,這里未使用,設(shè)置為默認(rèn)值 |||+-------=0000:規(guī)則通道使用定時(shí)器1的CC1事件啟動(dòng)轉(zhuǎn)換,=1110:SWSTART ||+--------=1:使用外部觸發(fā)信號(hào)啟動(dòng)轉(zhuǎn)換 ++---------保留*/ ADC2_SQR1=0x00000000; ADC1_SQR1=0x00000000;/*ADC規(guī)則序列寄存器 1 |||||||+---SQ13[4:0]規(guī)則序列中的第13個(gè)轉(zhuǎn)換通道編號(hào)(0-17)。 ||||||+----SQ14[4:0]規(guī)則序列中的第14個(gè)轉(zhuǎn)換通道編號(hào)(0-17)。 ||||+------SQ15[4:0]規(guī)則序列中的第15個(gè)轉(zhuǎn)換通道編號(hào)(0-17)。 |||+-------SQ16[4:0]規(guī)則序列中的第16個(gè)轉(zhuǎn)換通道編號(hào)(0-17)。 ||+--------L[3:0]:規(guī)則轉(zhuǎn)換序列通道長(zhǎng)度:00001個(gè)轉(zhuǎn)換)...1111(16個(gè)轉(zhuǎn)換) ++---------保留*/ ADC2_SQR3 =0x00000001; //---------------------- ADC1_SQR3 =0x00000000;/*ADC規(guī)則序列寄存器 3 ||||||++---SQ1=00000:轉(zhuǎn)換序列中的第1個(gè)轉(zhuǎn)換通道的編號(hào)(0) +++++++----SQ2-6=00000:轉(zhuǎn)換序列中第2-6個(gè)轉(zhuǎn)換通道編號(hào)(5Bits*5) +----------保留*/ ADC2_SMPR2=0x00000001; ADC1_SMPR2=0x00000001;/*ADC采樣時(shí)間寄存器 1 |||||||+---SMP01=000(3Bits):使通道00的采樣時(shí)間 1.5T ||||||+----SMP02=000(3Bits):使通道01的采樣時(shí)間 1.5T |+++++++---SMP11-17=000(3Bits*7):通道11-17的采樣時(shí)間 1.5T ++---------保留*/ ADC1_CR2 |=0x00000001; ADC2_CR2 |=0x00000001; //ADON=1:開(kāi)啟ADC1、ADC2 ADC1_CR2 |=0x00000008; while(ADC1_CR2 & 0x00000008);//初始化ADC1校準(zhǔn)寄存器 ADC2_CR2 |=0x00000008; while(ADC2_CR2 & 0x00000008);//初始化ADC2校準(zhǔn)寄存器 ADC1_CR2 |=0x00000004; while(ADC1_CR2 & 0x00000004);//ADC1校準(zhǔn) ADC2_CR2 |=0x00000004; while(ADC2_CR2 & 0x00000004);//ADC2校準(zhǔn) } /******************************************************************************* * 函數(shù)名 : Timer_configuration 說(shuō)明 : 系統(tǒng)定時(shí)器初始化配置 *******************************************************************************/ void Timer_Configuration(void) { //---------------TIM1用于定時(shí)觸發(fā)ADC采樣------------------- // Set_Base(Item_Index[2]); TIM1_PSC = 4; TIM1_ARR = 7199; TIM1_CCR1=(7199+1)/2; TIM1_CR1 = 0x0094;/*0000 0000 1001 0100 |||| |||| |||| |||+---CEN=0,禁止計(jì)數(shù)器 |||| |||| |||| ||+----UDIS=0,允許UEV更新 |||| |||| |||| |+-----URS=1:只有計(jì)數(shù)器溢出產(chǎn)生中斷或DMA請(qǐng)求 |||| |||| |||| +------OPM=0:在發(fā)生更新事件時(shí),計(jì)數(shù)器不停止 |||| |||| |||+--------DIR=1,計(jì)數(shù)器向下計(jì)數(shù) |||| |||| |++---------CMS=00,選擇邊沿對(duì)齊模式 |||| |||| +-----------ARPE=1,TIM1_ARR寄存器被裝入緩沖器 |||| ||++-------------CKD=00,CK_INT分頻比為1 ++++-++---------------保留*/ TIM1_RCR = 0x0000;/*0000 0000 0000 0001 |||| |||| ++++ ++++---在邊沿對(duì)齊模式下,PWM周期的數(shù)目+1 ++++-++++-------------保留*/ TIM1_CCER =0x0001;/*0000 0000 0000 0001 |||| |||| |||| |||+---CC1E=1,OC1信號(hào)輸出到對(duì)應(yīng)的輸出引腳 |||| |||| |||| ||+----CC1P=0,OC1高電平有效 |||| |||| |||| |+-----CC1NE=0,OC1N禁止輸出 |||| |||| |||| +------CC1NP=0,OC1N高電平有效 ++++-++++-++++--------CC2、CC3、CC4配置為復(fù)位值*/ TIM1_CCMR1=0x0078;/*0000 0000 0111 1100 |||| |||| |||| ||++---CC1S=00,CC1通道被配置為輸出 |||| |||| |||| |+-----OC1FE=1,允輸出比較1 快速使能? |||| |||| |||| +------OC1PE=1,輸出比較1預(yù)裝載使能 |||| |||| |+++--------0C1M=111,PWM模式2 |||| |||| +-----------OC1CE=0,OC1REF 不受ETRF輸入的影響 ++++-++++-------------CC2通道配置為復(fù)位值*/ TIM1_BDTR =0x8000;/*1000 0000 0000 0000 |+++-++++-++++-++++---其它位保持不變 +---------------------MOE=0,主輸出使能*/ TIM1_DIER =0x4200;/*0100 0011 0000 0000 DMA和中斷使能寄存器 | || +----CC1IE=0:不允許捕獲/比較1中斷 | |+-------------UDE=1:允許更新的DMA請(qǐng)求 | +--------------CC1DE=1:允許捕獲/比較1的DMA請(qǐng)求 +--------------------TDE=1:允許觸發(fā)DMA請(qǐng)求*/ TIM1_CR1 |=0x0001;//CEN=1,使能TIMER1計(jì)數(shù)器 } |