日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 第一個(gè)為非DMA模式的多通道采集void ADC_DMA_Config(void){ ADC_InitTypeDef ADC_InitStructure;RCC_HSICmd(ENABLE);while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); RCC_APB2PeriphClockCmd(RCC

第一個(gè)為非DMA模式的多通道采集

void ADC_DMA_Config(void)

{
ADC_InitTypeDef ADC_InitStructure;

RCC_HSICmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
ADC_DeInit(ADC1);
ADC_StructInit(&ADC_InitStructure);
ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b;
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //禁止掃描模式
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //連續(xù)轉(zhuǎn)換
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfConversion = 1;

ADC_Init(ADC1,&ADC_InitStructure);

/*沒(méi)有采用中斷和DMA方式,這樣采樣得到的數(shù)據(jù)很容易丟失,因?yàn)橐?guī)則通道公用一個(gè)數(shù)據(jù)寄存器,因此需要在一個(gè)轉(zhuǎn)換周期內(nèi)讀出數(shù)據(jù),緊接著讀取下一個(gè)通道的數(shù)據(jù)。*/

ADC_DelaySelectionConfig(ADC1, ADC_DelayLength_Freeze);//推遲到轉(zhuǎn)換后的數(shù)據(jù)被讀取

ADC_PowerDownCmd(ADC1, ADC_PowerDown_Idle_Delay, ENABLE);//在延遲和空閑階段ADC是關(guān)閉的


/* Enable ADC1 */
ADC_Cmd(ADC1, ENABLE);
/* Wait until the ADC1 is ready */
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_ADONS) == RESET)
{
}

}

uint16_t GetADCValue(uint32_t CH_Data )//獲取通道數(shù)據(jù)
{
unsigned char i;
for(i=0; i<3; i++)
{
AD_Value[i] = 0xFF;
switch (i)
{
case 0: ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 1, ADC_SampleTime_9Cycles); break;
case 1: ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 1, ADC_SampleTime_9Cycles); break;
default: ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 1, ADC_SampleTime_9Cycles); break;
}
ADC_Cmd(ADC1, ENABLE);
// ADC_TempSensorVrefintCmd(ENABLE);
ADC_SoftwareStartConv(ADC1);
while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET)
AD_Value[i] = ADC_GetConversionValue(ADC1);
ADC_ClearFlag(ADC1, ADC_FLAG_EOC);
ADC_SoftwareStartConv(ADC1);
ADC_Cmd(ADC1, DISABLE);
}
return AD_Value[CH_Data];
}


第二個(gè)為dma多通道采樣與注入采樣

__IO uint16_t ADC_ConvertedValue[2];//內(nèi)存緩存adc通道數(shù)據(jù)

void ADC1_Mode_Config(void)
{
DMA_InitTypeDef DMA_InitStructure;
ADC_InitTypeDef ADC_InitStructure;

/* DMA channel1 configuration */
DMA_DeInit(DMA1_Channel1);

DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;//ADC地址
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue;//內(nèi)存地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize = 2;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外設(shè)地址固定
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //內(nèi)存地址后移
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//半字
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
DMA_Init(DMA1_Channel1, &DMA_InitStructure);

/* Enable DMA channel1 */
DMA_Cmd(DMA1_Channel1, ENABLE);

/* ADC1 configuration */
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//獨(dú)立ADC模式
ADC_InitStructure.ADC_ScanConvMode = ENABLE ;//開(kāi)掃描模式
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//連續(xù)轉(zhuǎn)換
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//軟件觸發(fā)
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 2;//轉(zhuǎn)換通道數(shù)目
ADC_Init(ADC1, &ADC_InitStructure);


ADC_TempSensorVrefintCmd(ENABLE);
ADC_RegularChannelConfig(ADC1, ADC_Channel_TempSensor, 1, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, ADC_SampleTime_55Cycles5);


ADC_InjectedSequencerLengthConfig(ADC1, 1); //注入通道與其長(zhǎng)度
ADC_InjectedChannelConfig(ADC1,ADC_Channel_11,1,ADC_SampleTime_7Cycles5);
//ADC_SetInjectedOffset(ADC1, ADC_InjectedChannel_1, 1000);//設(shè)置偏置電壓值

ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_None);

ADC_ExternalTrigConvCmd(ADC1, DISABLE); //禁止外部觸發(fā)
ADC_ExternalTrigInjectedConvCmd(ADC1, DISABLE);
//ADC_AutoInjectedConvCmd(ADC1,ENABLE); //規(guī)則通道自動(dòng)轉(zhuǎn)換到注入通道
/* Enable ADC1 DMA */
ADC_DMACmd(ADC1, ENABLE);
/* Enable ADC1 */
ADC_Cmd(ADC1, ENABLE);

ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}

由下面代碼可以得到注入通道ad值

ADC_SoftwareStartInjectedConvCmd(ADC1, ENABLE);//啟動(dòng)adc注入通道
while(RESET ==ADC_GetFlagStatus(ADC1,ADC_FLAG_JEOC));//等待轉(zhuǎn)換完成
value=ADC_GetInjectedConversionValue(ADC1,ADC_InjectedChannel_1);//得到第一組的值

終于把ADC的非DMA的多通道采集完成,也是參考的網(wǎng)上的例子,學(xué)會(huì)了很多。其中要根據(jù)自己需求注意ADC是掃描模式,ADC是單次轉(zhuǎn)換還是連續(xù)轉(zhuǎn)換,還有ADC的模式也要注意。覺(jué)得ADC很博大精深,自己還得好好研究一番。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

時(shí)下普遍使用的P0、P2結(jié)構(gòu)比較簡(jiǎn)單,并且有助于控制成本,整體效果也非常出色,尤其P2是混動(dòng)汽車運(yùn)用最廣泛的一種模式。據(jù)了解,TI此次發(fā)布的這個(gè)方案適用于48V P0和P2電機(jī),其高度集成的特性有助于設(shè)計(jì)工程師構(gòu)建小型化...

關(guān)鍵字: 汽車電氣化 模式 P2

可變電阻器按制作材料可分為膜式可變電阻器和線繞式可變電阻器;膜式可變電阻器膜式可變電阻器采用旋轉(zhuǎn)式調(diào)節(jié)方式,一般用在小信號(hào)電路中,信號(hào)電壓等。膜式可變電阻器通常由電阻體(合成碳膜)、活動(dòng)觸片(活動(dòng)金屬簧片或碳質(zhì)觸點(diǎn))、調(diào)...

關(guān)鍵字: 可變電阻器 模式 非密封式

系統(tǒng)設(shè)計(jì)師通常側(cè)重于為應(yīng)用選擇最合適的數(shù)據(jù)轉(zhuǎn)換器,在向數(shù)據(jù)轉(zhuǎn)換器提供輸入的時(shí)鐘發(fā)生器件的選擇上往往少有考慮。然而,如果不慎重考慮時(shí)鐘發(fā)生器、相位噪聲和抖動(dòng)性能,數(shù)據(jù)轉(zhuǎn)換器、動(dòng)態(tài)范圍和線性度性能可能受到嚴(yán)重的影響。

關(guān)鍵字: 時(shí)鐘發(fā)生器 adc

專注于引入新品并提供海量庫(kù)存的電子元器件分銷商貿(mào)澤電子 (Mouser Electronics) 即日起開(kāi)始備貨TI TLV915x運(yùn)算放大器和ADS7128 12位模數(shù)轉(zhuǎn)換器 (ADC)。

關(guān)鍵字: 貿(mào)澤 adc 模數(shù)轉(zhuǎn)換器

自然界產(chǎn)生的信號(hào),都是模擬信號(hào),比如我們說(shuō)話的聲音,看到的景色,感受到的溫度、濕度、壓力、流速、光、電、風(fēng)及個(gè)人的呼吸、血壓、體溫、心跳、體重、血糖,體脂等等。這些模擬信號(hào)都得最終放在電腦,手機(jī)等數(shù)字領(lǐng)域進(jìn)行處理,存儲(chǔ)或...

關(guān)鍵字: adc 模擬信號(hào)

為增進(jìn)大家對(duì)ADC的認(rèn)識(shí)和了解,本文將基于兩方面對(duì)ADC予以介紹:1.什么是并行ADC,并行ADC的基本原理是什么?2.流水線ADC與其它ADC有何區(qū)別。

關(guān)鍵字: adc 指數(shù) 流水線adc

ADC是電子電路中常用器件,大家對(duì)于ADC也較為熟悉。為增進(jìn)大家對(duì)ADC的了解,本文將對(duì)高速ADC以及流水線ADC結(jié)構(gòu)予以介紹。

關(guān)鍵字: adc 指數(shù) 流水線adc

ADC也即數(shù)模轉(zhuǎn)換器,在現(xiàn)實(shí)中,ADC具備重要作用。對(duì)于ADC,電子相關(guān)專業(yè)的朋友想必相當(dāng)熟悉。為增進(jìn)大家對(duì)ADC的認(rèn)識(shí),本文將對(duì)管道ADC以及其原理予以介紹。

關(guān)鍵字: adc 指數(shù) 管道adc

設(shè)計(jì)人員有各種模數(shù)轉(zhuǎn)換器(ADC)可以選擇,數(shù)字?jǐn)?shù)據(jù)輸出類型是選擇過(guò)程中需要考慮的一項(xiàng)重要參數(shù)。

關(guān)鍵字: 高速轉(zhuǎn)換器 數(shù)字?jǐn)?shù)據(jù) adc

ADC包括三個(gè)基本功能:抽樣、量化和編碼。如何實(shí)現(xiàn)這三個(gè)功能,就決定了ADC的形式和性能。

關(guān)鍵字: 模數(shù)轉(zhuǎn)換 adc
關(guān)閉