【经验】解析CW32系列模数转换器CW32L083的特点和功能以及演示实例
模数转换器(ADC)的主要功能是将模拟量转换为数字量,方便MCU进行处理。下面以CW32L083为例介绍CW系列的模数转换器的特点和功能,并提供演示实例。
概述
CW32L083内部集成一个12位精度、最高1M SPS转换速度的逐次逼近型模数转换器(SAR ADC),最多可将16路模拟信号转换为数字信号。现实世界中的绝大多数信号都是模拟量,如光、电、声、图像信号等,都要由ADC转换成数字信号,才能由MCU进行数字化处理。
主要特性
•12位精度
•可编程转换速度,最高达1M SPS
•16路输入转换通道:13路外部引脚输入-内置温度传感器-内置BGR 1.2V基准-1/3 VDDA电源电压
•4路参考电压源(Vref):-VDDA电源电压-ExRef(PB00)引脚电压-内置1.5V参考电压-内置2.5V参考电压
•采样电压输入范围:0~Vref
多种转换模式,全部支持转换累加功能-单次转换-多次转换-连续转换-序列扫描转换-序列断续转换
•支持单通道、序列通道两种通道选择,最大同时支持8个序列
•支持输入通道电压阈值监测
•内置信号跟随器,可转换高阻抗输入信号
•支持片内外设自动触发ADC转换
•支持ADC转换完成触发DMA
转换时序
ADC的转换时序如下图所示:
图 1
向ADC控制寄存器ADC_CR0的EN位域写入1,使能ADC模块。
ADC_CR0.EN由0变为1约40μs后ADC_ISR.READY标志位置1,表示模拟电路初始化完成,可以开始进行ADC转换。
向ADC启动寄存器ADC_START的START位域写入1,启动ADC转换,转换完成后硬件自动清零。
ADC工作时钟ADCCLK,由系统时钟PCLK经预分频器分频得到,通过控制寄存器ADC_CR0的CLK位域可选择1~128分频
工作模式
ADC控制寄存器ADC_CR0的MODE位域配置ADC工作模式
表 1
启动ADC转换,可通过向ADC启动寄存器ADC_START的START位域写1;也可通过其他外设来触发。
实际案例
GTIM1定时器定时1S,定时器1S中断触发启动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();//set PA01 as AIN1 INPUT
}
2.LED初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
REGBITS_SET(CW_SYSCTRL->AHBEN, SYSCTRL_AHBEN_GPIOC_Msk); //打开GPIO时钟
/* Configure the GPIO_LED pin */
GPIO_InitStructure.Pins = GPIO_PIN_2 | GPIO_PIN_3;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_Init(CW_GPIOC, &GPIO_InitStructure);
PC02_SETLOW();//LEDs are off.
PC03_SETLOW();
}
3.PWM IO初始化
void PWM_PortInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
/* PA5 PWM 输出 */
__RCC_GPIOA_CLK_ENABLE();
/* Configure the PWM output pin */
GPIO_InitStructure.Pins = GPIO_PIN_5;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_Init(CW_GPIOA, &GPIO_InitStructure);
PA05_AFx_GTIM2CH1();
}
4.GTIM初始化
void GTIM_Init(void)
{
GTIM_InitTypeDef GTIM_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, >IM_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, >IM_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_t valueAdc;
uint32_t valueAdcAcc;
volatile uint8_t gFlagIrq;
uint16_t gCntEoc = 0;
uint8_t cntSample;
float fTsDegree;
uint32_t valuePeriod;
uint32_t valuePosWidth;
uint32_t valueReload = 0xFFFFu;
int main(void)
{ uint8_t res;
ADC_InitTypeDef ADC_InitStructure = {0};
ADC_WdtTypeDef ADC_WdtStructure = {0};
ADC_SingleChTypeDef ADC_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); //切换系统时钟到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外部中断触发源配置
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外部中断触发源启动下一次ADC转换
}
}
6.实验展示
通用定时器GTIM1定时1s自动触发ADC模块进行转换,ADC通道为AIN1:PA01。
通用定时器GTIM2将AIN1的ADC采样值转换成频率可变的PWM方波,占空比50%,使用PA05作为PWM输出。ADC采样值为0时,PWM方波频率为1Hz;ADC采样值为4095时,PWM方波频率为5KHz。
图 2
- |
- +1 赞 0
- 收藏
- 评论 0
本文由三年不鸣转载自武汉芯源半导体公众号,原文标题为:CW32系列模数转换器(ADC),本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
基于CW32的MPU6050姿态传感器的应用开发配置教程
MPU6050是一种常用的六轴姿态传感器模块,结合了三轴陀螺仪和三轴加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。MPU6050 对陀螺仪和加速度计分别用了三个16 位的ADC(0~65535),将其测量的模拟量转化为可输出的数字量。
设计经验 发布时间 : 2023-11-01
CW32数字电压电流表软件教程之ADC采样及显示
本文介绍了ADC基础知识。ADC(模拟数字转换器)是一种将模拟信号转换为数字信号的电子元件。常见的模数转换器是将一个输入电压信号转换为一个输出的数字信号。CW32F003万用表内部集成了一个 12 位精度、最高 1M SPS 的逐次逼近型模数转换器 (SAR ADC),最多可将 16 路模拟信号转换为数字信号。
设计经验 发布时间 : 2024-07-11
【经验】芯源CW32系列单片机低功耗模式介绍及UART深度休眠模式示例
CW32单片机低功耗模式介绍及UART深度休眠模式示例。
设计经验 发布时间 : 2023-05-31
CW32 is a Low-power 32-bit Microcontroller, Using Arm Cortex-m0+core, Very Suitable for Intelligent Temperature Controllers with Low Power Consumption Requirements
The CW32 designed by Wuhan Xinyuan Semiconductor Co., Ltd. using ARM Cortex-M0+core is a low-power 32-bit microcontroller, currently used in temperature controllers such as air conditioning, floor heating, water heating, and electric heating.
应用方案 发布时间 : 2024-11-08
武汉芯源(CW)CW32系列微控制器选型表
描述- 武汉芯源半导体目前已推出CW32F003系列、CW32F030系列以及CW32L083系列MCU产品,可以满足各行业的需求,客户行业广泛涉及通信电子、工业电子、消费电子、新能源、安防监控、物联网以及汽车电子等多个行业,并且已经在无线充方案、电子烟方案、水表方案、燃气表方案、BLDC电动工具、BMS方案、三轴云台、无线传感器方案等项目中得到实际应用,未来将能够满足更多的市场需求。
型号- CW32F030K8T7,F002,F003,CW32F030F8V7,CW32L083MCT6,CW32W031R8U6,CW32L031C8T6,A030 系列,L052,L083 系列,F030,L052 系列,CW32F030K8U7,L031 系列,CW32L052R8S6,CW32A030C8T7,A030,CW32L031K8U6,CW32L031C8U6,CW32L031F8P6,CW32L083RCT6,R031 系列,CW32R031C8U6,CW32L052C8T6,CW32L083VCT6,CW32 系列,CW32F020K6U7,F020,CW32,CW32F030F6P7,CW32L052R8T6,CW32F002F3U7,F002 系列,CW32L083RCS6,CW32F020C6U7,R031,CW32L031F8U6,CW32F003F4P7,L031,F030 系列,F003 系列,CW32F020F6U7,CW32F030C8T7,CW32F002F3P7,F020 系列,CW32F003F4U7,CW32L083RBT6,L083,CW32F003E4P7,W031 系列,W031
The Application Solution of Wuhan Core Source Semiconductor CW32L083 in Intelligent Gas Meters
The Wuhan Core Source Semiconductor low-power MCU chip CW32L083 series has the characteristics of ultra-low power consumption, high reliability, and abundant resources. In the application of intelligent gas meters, it can more efficiently perform a series of functions such as data collection, display, storage, and transmission.
应用方案 发布时间 : 2024-11-08
武汉芯源CW32系列单片机数字电压电流表产品硬件设计指南
本文基于武汉芯源CW32系列单片机,介绍数字电压电流表产品硬件设计指南,希望对各位工程师有所帮助。
设计经验 发布时间 : 2024-06-20
【技术】武汉芯源CW32单片机UART基本数据收发功能介绍
通用异步收发器是一种通用串行数据总线,常用于系统内各子模块间的数据交换。本文将以武汉芯源推出的CW32系列单片机的CW32L083为例,介绍UART基本数据收发功能。
技术探讨 发布时间 : 2023-04-25
基于CW32F003E4P7的便携指夹式血氧仪全套解决方案,实现0.2%的弱灌注检测能力
武汉芯源半导体作为国内优秀的半导体设计厂商,可提供基于CW32F003E4P7的便携指夹式血氧仪全套解决方案,实现0.2%的弱灌注检测能力。
应用方案 发布时间 : 2024-11-07
芯片等级怎么分?CW32又该属于哪些等级?
芯片按照应用环境和性能要求的不同,可以分为不同的级别,包括民用级(消费级)、工业级、车规级、军工级和航天级,一般我们接触不到航天级,这里只给大家作为知识补充。每种级别的芯片在制造工艺、可靠性、性能、测试标准和成本等方面存在显著的区别。
技术探讨 发布时间 : 2024-09-18
武汉芯源半导体有限公司
型号- CW24XX,CW32L052R8,CW32L,CW32L031,CW32L052,CW32L SERIES,CW32系列,CW32F,CW32,CW32F030,CW32L031C8,CW24XX系列,CW32F030C8,CW32F003F4,CW32L052C8,CW32R031C8,CW32R031,CW32F003,CW32L031K8,CW32L031系列,CW32F030K8,CW32L052系列,CW32L032K6,CW32L032E6,CW32L083RB,CW32L083RC,CW32 SERIES,CW32A030C8,CW32F系列,CW32L083系列,CW32L083VC,CW32L083RX,CW32L083,CW32W031R8,CW32F030FX,CW32F030F8,CW32F003E4,CW32L083MC,CW32F SERIES,CW32W031,CW32F030F6,CW32F030 SERIES,CW32L系列,CW32L032F6,CW32L031F8
Application of CW32F003F4P7 Series Products on Level Switches
This intelligent tuning fork material level switch uses CW32F003F4P7 from Wuhan Core Source Semiconductor as the main control chip. As the main control unit of the material level switch, CW32F003F4P7 drives the vibration components to generate a certain oscillation frequency. When there is a change in liquid level, it causes a change in oscillation frequency. CW32F003F4P7 detects this change, outputs a switch signal to the equipment main control unit, and then senses the liquid level situation.
应用方案 发布时间 : 2024-11-07
【产品】武汉芯源CW32L083系列MCU中断系统介绍
本文针对武汉芯源CW32L083系列MCU,同系列产品亦可参考。ARM® Cortex®-M0+内核的嵌套向量中断控制器(NVIC),用于管理中断和异常。NVIC和处理器内核紧密相连,可以实现低延迟的异常和中断处理。
产品 发布时间 : 2022-12-02
CW32L083: ARM® Cortex®-M0+ 32 位低功耗微控制器256K 字节 FLASH,24K 字节 RAM 数据手册 版本号:Rev 1.1
型号- CW32L083XB,CW32L083VCT6,CW32L083XC,CW32L083VC,CW32L083,CW32L083RBT6,CW32L083VCT6X,CW32L083RB
Application of CW32L083 Series MCU in Air Purifiers, Supported by Built in Independent Calibration RTC
The air purifier introduced in this article adopts the CW32L083 series microcontroller as the control core of the air purifier, and combines important components such as sensors, displays, drivers, and wireless transceivers to complete the required functions of the controller system.
应用方案 发布时间 : 2024-11-05
电子商城
现货市场
服务
可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。
最小起订量: 1pcs 提交需求>
可定制波导隔离器频率覆盖5.5GHz~110GHz,插损损低至0.25dB、隔离度、正向方向功率、封装尺寸参数。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论