【经验】解析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系列单片机低功耗模式介绍及UART深度休眠模式示例
CW32单片机低功耗模式介绍及UART深度休眠模式示例。
设计经验 发布时间 : 2023-05-31
ESD测试是什么?武汉芯源的CW32能扛8000V?
ESD测试是确保电子设备在静电放电环境下稳定运行的重要手段之一。通过不断完善测试标准和规范、采用先进的测试设备和技术、加强测试人员的培训和管理等措施,可以进一步提高测试结果的准确性和可靠性。
设计经验 发布时间 : 2024-08-21
CW32数字电压电流表软件教程之ADC采样及显示
本文介绍了ADC基础知识。ADC(模拟数字转换器)是一种将模拟信号转换为数字信号的电子元件。常见的模数转换器是将一个输入电压信号转换为一个输出的数字信号。CW32F003万用表内部集成了一个 12 位精度、最高 1M SPS 的逐次逼近型模数转换器 (SAR ADC),最多可将 16 路模拟信号转换为数字信号。
设计经验 发布时间 : 2024-07-11
【技术】武汉芯源CW32单片机UART基本数据收发功能介绍
通用异步收发器是一种通用串行数据总线,常用于系统内各子模块间的数据交换。本文将以武汉芯源推出的CW32系列单片机的CW32L083为例,介绍UART基本数据收发功能。
技术探讨 发布时间 : 2023-04-25
武汉芯源半导体成功举行无锡地区CW32线下技术交流研讨会
2024年7月12日,武汉芯源半导体在无锡成功举办CW32系列MCU技术研讨会,吸引两轮车仪表及电动工具行业客户。孙秀艳总监展示企业实力,李家庆与李芳老师深入讲解产品应用,促进行业合作与技术创新,推动CW32 MCU在多个领域的应用。
厂牌及品类 发布时间 : 2024-08-19
武汉芯源(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
基于CW32的无刷直流空心杯电机有感控制驱动方案
空心杯电机(Hollow-Cup Motor)是一种特殊类型的微型无刷直流电机,具有空心的旋转部分。它通常由外部固定的外壳和内部旋转的空心杯组成。空心杯电机具有较高的功率密度和扭矩输出,适用于一些特定的应用场景,如精密仪器、机器人、医疗设备等。空心杯电机的工作原理是基于无刷直流电机的原理。它采用无刷电机的结构,包括定子(固定部分)和转子(旋转部分)。
应用方案 发布时间 : 2024-05-16
基于CW32的无刷直流空心杯电机无感方波控制驱动方案
本方案采用CW32F030C8T6作为主控芯片,采用无感方波控制算法控制无刷直流空心杯电机。CW32F030C8T6是一款高性能、低功耗的32位微控制器,具有丰富的片上外设资源,可以适合用于电机控制。无感方波控制算法是一种简单有效的电机控制算法,不需要使用霍尔传感器,可以降低硬件成本。
应用方案 发布时间 : 2024-04-23
武汉芯源半导体有限公司
型号- 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
武汉芯源CW32系列单片机数字电压电流表产品硬件设计指南
本文基于武汉芯源CW32系列单片机,介绍数字电压电流表产品硬件设计指南,希望对各位工程师有所帮助。
设计经验 发布时间 : 2024-06-20
【经验】武汉芯源CW32系列MCU芯片低功耗模式的特性介绍
武汉芯源CW32系列芯片支持3种工作模式,运行模式、休眠模式以及深度休眠模式,本文以CW32L083为例介绍低功耗模式的特性。
设计经验 发布时间 : 2023-01-03
使用通用串口模块下载CW32F030芯片的方法
在常见的客户技术支持中,常有需要串口下载CW32芯片的问题,现整理一份文档供参考。
设计经验 发布时间 : 2024-07-20
CW32L083: ARM® Cortex®-M0+ 32 位低功耗微控制器256K 字节 FLASH,24K 字节 RAM 数据手册 版本号:Rev 1.1
型号- CW32L083XB,CW32L083VCT6,CW32L083XC,CW32L083VC,CW32L083,CW32L083RBT6,CW32L083VCT6X,CW32L083RB
电子商城
现货市场
服务
可烧录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 提交需求>
可定制均温板VC最薄0.4mm,有效导热系数超5,000 W / m·K(纯铜(401 W/m·K ,石墨烯1,200 W/m·K)。工作温度范围同时满足低于-250℃和高于2000℃的应用,定制最低要求,项目年采购额大于10万人民币,或采购台套数大于2000套。
提交需求>
登录 | 立即注册
提交评论