5867|5

85

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【ESP32-C3-DevKitM-1】ESP32-C3的ADC [复制链接]

 

ADC的评测

ESP-C3ADC有两个,5通道的已校准的ADC11通道的未校准的ADC2,采样速率为200KspsDHLINL分别为±7LSB和±12LSB,只能说达到了够用的级别。

按照之前的方法,新建一个工程,添加模板,如下图,然后编译运行

这里要注意一点,选择模板的时候要选择esp32-c3中的adc例程,而不是single-read中的adc例程。

例程中包含用DMA传输数据和普通的,我接下来是测试普通的ADC采样。

我稍微改动了一下ESP-IDF提供的例程,这样更好讲,如下图

我讲一下基本流程。

  1. adc1_config_width(ADC_WIDTH_BIT_12);  这句为配置ADC1的位数,可为9-12
  2. adc1_config_channel_atten(ADC1_CHANNEL_4, ADC_ATTEN_DB_11);这句是配置通道和衰减数,通道4的话对应的就是GPIO4adc_atten_t衰减系数有4种,相对应有4种不同的电压测量范围,如下图,所以要选择合适的系数

  1. 要进行电压校准

adc_chars = calloc(1, sizeof(esp_adc_cal_characteristics_t));

esp_adc_cal_characterize(ADC_UNIT_1,ADC_ATTEN_DB_11, ADC_WIDTH_BIT_12, 1100, adc_chars);

首先先用calloc申请一段内存,然后调用esp_adc_cal_characterize API,具体的输入参数可以看API介绍,其中第四个参数是默认的参考电压,ESP32-C3的参考电压为1100mv,但是我发现一个问题,第四个参数其实填什么数字都可以,比如0mv或者3300mv,并不会影响其结果。

  1. 进行读取ADC原始数值

adc_reading= adc1_get_raw(ADC1_CHANNEL_4);

  1. 进行数据转换

这里本来我是想用以前的ADC数值转换的思想,就是原始数据直接乘上一个系数,后来发现数据相差较大,经过询问官方技术后,得知要用esp_adc_cal_raw_to_voltage(adc_reading, adc_chars);转换为真实数据,因为还需要引入存有校准数据的adc_chars,最后打印出来

 

实际测试

精度还是能接受的,可能输入DC-DC电源也有一些影响。

还有一点,最好不要超推荐量程工作,比如在衰减11db时,ADC最高能测3000mv左右,推荐为2600mv,当越到后面差的越大,可能有50-100mv的误差。

最新回复

有DMA的ADC吗?没找到唉。在S系列里面DMA都是给IIS的,要想用ADC的DMA就必须走IIS曲线实现。但IIS工程好像并不支持C3系列   详情 回复 发表于 2021-7-1 22:25
点赞 关注(1)
 
 

回复
举报

9795

帖子

24

TA的资源

版主

沙发
 

芯片虽然便宜 但是该有的功能还是都有的
ADC测量2600mV以上误差较大问题数据手册里说了吗?

点评

确实 该有的都有的,性价比蛮高的 在在线编程手册有提及 [attachimg]547705[/attachimg]  详情 回复 发表于 2021-7-2 10:24
 
 
 

回复

6828

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 

第四个参数其实填什么数字都可以,

因为它是默认的电压

 
 
 

回复

111

帖子

0

TA的资源

一粒金砂(中级)

4
 

有DMA的ADC吗?没找到唉。在S系列里面DMA都是给IIS的,要想用ADC的DMA就必须走IIS曲线实现。但IIS工程好像并不支持C3系列

点评

[attachimg]547627[/attachimg]这里面的continuous_read就是DMA的ADC例程  详情 回复 发表于 2021-7-1 22:34
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(高级)

5
 
tinnu 发表于 2021-7-1 22:25 有DMA的ADC吗?没找到唉。在S系列里面DMA都是给IIS的,要想用ADC的DMA就必须走IIS曲线实现。但IIS工程好像 ...

这里面的continuous_read就是DMA的ADC例程

 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(高级)

6
 
littleshrimp 发表于 2021-7-1 22:03 芯片虽然便宜 但是该有的功能还是都有的ADC测量2600mV以上误差较大问题数据手册里说了吗?

确实 该有的都有的,性价比蛮高的

在在线编程手册有提及

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表