打印
[CW32F030系列]

CW32F030内部ADC精度是如何达到惊人的1mV?

[复制链接]
996|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tifmill|  楼主 | 2022-11-17 20:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

CW32F030是基于Cortex-M0+ 内核32位微处理器,内部集成一个 12 位精度,最高 1M SPS 转换速度的逐次逼近型模数转换器;最多支持16通道转换;支持4路参考电压源选择:VDDA、ExRef、内置1.5V参考电压、内置2.5V参考电压;同时内置信号跟随器,能满足高阻抗信号测量需求。






功能框图如下:




在实际应用中ADC采样精度性能指标受多因素影响,要达到ADC的高性能,需要妥善处理硬件和软件。

硬件方面

1.稳定的参考电压源,推荐选用电池或者高性能的稳压源给VDDA供电;2.VDDA引脚并接4.7uF和100nF陶瓷电容到GND,最大程度消除噪声干扰;3.如条件许可,应将信号源和参考电压源以屏蔽线接入到ADC输入通道和VDDA引脚;4.靠近芯片的ADC输入通道引脚附近增加100nF陶瓷电容到GND,消除空间的辐射干扰。

软件方面

1.选择VDDA为参考电压源;2.ADC采样率尽量低,ADC工作时钟可采用128分频,采样周期选择10个;3.在采样转换时,除了ADC模块外 ,其它外设都不要打开,采样数据先缓存在RAM中,采样到一定量的数据后再初始化串口,将数据通过串口发送出来;4.在启动ADC转换后,MCU要进入Sleep休眠状态(MCU停止运行),最大程度的减小噪声。5.ADC转换完成后,转换完成中断唤醒MCU,初始化串口,将ADC转换结果输出。
关键代码设计如下:


//配置ADC
__RCC_ADC_CLK_ENABLE();//ADC初始化ADC_StructInit(&ADC_InitStructure);//ADC工作时钟配置ADC_InitStructure.ADC_ClkDiv = ADC_Clk_Div128; //269Hz
ADC_WdtInit(&ADC_WdtStructure);
//配置单通道转换模式ADC_SingleChStructure.ADC_DiscardEn= ADC_DiscardNull;ADC_SingleChStructure.ADC_Chmux= ADC_ExInputCH0;//选择ADC转换通道,AIN1:PA00ADC_SingleChStructure.ADC_InitStruct= ADC_InitStructure;ADC_SingleChStructure.ADC_WdtStruct= ADC_WdtStructure;
ADC_SingleChOneModeCfg(&ADC_SingleChStructure); //初始化单通道单次采样ADC_ITConfig(ADC_IT_EOC, ENABLE); //使能ADC的EOC中断
ADC_EnableIrq(ADC_INT_PRIORITY);
ADC_ClearITPendingAll();
ADC_Enable(); //ADC模块使能
SysTickDelay(2); //延时2S
CW_ADC->START = 0X01; //启动ADC开始转换
SCB->SCR = 0; // MCU进入Sleep状态__WFI();
本次测试中,配置系统时钟为1M,ADC采样时钟分频比设置为128,采样时钟10个周期,计算ADC的采样率为=1000000/128/29=269Hz。



使用精密稳压电源(GPP-2323)给VDD和VDDA供电,稳压源设置输出电压为3.30V,用普通测试线双绞后接入(如有测试条件建议用同轴线接入),实测引脚电压为3.299V;待测信号源用1节干电池提供,用同轴线接入,实测引脚电压为1.615V。


测试10次,每次测试100个数据,实测结果如下:




由测试结果可以看到,10次共1000次采样,最大采样值为2006,最小采样值为2003,采样值变化仅仅4LSB,集中度非常高。如下图所示:






下面分析一下实际的测试误差。

采样值2006对应:2006*3.299/4095=1.616V

采样值2003对应:2003*3.299/4095=1.614V

和信号源电压1.615V相比,最大相差正负1mV。

可见CW32F030芯片的ADC性能非常好,能满足常规mV级别应用。


使用特权

评论回复
沙发
zerorobert| | 2022-12-2 20:37 | 只看该作者
这个厉害了,12位的ADC,竟然这么准确的。

使用特权

评论回复
板凳
maqianqu| | 2022-12-2 21:26 | 只看该作者
可以使用DMA采样的吗?              

使用特权

评论回复
地板
wilhelmina2| | 2022-12-2 22:33 | 只看该作者
信号存在波动的吗?              

使用特权

评论回复
5
olivem55arlowe| | 2022-12-3 12:52 | 只看该作者
硬件电路好像看不到了,能重新发一下吗。

使用特权

评论回复
6
chenjun89| | 2022-12-3 18:17 | 只看该作者
这个精度确实不错了

使用特权

评论回复
7
albertaabbot| | 2022-12-6 18:30 | 只看该作者
不同的ADC通道之间存在干扰的吗?

使用特权

评论回复
8
329547875| | 2022-12-8 17:12 | 只看该作者
实验室数据

使用特权

评论回复
9
earlmax| | 2022-12-10 10:26 | 只看该作者
这个信号抗干扰这么强的吗?              

使用特权

评论回复
10
sesefadou| | 2022-12-15 09:33 | 只看该作者
1mv都能实现吧,主要是有波动吗?

使用特权

评论回复
11
wilhelmina2| | 2022-12-15 10:20 | 只看该作者
10位的ADC应该都是测量1ms吧。

使用特权

评论回复
12
linfelix| | 2022-12-15 11:30 | 只看该作者
这个有点夸张了吧              

使用特权

评论回复
13
gygp| | 2022-12-15 12:33 | 只看该作者
还是外部的ADC的,这个精度比较高。

使用特权

评论回复
14
maudlu| | 2022-12-15 13:32 | 只看该作者
你的参考电压如果是5V,能够测量到1mv吗?

使用特权

评论回复
15
Undshing| | 2022-12-26 12:07 | 只看该作者
抗干扰这么强吗?

使用特权

评论回复
16
AloneKaven| | 2022-12-26 12:23 | 只看该作者
这是实验室数据吧

使用特权

评论回复
17
su1yirg| | 2023-2-2 16:27 | 只看该作者
精度这么高啊?

使用特权

评论回复
18
t1ngus4| | 2023-2-2 17:31 | 只看该作者
这个行啊,有机会想试试ADC

使用特权

评论回复
19
d1ng2x| | 2023-2-2 18:35 | 只看该作者
这是通过优化算法了吧

使用特权

评论回复
20
zhizia4f| | 2023-2-2 19:38 | 只看该作者
很不错啊,可以用在电源检测方面了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

1332

帖子

0

粉丝