在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

CKS32F107xx系列MCU中ADC介紹

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

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

A/D轉(zhuǎn)換器的供電和參考電壓

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

ADC轉(zhuǎn)換時間

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

ADC數(shù)據(jù)寄存器

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

ADC中斷

ADC中斷可分為三種:規(guī)則組轉(zhuǎn)換結(jié)束中斷、注入組轉(zhuǎn)換結(jié)束中斷、設(shè)置了模擬看門狗狀態(tài)位中斷。它們都有獨立的中斷使能位,分別由ADC_CR 寄存器的EOCIE、JEOCIE、AWDIE位設(shè)置,對應(yīng)的標(biāo)志位分別是EOC、JEOC、AWD。

ADC初始化結(jié)構(gòu)體詳解

ADC_InitTypeDef結(jié)構(gòu)體用于設(shè)置ADC的工作參數(shù),并由標(biāo)準(zhǔn)庫函數(shù)ADC_Init()調(diào)用這些設(shè)定參數(shù)進(jìn)入設(shè)置外設(shè)相應(yīng)的寄存器,達(dá)到配置外設(shè)工作環(huán)境的目的。其具體的定義如下:

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的模式,當(dāng)使用一個ADC時是獨立模式,使用兩個ADC 時是雙模式,在雙模式下還有很多細(xì)分模式可選,具體配置ADC_CR1:DUALMOD位。

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

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

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

ADC_DataAlign:轉(zhuǎn)換結(jié)果數(shù)據(jù)對齊模式,可選右對齊ADC_DataAlign_Right 或者左對齊ADC_DataAlign_Left。

ADC_NbrOfChannel:AD轉(zhuǎn)換通道數(shù)目,根據(jù)實際設(shè)置即可。具體的通道數(shù)和通道的轉(zhuǎn)換順序是配置規(guī)則序列或注入序列寄存器。

CKS32F103XX ADC單通道采集實驗

本實驗使用規(guī)則組單通道的單次轉(zhuǎn)換模式,并且通過軟件觸發(fā),即由ADC_CR2寄存器的SWSTART位啟動。下面講解其詳細(xì)設(shè)置步驟:

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

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

2)復(fù)位 ADC1,同時設(shè)置 ADC1 分頻因子。

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

RCC_ADCCLKConfig(RCC_PCLK2_Div6);

ADC 時鐘復(fù)位的方法是:

ADC_DeInit(ADC1);

3)初始化ADC1參數(shù),設(shè)置ADC1的工作模式以及規(guī)則序列的相關(guān)信息。

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

4)使能ADC并校準(zhǔn)。

在設(shè)置完了以上信息后,我們就使能AD轉(zhuǎn)換器,執(zhí)行復(fù)位校準(zhǔn)和AD校準(zhǔn),注意這兩步 是必須的!不校準(zhǔn)將導(dǎo)致結(jié)果很不準(zhǔn)確。使能指定ADC的方法是:

ADC_Cmd(ADC1, ENABLE);

執(zhí)行復(fù)位校準(zhǔn)的方法是:

ADC_ResetCalibration(ADC1);

執(zhí)行ADC校準(zhǔn)的方法是:

ADC_StartCalibration(ADC1);

每次進(jìn)行校準(zhǔn)之后要等待校準(zhǔn)結(jié)束。這里是通過獲取校準(zhǔn)狀態(tài)來判斷是否校準(zhǔn)是否結(jié)束。等待復(fù)位校準(zhǔn)結(jié)束函數(shù)為:

while(ADC_GetResetCalibrationStatus(ADC1));

等待AD校準(zhǔn)結(jié)束函數(shù)為:

while(ADC_GetCalibrationStatus(ADC1));

5)讀取ADC值。

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

ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );

軟件開啟ADC轉(zhuǎn)換的方法是:

ADC_SoftwareStartConvCmd(ADC1, ENABLE);

開啟轉(zhuǎn)換之后,就可以獲取轉(zhuǎn)換ADC轉(zhuǎn)換結(jié)果數(shù)據(jù),方法是:

ADC_GetConversionValue(ADC1);

同時在AD轉(zhuǎn)換中,我們還要根據(jù)狀態(tài)寄存器的標(biāo)志位來獲取AD轉(zhuǎn)換的各個狀態(tài)信息。庫函數(shù)獲取AD轉(zhuǎn)換的狀態(tài)信息的函數(shù)是:

FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);

比如我們要判斷ADC1d的轉(zhuǎn)換是否結(jié)束,方法是:

while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));

通過以上幾個步驟的設(shè)置,我們就能正常的使用CKS32F107xx的ADC1來執(zhí)行AD轉(zhuǎn)換操作了。

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

    關(guān)注

    27

    文章

    8703

    瀏覽量

    147166
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5343

    瀏覽量

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

    關(guān)注

    98

    文章

    6498

    瀏覽量

    544630

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    基于CKS32F4xx系列MCU互補(bǔ)PWM方案

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

    CKS32F4xx系列產(chǎn)品串口DMA傳輸

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

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

    ? MCU 微課堂 CKS32F4xx 系 列RNG功能 隨機(jī)數(shù)發(fā)生器簡介 ? ? CKS32F4xx系列自帶了硬件隨機(jī)數(shù)發(fā)生器(RNG),RNG處理器是一個以連續(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>單通道電壓采集

    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口配置

    CKS32F4xx系列FSMC功能簡介

    本課講為大家講解CKS32F4xx系列產(chǎn)品的FSMC應(yīng)用實例,F(xiàn)SMC全稱是Flexible Static Memory Controller,讀作靈活的靜態(tài)存儲控制器,顧名思義,MCU可以通過FSMC擴(kuò)展靜態(tài)內(nèi)存
    的頭像 發(fā)表于 04-14 15:06 ?948次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>FSMC功能簡介

    CKS32F107xx系列時鐘組成介紹

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

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

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

    CKS32F107xx系列MCU的雙重ADC模式

    獨立模式的ADC采集需要在一個通道采集并且轉(zhuǎn)換完成后才會進(jìn)行下一個通道的采集。而雙重ADC的機(jī)制就是使用兩個ADC同時采樣一個或者多個通道。雙重ADC模式較獨立模式一個最大的優(yōu)勢就是提
    的頭像 發(fā)表于 07-22 09:19 ?486次閱讀
    <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內(nèi)部硬件結(jié)構(gòu)和工作模式

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

    詳解CKS32F107xx系列的定時器同步功能

    CKS32F107xx系列部分定時器在內(nèi)部是相連的,可用于定時器同步或鏈接,方便用戶配置不同的同步模式,以便在電機(jī)控制、數(shù)據(jù)采集和PWM信號生成等應(yīng)用,實現(xiàn)復(fù)雜的時間序列和多通道的同步操作。本節(jié)課
    的頭像 發(fā)表于 11-26 17:51 ?369次閱讀
    詳解<b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>的定時器同步功能
    主站蜘蛛池模板: 亚洲a免费| 日本免费色网站| 免费艹逼视频| 天天色综合3| 中文字幕第一区| 四虎在线最新地址4hu| 爱爱动态视频免费视频| 8050午夜| 特黄特级毛片免费视| 大象焦伊人久久综合网色视| 粉嫩尤物在线456| 综合一区| 国产精欧美一区二区三区| aa在线观看| 四虎黄色| 午夜影院毛片| 免费一区二区三区| 毛片其地| 久久福利免费视频| 亚洲欧美日韩国产一区二区三区精品| 国产一区高清| 日本老师69xxxxxxxxx| 色婷婷久| 天天爱天天爽| 超h 高h 污肉男男| 国产女人18毛片水真多18精品| 在线视频永久在线视频| 色成人亚洲| 日韩黄网| 性欧美久久| 午夜久久久久久| 国产精品高清久久久久久久| 国产亚洲美女| 91av视频免费在线观看| 免费视频淫片aa毛片| 国产精品午夜免费观看网站| 他也色在线| 日操夜干| 天堂中文在线免费观看| 天天激情站| 新激情五月|