精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CKS32F107xx系列MCU中ADC介紹

中科芯MCU ? 來源:中科芯MCU ? 2024-06-22 11:04 ? 次閱讀

CKS32F107xx系列產品提供2個12位的模擬/數字轉換器(ADC),每個ADC共用多達16個外部通道,各通道的A/D轉換可以單次、連續、掃描或間斷模式執行。ADC的結果可以左對齊或右對齊方式存儲在16位數據寄存器中。

A/D轉換器的供電和參考電壓

為了提高轉換的精確度,ADC使用一個獨立的電源供電,其電源引腳為VDDA和VSSA,從而過濾和屏蔽來自印刷電路板上的毛刺干擾。在進行硬件設計的時候,VDDA和VSSA必須分別連接到VDD和VSS。對于100腳封裝的,為了確保輸入為低壓時獲得更好精度,用戶可以連接一個獨立的外部參考電壓ADC到VREF+和VREF-腳上,其中,VREF-引腳必須連接到VSSA,而VREF+的電壓范圍為2.4V~VDDA。對于64引腳封裝的,沒有VREF+和VREF-引腳,他們在芯片內部與ADC的電源(VDDA)和地(VSSA)相聯。

ADC轉換時間

ADC輸入時鐘ADC_CLK由PCLK2 經過分頻產生,最大是14M,分頻因子由RCC時鐘配置寄存器RCC_CFGR的位15:14 ADCPRE[1:0]設置,可以是2/4/6/8分頻,注意這里沒有1分頻。一般我們設置PCLK2=HCLK=72M。ADC使用若干個ADC_CLK周期對輸入電壓采樣,采樣周期數目可以通過ADC_SMPR1和 ADC_SMPR2寄存器中的SMP[2:0]位更改。每個通道可以分別用不同的時間采樣。總轉換時間如下計算:TCONV=采樣時間+12.5個周期。例如當ADCCLK=14MHz,采樣時間為1.5周期,則總的轉換時間TCONV=1.5+12.5=14周期=1us。

ADC數據寄存器

ADC轉換完成后的數據輸出寄存器。根據轉換組的不同,規則組的完成轉換的數據輸出到ADC_DR寄存器,注入組的完成轉換的數據輸出到ADC_JDRx寄存器。假如是使用雙重模式,規則組的數據也是存放在ADC_DR寄存器。ADC規則組數據寄存器ADC_DR是一個32位的寄存器,獨立模式時只使用到該寄存器低16位保存ADC1/2的規則轉換數據。在雙ADC模式下,高16位用于保存ADC2轉換的數據,低16位用于保存ADC1轉換的數據。因為ADC的精度是12位的,ADC_DR寄存器無論高16位還是低16位,存放數據的位寬都是16 位的,所以允許選擇數據對齊方式。由ADC_CR2寄存器的ALIGN位設置數據對齊方式,可選擇:右對齊或者左對齊。如果使用多通道轉換,那么這些通道的數據 也會存放在ADC_DR里面,按照規則組的順序,上一個通道轉換的數據,會被下一個通道轉換的數據覆蓋掉,所以當通道轉換完成后要及時把數據取走。比較常用的方法是使用DMA模式。當規則組的通道轉換結束時,就會產生DMA請求,這樣就可以及時把轉換的數據搬運到用戶指定的目的地址存放。注意:只有ADC1可以產生DAM請求,而由ADC2轉換的數據可以通過雙ADC模式,利用ADC1的 DMA功能傳輸。

ADC中斷

ADC中斷可分為三種:規則組轉換結束中斷、注入組轉換結束中斷、設置了模擬看門狗狀態位中斷。它們都有獨立的中斷使能位,分別由ADC_CR 寄存器的EOCIE、JEOCIE、AWDIE位設置,對應的標志位分別是EOC、JEOC、AWD。

ADC初始化結構體詳解

ADC_InitTypeDef結構體用于設置ADC的工作參數,并由標準庫函數ADC_Init()調用這些設定參數進入設置外設相應的寄存器,達到配置外設工作環境的目的。其具體的定義如下:

typedef struct

{

uint32_t ADC_Mode;

FunctionalState ADC_ScanConvMode;

FunctionalState ADC_ContinuousConvMode;

uint32_t ADC_ExternalTrigConv;

uint32_t ADC_DataAlign;

uint8_t ADC_NbrOfChannel;

}ADC_InitTypeDef;

ADC_Mode:配置ADC的模式,當使用一個ADC時是獨立模式,使用兩個ADC 時是雙模式,在雙模式下還有很多細分模式可選,具體配置ADC_CR1:DUALMOD位。

ScanConvMode:可選參數為ENABLE和DISABLE,配置是否使用掃描。如果是單通道AD轉換使用DISABLE,如果是多通道AD轉換使用ENABLE,具體配置 ADC_CR1:SCAN位。

ADC_ContinuousConvMode:可選參數為 ENABLE 和 DISABLE,配置是啟動自動連續轉換還是單次轉換。使用ENABLE配置為使能自動連續轉換;使用 DISABLE 配置為單次轉換,轉換一次后停止需要手動控制才重新啟動轉換,具體配置 ADC_CR2:CON位。

ADC_ExternalTrigConv:外部觸發選擇,ADC有很多外部觸發條件,可根據項目需求配置觸發來源。實際上,我們一般使用軟件自動觸發。

ADC_DataAlign:轉換結果數據對齊模式,可選右對齊ADC_DataAlign_Right 或者左對齊ADC_DataAlign_Left。

ADC_NbrOfChannel:AD轉換通道數目,根據實際設置即可。具體的通道數和通道的轉換順序是配置規則序列或注入序列寄存器。

CKS32F103XX ADC單通道采集實驗

本實驗使用規則組單通道的單次轉換模式,并且通過軟件觸發,即由ADC_CR2寄存器的SWSTART位啟動。下面講解其詳細設置步驟:

1)開啟PA口時鐘和ADC1時鐘,設置PA1為模擬輸入。

CKS32F107xx的ADC通道1在PA1上,所以,我們先要使能PORTA的時鐘和ADC1時鐘,然后設置PA1為模擬輸入。使能GPIOA和ADC時鐘用RCC_APB2PeriphClockCmd函數,設置 PA1的輸入方式,使用GPIO_Init函數即可。

2)復位 ADC1,同時設置 ADC1 分頻因子。

開啟ADC1時鐘之后,我們要復位ADC1,將ADC1的全部寄存器重設為缺省值之后我們 就可以通過RCC_CFGR設置ADC1的分頻因子。分頻因子要確保ADC1的時鐘(ADCCLK)不要超過14Mhz。這個我們設置分頻因子位6,時鐘為72/6=12MHz,庫函數的實現方法是:

RCC_ADCCLKConfig(RCC_PCLK2_Div6);

ADC 時鐘復位的方法是:

ADC_DeInit(ADC1);

3)初始化ADC1參數,設置ADC1的工作模式以及規則序列的相關信息

在設置完分頻因子之后,我們就可以開始 ADC1 的模式配置了,設置單次轉換模式、觸發方式選擇、數據對齊方式等都在這一步實現。同時,我們還要設置ADC1規則序列的相關信息,我們這里只有一個通道,并且是單次轉換的,所以設置規則序列中通道數為1。這些在庫函數中是通過函數ADC_Init實現的。

4)使能ADC并校準。

在設置完了以上信息后,我們就使能AD轉換器,執行復位校準和AD校準,注意這兩步 是必須的!不校準將導致結果很不準確。使能指定ADC的方法是:

ADC_Cmd(ADC1, ENABLE);

執行復位校準的方法是:

ADC_ResetCalibration(ADC1);

執行ADC校準的方法是:

ADC_StartCalibration(ADC1);

每次進行校準之后要等待校準結束。這里是通過獲取校準狀態來判斷是否校準是否結束。等待復位校準結束函數為:

while(ADC_GetResetCalibrationStatus(ADC1));

等待AD校準結束函數為:

while(ADC_GetCalibrationStatus(ADC1));

5)讀取ADC值。

在上面的校準完成之后,ADC就算準備好了。接下來我們要做的就是設置規則序列1里面的通道,采樣順序,以及通道的采樣周期,然后啟動ADC轉換。在轉換結束后,讀取ADC 轉 換結果值就是了。我們這里是規則序列中的第1個轉換,同時采樣周期為239.5,所以設置為:

ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );

軟件開啟ADC轉換的方法是:

ADC_SoftwareStartConvCmd(ADC1, ENABLE);

開啟轉換之后,就可以獲取轉換ADC轉換結果數據,方法是:

ADC_GetConversionValue(ADC1);

同時在AD轉換中,我們還要根據狀態寄存器的標志位來獲取AD轉換的各個狀態信息。庫函數獲取AD轉換的狀態信息的函數是:

FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);

比如我們要判斷ADC1d的轉換是否結束,方法是:

while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));

通過以上幾個步驟的設置,我們就能正常的使用CKS32F107xx的ADC1來執行AD轉換操作了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 轉換器
    +關注

    關注

    27

    文章

    8624

    瀏覽量

    146861
  • 寄存器
    +關注

    關注

    31

    文章

    5317

    瀏覽量

    120001
  • adc
    adc
    +關注

    關注

    98

    文章

    6430

    瀏覽量

    544075

原文標題:MCU微課堂|CKS32F107xx系列 ADC(一)

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

收藏 人收藏

    評論

    相關推薦

    MCU微課堂|CKS32F4xx系列產品時鐘配置

    作為MCU運行的基礎,時鐘是單片機各個模塊工作時序的最小時間單位,推動單片機的各指令執行,是MCU選型的一個重要指標。CKS32F4xx系列產品具有眾多的外設,但并非所有的外設均需要系
    發表于 12-12 10:17 ?808次閱讀

    基于CKS32F4xx系列MCU互補PWM方案

    互補輸出實際跟比較輸出章節一樣使用的是定時器的功能,所以相關的函數設置同樣在庫函數文件CKS32f4xx_tim.h和CKS32f4xx_tim.c文件。 1)開啟TIM1和GPIO時鐘,配置PA7、PA8選擇復用功能GPIO
    發表于 12-02 10:13 ?588次閱讀
    基于<b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>的<b class='flag-5'>MCU</b>互補PWM方案

    CKS32F4xx系列產品串口DMA傳輸

    在上一講,我們講過CKS32F4xx系列的6個串口都支持DMA傳輸。因此本節我們對CKS32F4xx系列的DMA進行介紹,同時利用DMA對串
    的頭像 發表于 04-10 11:18 ?1008次閱讀

    CKS32F4xx系列RNG功能設置

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

    CKS32F4xx系列DAC功能

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

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

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

    CKS32F4xx系列ADC單通道電壓采集

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

    MCU微課堂 | CKS32F4xx系列產品SPI通信

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

    MCU微課堂 | CKS32F4xx系列產品GPIO口配置

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

    CKS32F4xx系列FSMC功能簡介

    本課講為大家講解CKS32F4xx系列產品的FSMC應用實例,FSMC全稱是Flexible Static Memory Controller,讀作靈活的靜態存儲控制器,顧名思義,MCU可以通過FSMC擴展靜態內存
    的頭像 發表于 04-14 15:06 ?867次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>FSMC功能簡介

    CKS32F107xx系列時鐘組成介紹

    作為MCU運行的基礎,時鐘是MCU各個模塊工作時序的最小時間單位,推動MCU的各指令執行,是MCU選型的一個重要指標。
    的頭像 發表于 05-20 14:04 ?428次閱讀
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>時鐘組成<b class='flag-5'>介紹</b>

    CKS32F107xx系列時鐘系統具體配置方法講解

    上一章節對CKS32F107xx系列時鐘做了整體介紹,本章節以使用HSI內部高速時鐘為例對時鐘具體配置方法進行講解。
    的頭像 發表于 05-28 10:05 ?521次閱讀
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>時鐘系統具體配置方法講解

    CKS32F107xx系列MCU的雙重ADC模式

    獨立模式的ADC采集需要在一個通道采集并且轉換完成后才會進行下一個通道的采集。而雙重ADC的機制就是使用兩個ADC同時采樣一個或者多個通道。雙重ADC模式較獨立模式一個最大的優勢就是提
    的頭像 發表于 07-22 09:19 ?408次閱讀
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的雙重<b class='flag-5'>ADC</b>模式

    CKS32F107xx系列MCU的GPIO內部硬件結構和工作模式

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

    CKS32F107xx系列MCU的中斷和事件

    本章節首先將以MCU開發人員常接觸到的“中斷”、“事件”和“中斷事件”三個名詞的概念展開,然后去闡述彼此的主要區別,最后借助MCU的GPIO外部中斷/事件控制器(EXTI)的傳輸路徑來加深對上述概念的理解。
    的頭像 發表于 07-22 09:29 ?504次閱讀
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的中斷和事件