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

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

3天內不再提示

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

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

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

一、概述

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

二、主要特性

? 12 位精度

? 可編程轉換速度,最高達 1M SPS

? 16 路輸入轉換通道:13 路外部引腳輸入 - 內置溫度傳感器 - 內置 BGR 1.2V 基準 - 1/3 VDDA 電源電壓

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

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

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

? 支持單通道、序列通道兩種通道選擇,最大同時支持 8 個序列

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

? 內置信號跟隨器,可轉換高阻抗輸入信號

? 支持片內外設自動觸發(fā) ADC 轉換

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

三、轉換時序

ADC 的轉換時序如下圖所示:

wKgZomUDxUWAZYCDAADC3UVV5Hc265.png

向 ADC 控制寄存器 ADC_CR0 的 EN 位域寫入 1,使能 ADC 模塊。

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

向 ADC 啟動寄存器 ADC_START 的 START 位域寫入 1,啟動 ADC 轉換,轉換完成后硬件自動清零。

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

四、工作模式

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

啟動 ADC 轉換,可通過向 ADC 啟動寄存器 ADC_START 的 START 位域寫 1;也可通過其他外設來觸發(fā)。

wKgaomR4F26ATOmXAAEQE8ffK-g415.jpg

五、實際案例

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

1.配置ADC測試IO口

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

2.LED初始化

voidLED_Init(void)
{
GPIO_InitTypeDefGPIO_InitStructure={0};
REGBITS_SET(CW_SYSCTRL->AHBEN,SYSCTRL_AHBEN_GPIOC_Msk);//打開GPIO時鐘
/*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時鐘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時鐘
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時鐘
FLASH_SetLatency(FLASH_Latency_3);
res=RCC_SysClk_Switch(RCC_SYSCLKSRC_PLL);//切換系統(tǒng)時鐘到PLL:64MHz。
ADC_PortInit();//配置ADC測試IO口
LED_Init();//LED初始化
PWM_PortInit();
GTIM_Init();
ADC_StructInit( ADC_InitStructure);//ADC默認值初始化
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;//配置單通道轉換模式
ADC_SingleChStructure.ADC_Chmux=ADC_ExInputCH1;//選擇ADC轉換通道
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ā)源啟動下一次ADC轉換
}
}

6.實驗展示

通用定時器GTIM1定時1s自動觸發(fā)ADC模塊進行轉換,ADC通道為AIN1:PA01。

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

wKgZomR4F26AI9RnAABLqfkip4g331.jpg

來源:武漢芯源半導體

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

審核編輯 黃宇

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

    關注

    97

    文章

    6345

    瀏覽量

    543347
  • 模數(shù)轉換器

    關注

    26

    文章

    3063

    瀏覽量

    126661
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

    電子發(fā)燒友網(wǎng)站提供《ADC12130、ADC12132和ADC12138模數(shù)轉換器數(shù)據(jù)表.pdf》資料免費下載
    發(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ù)轉換器</b>數(shù)據(jù)表

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

    電子發(fā)燒友網(wǎng)站提供《ADC10731/ADC10732/ADC10734/ADC10738模數(shù)轉換器數(shù)據(jù)表.pdf》資料免費下載
    發(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ù)轉換器</b>數(shù)據(jù)表

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

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

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

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

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

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

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

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

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

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

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

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

    【有那么點詳細的CW32學習筆記】模數(shù)轉換器

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

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

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

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

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

    ADC模數(shù)轉換器的延時原理

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