0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CKS32F107xx系列MCU的雙重ADC模式

中科芯MCU ? 來源:中科芯MCU ? 2024-07-22 09:19 ? 次閱讀

雙重ADC模式

獨(dú)立模式的ADC采集需要在一個(gè)通道采集并且轉(zhuǎn)換完成后才會(huì)進(jìn)行下一個(gè)通道的采集。而雙重ADC的機(jī)制就是使用兩個(gè)ADC同時(shí)采樣一個(gè)或者多個(gè)通道。雙重ADC模式較獨(dú)立模式一個(gè)最大的優(yōu)勢就是提高了采樣率,彌補(bǔ)了單個(gè)ADC 采樣不夠快的缺點(diǎn)。在有2個(gè)或以上ADC模塊的產(chǎn)品中,可以使用雙ADC模式。

在使用雙ADC模式時(shí),當(dāng)轉(zhuǎn)換配置成由外部事件觸發(fā)時(shí),用戶必須將其設(shè)置成僅觸發(fā)主ADC,從ADC設(shè)置成軟件觸發(fā),這樣可以防止意外的觸發(fā)從轉(zhuǎn)換。但是,主和從ADC的外部觸發(fā)必須同時(shí)被激活。同時(shí),在雙ADC模式里,為了在主數(shù)據(jù)寄存器上讀取從轉(zhuǎn)換數(shù)據(jù),

即使不使用DMA傳輸規(guī)則通道數(shù)據(jù),也必須使能DMA位。

啟用雙ADC模式的時(shí)候,通過配置ADC_CR1寄存器的DUALMOD[3:0]位,可以有幾種不同的模式,具體見如下表格:

bbccc8b8-47c7-11ef-b8af-92fbcf53809c.png

這里我們選取同步規(guī)則模式來作為實(shí)驗(yàn)講解。同步規(guī)則模式是ADC1和 ADC2 同時(shí)轉(zhuǎn)換一個(gè)規(guī)則通道組,ADC1是主,ADC2是從,ADC1轉(zhuǎn)換的結(jié)果放在ADC1_DR 的低16位,ADC2轉(zhuǎn)換的結(jié)果放在ADC1_DR的高十六位。并且必須開啟DMA功能。外部觸發(fā)來自ADC1的規(guī)則組多路開關(guān)(由ADC1_CR2寄存器的EXTSEL[2:0]選擇),它同時(shí)給ADC2提供同步觸發(fā)。在同步規(guī)則模式中,必須轉(zhuǎn)換具有相同時(shí)間長度的序列,或保證觸發(fā)的間隔比2個(gè)序列中較長的序列長,否則當(dāng)較長序列的轉(zhuǎn)換還未完成時(shí),具有較短序列的ADC轉(zhuǎn)換可能會(huì)被重啟。

為了簡單起見,ADC1 我們選擇軟件觸發(fā),ADC2必須選擇外部觸發(fā),這個(gè)外部觸發(fā)來自于ADC1的規(guī)則組多路開關(guān)。例程中我們選取ADC1和ADC2各采集一個(gè)通道。

配置雙重ADC規(guī)則同步模式代碼如下:

/* ------------------DMA模式配置---------------- */

// 配置 DMA 初始化結(jié)構(gòu)體

DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)(&( ADCx_1->DR ));

DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADC_ConvertedValue;

DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;

DMA_InitStructure.DMA_BufferSize = 1;

DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;

DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;

DMA_InitStructure.DMA_PeripheralDataSize =

DMA_PeripheralDataSize_Word;

DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;

DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;

DMA_InitStructure.DMA_Priority = DMA_Priority_High;

DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;

DMA_Init(ADC_DMA_CHANNEL, &DMA_InitStructure);

/* ----------------ADCx_1 模式配置--------------------- */

ADC_InitStructure.ADC_Mode = ADC_Mode_RegSimult;

ADC_InitStructure.ADC_ScanConvMode = ENABLE ;

ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel = 1;

ADC_Init(ADCx_1, &ADC_InitStructure);

RCC_ADCCLKConfig(RCC_PCLK2_Div8);

ADC_RegularChannelConfig(ADCx_1, ADCx_1_CHANNEL, 1,

ADC_SampleTime_239Cycles5);

ADC_DMACmd(ADCx_1, ENABLE);

/* ----------------ADCx_2 模式配置--------------------- */

ADC_InitStructure.ADC_Mode = ADC_Mode_RegSimult;

ADC_InitStructure.ADC_ScanConvMode = ENABLE ;

ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;

ADC_InitStructure.ADC_ExternalTrigConv =

ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel = NOFCHANEL;

ADC_Init(ADCx_2, &ADC_InitStructure);

RCC_ADCCLKConfig(RCC_PCLK2_Div8);

ADC_RegularChannelConfig(ADCx_2, ADCx_2_CHANNEL, 1,ADC_SampleTime_239Cycles5);

ADC_ExternalTrigConvCmd(ADC2, ENABLE);

雙重ADC規(guī)則模式和獨(dú)立模式多通道的配置基本一樣,只是有幾點(diǎn)需要注意:

DMA緩沖區(qū)數(shù)據(jù)的大小為1,數(shù)組存放的數(shù)據(jù)類型為32位的;ADC工作模式要設(shè)置為同步規(guī)則模式;兩個(gè)ADC的通道的采樣時(shí)間需要一致;ADC1設(shè)置為軟件觸發(fā);ADC2 設(shè)置為外部觸發(fā)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120348
  • adc
    adc
    +關(guān)注

    關(guān)注

    98

    文章

    6498

    瀏覽量

    544629
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    561

    瀏覽量

    100583

原文標(biāo)題:MCU微課堂|CKS32F107xx ADC(三)

文章出處:【微信號:中科芯MCU,微信公眾號:中科芯MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    MCU微課堂|CKS32F4xx系列產(chǎn)品時(shí)鐘配置

    作為MCU運(yùn)行的基礎(chǔ),時(shí)鐘是單片機(jī)各個(gè)模塊工作時(shí)序的最小時(shí)間單位,推動(dòng)單片機(jī)的各指令執(zhí)行,是MCU選型的一個(gè)重要指標(biāo)。CKS32F4xx系列產(chǎn)品具有眾多的外設(shè),但并非所有的外設(shè)均需要系
    發(fā)表于 12-12 10:17 ?843次閱讀

    CKS32F4xx系列MCU的低功耗模式之睡眠模式

    本課講為大家講解CKS32F4xx系列產(chǎn)品的低功耗模式之睡眠(Sleep)模式。MCU為滿足某些應(yīng)用場景:如小型化低容量設(shè)備,長期監(jiān)測設(shè)備等
    發(fā)表于 06-26 10:02 ?650次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的低功耗<b class='flag-5'>模式</b>之睡眠<b class='flag-5'>模式</b>

    CKS32F4xx系列RNG功能設(shè)置

    ? MCU 微課堂 CKS32F4xx 系 列RNG功能 隨機(jī)數(shù)發(fā)生器簡介 ? ? CKS32F4xx系列自帶了硬件隨機(jī)數(shù)發(fā)生器(RNG),RNG處理器是一個(gè)以連續(xù)模擬噪聲為基礎(chǔ)的隨機(jī)
    的頭像 發(fā)表于 09-08 10:01 ?609次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>RNG功能設(shè)置

    CKS32F4xx系列DAC功能

    CKS32F4xx系列DAC功能
    的頭像 發(fā)表于 11-06 16:56 ?853次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DAC功能

    CKS32F4xx系列ADC多通道DMA電壓采集

    CKS32F4xx系列ADC多通道DMA電壓采集
    的頭像 發(fā)表于 11-06 16:53 ?1103次閱讀

    CKS32F4xx系列ADC單通道電壓采集

    CKS32F4xx系列ADC單通道電壓采集
    的頭像 發(fā)表于 11-06 16:54 ?989次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b><b class='flag-5'>ADC</b>單通道電壓采集

    CKS32F4xx系列低功耗模式STANDBY模式

    CKS32F4xx系列低功耗模式STANDBY模式
    的頭像 發(fā)表于 11-06 16:57 ?480次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗<b class='flag-5'>模式</b>STANDBY<b class='flag-5'>模式</b>

    CKS32F4xx系列低功耗模式SLEEP模式

    CKS32F4xx系列低功耗模式SLEEP模式
    的頭像 發(fā)表于 11-06 16:59 ?682次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗<b class='flag-5'>模式</b>SLEEP<b class='flag-5'>模式</b>

    CKS32F4xx系列低功耗模式STOP模式

    CKS32F4xx系列低功耗模式STOP模式
    的頭像 發(fā)表于 11-06 17:08 ?627次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗<b class='flag-5'>模式</b>STOP<b class='flag-5'>模式</b>

    MCU微課堂 | CKS32F4xx系列產(chǎn)品SPI通信

    MCU微課堂 | CKS32F4xx系列產(chǎn)品SPI通信
    的頭像 發(fā)表于 10-24 17:12 ?708次閱讀
    <b class='flag-5'>MCU</b>微課堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品SPI通信

    MCU微課堂 | CKS32F4xx系列產(chǎn)品GPIO口配置

    MCU微課堂 | CKS32F4xx系列產(chǎn)品GPIO口配置
    的頭像 發(fā)表于 10-24 15:14 ?785次閱讀
    <b class='flag-5'>MCU</b>微課堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品GPIO口配置

    CKS32F107xx系列時(shí)鐘系統(tǒng)具體配置方法講解

    上一章節(jié)對CKS32F107xx系列時(shí)鐘做了整體介紹,本章節(jié)以使用HSI內(nèi)部高速時(shí)鐘為例對時(shí)鐘具體配置方法進(jìn)行講解。
    的頭像 發(fā)表于 05-28 10:05 ?602次閱讀
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>時(shí)鐘系統(tǒng)具體配置方法講解

    CKS32F107xx系列MCUADC介紹

    CKS32F107xx系列產(chǎn)品提供2個(gè)12位的模擬/數(shù)字轉(zhuǎn)換器(ADC),每個(gè)ADC共用多達(dá)16個(gè)外部通道,各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷
    的頭像 發(fā)表于 06-22 11:04 ?708次閱讀

    CKS32F107xx系列MCU的GPIO內(nèi)部硬件結(jié)構(gòu)和工作模式

    16個(gè)引腳,如型號為CKS2F107VET6型號的芯片有GPIOA、GPIOB、GPIOC至GPIOE共5組GPIO,芯片一共100個(gè)引腳,其中GPIO就占了一大部分,所有的GPIO引腳都有基本的輸入輸出功能。
    的頭像 發(fā)表于 07-22 09:23 ?701次閱讀
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的GPIO內(nèi)部硬件結(jié)構(gòu)和工作<b class='flag-5'>模式</b>

    詳解CKS32F107xx系列的定時(shí)器同步功能

    CKS32F107xx系列部分定時(shí)器在內(nèi)部是相連的,可用于定時(shí)器同步或鏈接,方便用戶配置不同的同步模式,以便在電機(jī)控制、數(shù)據(jù)采集和PWM信號生成等應(yīng)用中,實(shí)現(xiàn)復(fù)雜的時(shí)間序列和多通道的同步操作。本節(jié)課
    的頭像 發(fā)表于 11-26 17:51 ?369次閱讀
    詳解<b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>的定時(shí)器同步功能