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

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

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

淺談CW32系列模數(shù)轉(zhuǎn)換器(ADC)

jf_pJlTbmA9 ? 來源:武漢芯源半導(dǎo)體 ? 作者:武漢芯源半導(dǎo)體 ? 2023-10-25 15:43 ? 次閱讀

模數(shù)轉(zhuǎn)換器ADC)的主要功能是將模擬量轉(zhuǎn)換為數(shù)字量,方便MCU進(jìn)行處理。下面以CW32L083為例介紹CW系列的模數(shù)轉(zhuǎn)換器的特點(diǎn)和功能,并提供演示實(shí)例。

一、概述

CW32L083 內(nèi)部集成一個(gè) 12 位精度、最高 1M SPS 轉(zhuǎn)換速度的逐次逼近型模數(shù)轉(zhuǎn)換器 (SAR ADC),最多可將 16 路模擬信號轉(zhuǎn)換為數(shù)字信號。現(xiàn)實(shí)世界中的絕大多數(shù)信號都是模擬量,如光、電、聲、圖像信號等,都要由 ADC 轉(zhuǎn)換成數(shù)字信號,才能由 MCU 進(jìn)行數(shù)字化處理。

二、主要特性

? 12 位精度

? 可編程轉(zhuǎn)換速度,最高達(dá) 1M SPS

? 16 路輸入轉(zhuǎn)換通道:13 路外部引腳輸入 - 內(nèi)置溫度傳感器 - 內(nèi)置 BGR 1.2V 基準(zhǔn) - 1/3 VDDA 電源電壓

? 4 路參考電壓源(Vref):- VDDA 電源電壓 - ExRef(PB00)引腳電壓 - 內(nèi)置 1.5V 參考電壓 - 內(nèi)置 2.5V 參考電壓

? 采樣電壓輸入范圍:0 ~ Vref

多種轉(zhuǎn)換模式,全部支持轉(zhuǎn)換累加功能 - 單次轉(zhuǎn)換 - 多次轉(zhuǎn)換 - 連續(xù)轉(zhuǎn)換 - 序列掃描轉(zhuǎn)換 - 序列斷續(xù)轉(zhuǎn)換

? 支持單通道、序列通道兩種通道選擇,最大同時(shí)支持 8 個(gè)序列

? 支持輸入通道電壓閾值監(jiān)測

? 內(nèi)置信號跟隨器,可轉(zhuǎn)換高阻抗輸入信號

? 支持片內(nèi)外設(shè)自動(dòng)觸發(fā) ADC 轉(zhuǎn)換

? 支持 ADC 轉(zhuǎn)換完成觸發(fā) DMA

三、轉(zhuǎn)換時(shí)序

ADC 的轉(zhuǎn)換時(shí)序如下圖所示:

wKgZomUDxUWAZYCDAADC3UVV5Hc265.png

向 ADC 控制寄存器 ADC_CR0 的 EN 位域?qū)懭?1,使能 ADC 模塊。

ADC_CR0.EN 由 0 變?yōu)?1 約 40μs 后 ADC_ISR.READY 標(biāo)志位置 1,表示模擬電路初始化完成,可以開始進(jìn)行 ADC 轉(zhuǎn)換。

向 ADC 啟動(dòng)寄存器 ADC_START 的 START 位域?qū)懭?1,啟動(dòng) ADC 轉(zhuǎn)換,轉(zhuǎn)換完成后硬件自動(dòng)清零。

ADC 工作時(shí)鐘 ADCCLK,由系統(tǒng)時(shí)鐘 PCLK 經(jīng)預(yù)分頻器分頻得到,通過控制寄存器 ADC_CR0 的 CLK 位域可選擇 1 ~ 128 分頻

四、工作模式

ADC 控制寄存器 ADC_CR0 的 MODE 位域配置 ADC 工作模式

啟動(dòng) ADC 轉(zhuǎn)換,可通過向 ADC 啟動(dòng)寄存器 ADC_START 的 START 位域?qū)?1;也可通過其他外設(shè)來觸發(fā)。

wKgaomR4F26ATOmXAAEQE8ffK-g415.jpg

五、實(shí)際案例

GTIM1定時(shí)器定時(shí)1S,定時(shí)器1S中斷觸發(fā)啟動(dòng)ADC轉(zhuǎn)換,采樣AIN1,并通過GTIM2以PWM方波輸出ADC采樣值:PWM占空比50%,周期為1Hz-5000Hz,對應(yīng)ADC的0-4095采樣值。

1.配置ADC測試IO口

voidADC_PortInit(void)
{
REGBITS_SET(CW_SYSCTRL->AHBEN,SYSCTRL_AHBEN_GPIOA_Msk);//打開GPIO時(shí)鐘
REGBITS_SET(CW_SYSCTRL->APBEN2,SYSCTRL_APBEN2_ADC_Msk);//打開ADC時(shí)鐘
PA01_ANALOG_ENABLE();//setPA01asAIN1INPUT
}

2.LED初始化

voidLED_Init(void)
{
GPIO_InitTypeDefGPIO_InitStructure={0};
REGBITS_SET(CW_SYSCTRL->AHBEN,SYSCTRL_AHBEN_GPIOC_Msk);//打開GPIO時(shí)鐘
/*ConfiguretheGPIO_LEDpin*/
GPIO_InitStructure.Pins=GPIO_PIN_2|GPIO_PIN_3;
GPIO_InitStructure.Mode=GPIO_MODE_OUTPUT_PP;
GPIO_Init(CW_GPIOC, GPIO_InitStructure);
PC02_SETLOW();//LEDsareoff.PC03_SETLOW();
}

3.PWM IO初始化

voidPWM_PortInit(void)
{
GPIO_InitTypeDefGPIO_InitStructure={0};
/*PA5PWM輸出*/
__RCC_GPIOA_CLK_ENABLE();
/*ConfigurethePWMoutputpin*/
GPIO_InitStructure.Pins=GPIO_PIN_5;
GPIO_InitStructure.Mode=GPIO_MODE_OUTPUT_PP;
GPIO_Init(CW_GPIOA, GPIO_InitStructure);
PA05_AFx_GTIM2CH1();
}

4.GTIM初始化

voidGTIM_Init(void)
{
GTIM_InitTypeDefGTIM_InitStruct={0};

//REGBITS_SET(CW_SYSCTRL->APBEN1,SYSCTRL_APBEN1_GTIM1_Msk);//打開GTIM1
__RCC_GTIM1_CLK_ENABLE();//打開GTIM1時(shí)鐘GTIM_InitStruct.Mode=GTIM_MODE_TIME;
GTIM_InitStruct.OneShotMode=GTIM_COUNT_CONTINUE;
GTIM_InitStruct.Prescaler=GTIM_PRESCALER_DIV1024;
GTIM_InitStruct.ReloadValue=62499ul;//T=1s.
GTIM_InitStruct.ToggleOutState=DISABLE;
GTIM_TimeBaseInit(CW_GTIM1, GTIM_InitStruct);
GTIM_ITConfig(CW_GTIM1,GTIM_IT_OV,ENABLE);
NVIC_ClearPendingIRQ(GTIM1_IRQn);
NVIC_EnableIRQ(GTIM1_IRQn);
NVIC_SetPriority(GTIM1_IRQn,0x03);

__RCC_GTIM2_CLK_ENABLE();//打開GTIM2時(shí)鐘
GTIM_InitStruct.ReloadValue=0xFFFFu;
GTIM_InitStruct.ToggleOutState=ENABLE;
GTIM_TimeBaseInit(CW_GTIM2, GTIM_InitStruct);
valuePeriod=GTIM_InitStruct.ReloadValue;
valuePosWidth=valuePeriod>>1u;
GTIM_OCInit(CW_GTIM2,GTIM_CHANNEL1,GTIM_OC_OUTPUT_PWM_HIGH);
GTIM_SetCompare1(CW_GTIM2,valuePosWidth);
GTIM_Cmd(CW_GTIM2,ENABLE);
}

5.主程序main

uint16_tvalueAdc;
uint32_tvalueAdcAcc;
volatileuint8_tgFlagIrq;
uint16_tgCntEoc=0;
uint8_tcntSample;
floatfTsDegree;
uint32_tvaluePeriod;
uint32_tvaluePosWidth;
uint32_tvalueReload=0xFFFFu;
intmain(void)
{
uint8_tres;
ADC_InitTypeDefADC_InitStructure={0};
ADC_WdtTypeDefADC_WdtStructure={0};
ADC_SingleChTypeDefADC_SingleChStructure={0};
RCC_HSI_Enable(RCC_HSIOSC_DIV6);//以下從HSI切換到PLL
RCC_PLL_Enable(RCC_PLLSOURCE_HSI,8000000UL,RCC_PLL_MUL_8);
//開啟PLL,PLL源為HSI
__RCC_FLASH_CLK_ENABLE();//打開FLASH時(shí)鐘
FLASH_SetLatency(FLASH_Latency_3);
res=RCC_SysClk_Switch(RCC_SYSCLKSRC_PLL);//切換系統(tǒng)時(shí)鐘到PLL:64MHz。
ADC_PortInit();//配置ADC測試IO口
LED_Init();//LED初始化
PWM_PortInit();
GTIM_Init();
ADC_StructInit( ADC_InitStructure);//ADC默認(rèn)值初始化
ADC_WdtInit( ADC_WdtStructure);//ADC模擬看門狗通道初始化
ADC_InitStructure.ADC_ClkDiv=ADC_Clk_Div128;//ADCCLK:500KHz.
ADC_InitStructure.ADC_InBufEn=ADC_BufEnable;
ADC_InitStructure.ADC_SampleTime=ADC_SampTime10Clk;
ADC_SingleChStructure.ADC_DiscardEn=ADC_DiscardNull;//配置單通道轉(zhuǎn)換模式
ADC_SingleChStructure.ADC_Chmux=ADC_ExInputCH1;//選擇ADC轉(zhuǎn)換通道
ADC_SingleChStructure.ADC_InitStruct=ADC_InitStructure;
ADC_SingleChStructure.ADC_WdtStruct=ADC_WdtStructure;
ADC_SingleChOneModeCfg( ADC_SingleChStructure);
ADC_ITConfig(ADC_IT_EOC,ENABLE);
ADC_EnableIrq(ADC_INT_PRIORITY);
ADC_ClearITPendingAll();
ADC_Enable();//ADC使能
ADC_ExtTrigCfg(ADC_TRIG_GTIM1,ENABLE);//ADC外部中斷觸發(fā)源配置
GTIM_Cmd(CW_GTIM1,ENABLE);
while(1)
{
while(!(gFlagIrq ADC_ISR_EOC_Msk));
gFlagIrq=0u;PC03_TOG();
valueAdc=ADC_GetConversionValue();
valueReload=((4095u*125000ul)/(4999u*valueAdc+4095u)+1)>>1;
GTIM_SetCounterValue(CW_GTIM2,0u);//reset.
GTIM_SetReloadValue(CW_GTIM2,valueReload);
GTIM_SetCompare1(CW_GTIM2,valuePosWidth);//等待ADC外部中斷觸發(fā)源啟動(dòng)下一次ADC轉(zhuǎn)換
}
}

6.實(shí)驗(yàn)展示

通用定時(shí)器GTIM1定時(shí)1s自動(dòng)觸發(fā)ADC模塊進(jìn)行轉(zhuǎn)換,ADC通道為AIN1:PA01。

通用定時(shí)器GTIM2將AIN1的ADC采樣值轉(zhuǎn)換成頻率可變的PWM方波,占空比50%,使用PA05作為PWM輸出。ADC采樣值為0時(shí),PWM方波頻率為1Hz;ADC采樣值為4095時(shí),PWM方波頻率為5KHz。

wKgZomR4F26AI9RnAABLqfkip4g331.jpg

來源:武漢芯源半導(dǎo)體

免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進(jìn)行處理

審核編輯 黃宇

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

    關(guān)注

    98

    文章

    6391

    瀏覽量

    543757
  • 模數(shù)轉(zhuǎn)換器

    關(guān)注

    26

    文章

    3099

    瀏覽量

    126699
收藏 人收藏

    評論

    相關(guān)推薦

    ADC10DV200單芯片模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADC10DV200單芯片模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-31 10:39 ?0次下載
    <b class='flag-5'>ADC</b>10DV200單芯片<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>數(shù)據(jù)表

    ADC141S628-Q偽差分模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADC141S628-Q偽差分模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-25 11:29 ?0次下載
    <b class='flag-5'>ADC</b>141S628-Q偽差分<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>(<b class='flag-5'>ADC</b>)數(shù)據(jù)表

    ADC122S625模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADC122S625模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-25 10:09 ?0次下載
    <b class='flag-5'>ADC</b>122S625<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>(<b class='flag-5'>ADC</b>)數(shù)據(jù)表

    ADC12130、ADC12132和ADC12138模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADC12130、ADC12132和ADC12138模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-25 10:08 ?0次下載
    <b class='flag-5'>ADC</b>12130、<b class='flag-5'>ADC</b>12132和<b class='flag-5'>ADC</b>12138<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>數(shù)據(jù)表

    ADC10731/ADC10732/ADC10734/ADC10738模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADC10731/ADC10732/ADC10734/ADC10738模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-25 09:40 ?0次下載
    <b class='flag-5'>ADC</b>10731/<b class='flag-5'>ADC</b>10732/<b class='flag-5'>ADC</b>10734/<b class='flag-5'>ADC</b>10738<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>數(shù)據(jù)表

    ADC0808/ADC0809模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADC0808/ADC0809模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-19 10:42 ?2次下載
    <b class='flag-5'>ADC</b>0808/<b class='flag-5'>ADC</b>0809<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>數(shù)據(jù)表

    TLC4541和TLC4545微型CMOS模數(shù)轉(zhuǎn)換器(ADC)系列數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TLC4541和TLC4545微型CMOS模數(shù)轉(zhuǎn)換器(ADC)系列數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-18 09:24 ?0次下載
    TLC4541和TLC4545微型CMOS<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>(<b class='flag-5'>ADC</b>)<b class='flag-5'>系列</b>數(shù)據(jù)表

    ADC09xJ800-Q1模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADC09xJ800-Q1模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-15 10:59 ?0次下載
    <b class='flag-5'>ADC</b>09xJ800-Q1<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>(<b class='flag-5'>ADC</b>)數(shù)據(jù)表

    CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)五:ADC采樣及顯示

    的數(shù)字信號。由于數(shù)字信號本身不具有實(shí)際意義,僅僅表示一個(gè)相對大小。故任何一個(gè)模數(shù)轉(zhuǎn)換器都需要一個(gè)參考模擬量作為轉(zhuǎn)換的標(biāo)準(zhǔn),比較常見的參考標(biāo)準(zhǔn)為最大的可轉(zhuǎn)換信號大小。而輸出的數(shù)字量則表示輸入信號相對于參考信號的大小。 6.1.2.
    的頭像 發(fā)表于 05-31 15:28 ?485次閱讀
    <b class='flag-5'>CW32</b>數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)五:<b class='flag-5'>ADC</b>采樣及顯示

    模數(shù)轉(zhuǎn)換器的技術(shù)參數(shù)詳解

    模數(shù)轉(zhuǎn)換器ADC,Analog-to-Digital Converter)作為電子系統(tǒng)中的重要組成部分,負(fù)責(zé)將連續(xù)的模擬信號轉(zhuǎn)換為離散的數(shù)字信號,以供數(shù)字系統(tǒng)進(jìn)行處理和分析。模數(shù)轉(zhuǎn)換器
    的頭像 發(fā)表于 05-21 16:06 ?1203次閱讀

    低噪聲模數(shù)轉(zhuǎn)換器 (ADC)SC1642,可用于溫度測量系統(tǒng)

    為了供應(yīng)市場所需,市面上已有多種類型的溫度傳感來測量溫度,而溫度測量系統(tǒng)的精度取決于傳感以及傳感所接口的模數(shù)轉(zhuǎn)換器(ADC)的性能。許
    的頭像 發(fā)表于 04-15 09:43 ?560次閱讀
    低噪聲<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b> (<b class='flag-5'>ADC</b>)SC1642,可用于溫度測量系統(tǒng)

    【有那么點(diǎn)詳細(xì)的CW32學(xué)習(xí)筆記】模數(shù)轉(zhuǎn)換器

    本章為大家?guī)?b class='flag-5'>模數(shù)轉(zhuǎn)換器ADC)的使用教學(xué),按照慣例,我們先來說一下模數(shù)轉(zhuǎn)換器本身。 首先是功能,模數(shù)轉(zhuǎn)換器接收電壓信號并輸出一個(gè)數(shù)字信號,該數(shù)字信號是一個(gè)數(shù)字,這個(gè)數(shù)字指示了電壓信
    的頭像 發(fā)表于 02-29 09:41 ?707次閱讀
    【有那么點(diǎn)詳細(xì)的<b class='flag-5'>CW32</b>學(xué)習(xí)筆記】<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>

    AD4112模數(shù)轉(zhuǎn)換器(ADC)手冊

    電子發(fā)燒友網(wǎng)站提供《AD4112模數(shù)轉(zhuǎn)換器(ADC)手冊.pdf》資料免費(fèi)下載
    發(fā)表于 11-22 15:05 ?1次下載
    AD4112<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>(<b class='flag-5'>ADC</b>)手冊

    AD4111模數(shù)轉(zhuǎn)換器(ADC)手冊

    電子發(fā)燒友網(wǎng)站提供《AD4111模數(shù)轉(zhuǎn)換器(ADC)手冊.pdf》資料免費(fèi)下載
    發(fā)表于 11-22 15:03 ?1次下載
    AD4111<b class='flag-5'>模數(shù)轉(zhuǎn)換器</b>(<b class='flag-5'>ADC</b>)手冊

    ADC模數(shù)轉(zhuǎn)換器的延時(shí)原理

    ADC模數(shù)轉(zhuǎn)換器的延時(shí)原理主要與其內(nèi)部的采樣和保持電路、比較、計(jì)數(shù)等有關(guān)。以下是一般的ADC轉(zhuǎn)換
    的頭像 發(fā)表于 11-16 15:59 ?870次閱讀