【经验】解析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),将其测量的模拟量转化为可输出的数字量。
CW32数字电压电流表软件教程之ADC采样及显示
本文介绍了ADC基础知识。ADC(模拟数字转换器)是一种将模拟信号转换为数字信号的电子元件。常见的模数转换器是将一个输入电压信号转换为一个输出的数字信号。CW32F003万用表内部集成了一个 12 位精度、最高 1M SPS 的逐次逼近型模数转换器 (SAR ADC),最多可将 16 路模拟信号转换为数字信号。
【经验】芯源CW32系列单片机低功耗模式介绍及UART深度休眠模式示例
CW32单片机低功耗模式介绍及UART深度休眠模式示例。
基于CW32L010的低成本工业仪表应用
CW32L010集成了主频高达48MHz的 ARM® Cortex®-M0+内核,64K超大Flash存储容量,极限超低功耗0.3μA,85℃高温漏电仅1.2μA,全面升级的低功耗串口,支持LIN、RS485硬件使能,16路ADC输入2M采样率,采样保持时间可独立配置。在工业仪表上应用更有优势。
使用JLink烧录CW32程序
本篇主要介绍使用JLink烧录CW32程序。
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.
武汉芯源半导体邀您相约CITE2024中国电子信息博览会
CITE2024第十二届中国电子信息博览会将于2024年4月9-11日在深圳福田会展中心隆重开展,武汉芯源半导体将为电子行业参观者展示智能指纹锁、麦克风、燃气表、LED调光板、可燃气体报警器、筋膜枪、角磨机、血氧仪、温控器、BLDC无刷电机、永磁同步电机无感FOC控制方案等多款CW32单片机典型应用方案,诚邀您莅临9B122武汉芯源半导体展位参观交流!
【应用】基于CW32的无刷水泵控制系统,使水泵更加节能、高效
本课题研究的目的是设计一套基于CW32的无位置传感器无刷直流电机控制系统,既可以改进水泵的工作模式,使水泵工作点最优;又可以使水泵电机结构简单,控制方式更为灵活。以此将整个系统加入各个不同场景中,让CW32低功耗优点,能让水泵共更加节能,高效。
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.
【技术】武汉芯源CW32单片机UART基本数据收发功能介绍
通用异步收发器是一种通用串行数据总线,常用于系统内各子模块间的数据交换。本文将以武汉芯源推出的CW32系列单片机的CW32L083为例,介绍UART基本数据收发功能。
【经验】芯源CW32系列MCU电容式触摸按键设计指南
芯源半导体的CW32系列MCU电容式触摸按键设计指南向客户提供利用CW32内部资源结合软件编程实现电容式触摸按键有效触摸检测的方法。本指南内容重点在于工作原理、软件检测过程以及调试指引。通过本文可了解到如何利用内置电压比较器和内置定时器及软件配合,实现灵活方便的按键检测。在介绍标准演示板和演示软件的性能参数同时,还会给出详细的调试建议以及设计参数选择倾向分析,帮助客户快速自信地完成设计并实施调试。
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.
【经验】武汉芯源半导体CW32系列微控制器如何进入ISP模式以及ISP协议详解
武汉芯源半导体CW32系列微控制器片上FLASH存储器有一部分区域用于存储BootLoader启动程序,用户可利用BootLoader启动程序提供的ISP模式,通过UART串口方便地实现对CW32微控制器片上FLASH主存储器的擦除和烧写。
【技术】武汉芯源CW32定时器输入捕获的操作讲解
CW32系列MCU的GTIM、ATIM的每个定时器都带有至少4路独立的捕获/比较通道,输入捕获功能可以测量输入信号的脉冲宽度或者频率。本文进行武汉芯源CW32定时器输入捕获的操作讲解。
【CW32模块使用】ADS1115多路模数转换器
ADS1115是16位ADC,支持IIC通信,适用于传感器测量。它提供高数据速率和可编程增益放大器,可在连续或单次转换模式下工作。通过在CW32F030C8T6开发板上的移植,实现了4路ADC电压采集。移植包括配置IIC通信和寄存器设置,以及编写相应的初始化和数据读写函数。实际测试验证了其性能。
电子商城
现货市场
服务
可定制电机的连续转矩范围1Nm至2000Nm,峰值转矩3Nm至5500Nm,电机延长线长度、变换编码器类型。
最小起订量: 1 提交需求>
可来图定制均温板VC尺寸50*50mm~600*600 mm,厚度1mm~10mm,最薄0.3mm。当量导热系数可达10000W/M·K,散热量可达10KW, 功率密度可达50W/cm²。项目单次采购额需满足1万元以上,或年需求5万元以上。
提交需求>
登录 | 立即注册
提交评论