完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
建议参考一下例程,因为cubeMx只是生成底层库...
RepositorySTM32Cube_FW_L4_V1.10.0ProjectsSTM32L476G_EVALExamplesADCADC_DMA_Transfer /* ### - 2 - Start calibration ############################################ */ if (HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_SINGLE_ENDED) != HAL_OK) { Error_Handler(); }
最佳答案
|
|
|
|
|
|
上楼程序和CubeMx中配置了ADC1和ADC2,时钟为12M经过了2分频。不管使用哪路ADC,均存在误差。main函数无他,直接DMA处理AD转换,间隔时间比较长。
|
|
|
|
|
|
|
|
问题如下:
1、使用12位的AD,误差接近50mV; 2、用示波器测试基准为3.28V(虽然没有3.3V但是3.28V还是比较稳,无干扰征兆); 3、示波器检测VDD,VSS均很稳定,无干扰现象; 4、测试单片机的AD输入端,TEMP1,也很平稳,没发现干扰; 5、用VSS直接并到TEMP1,AD转换结果为0x000; 6、用VDD并到TEMP1,测试的结果并不为OxFFF,而是0xFBE附近; |
|
|
|
自己的一些疑问:
一、STM32F103系列的AD转换,存在一个校准的过程,也就是在程序刚开始必须进行自校准,然后开启AD转换。但是STM32L476用CubeMx生成的库函数,仔细查看后没有留下相关的校准函数,目前还有待思考该过程? 二、外围电路,包括基准和跟随还有阻抗匹配,没有发现不良现象,不知道有没有大神提供一下思路? 三、目前不清楚是硬件原因还是软件原因导致12位AD误差接近50mV.希望大神伸出援助之手! |
|
|
|
arikey 发表于 2018-8-20 09:54 |
|
|
|
本帖最后由 wenyangzeng 于 2018-4-2 16:49 编辑 ADC_SAMPLETIME_6CYCLES_5 采样时间好像太短了,就4个输入ADC,统一使用ADC1设置4个不同通道就够了, |
|
|
|
((TIME) == ADC_SAMPLETIME_28CYCLES)
((TIME) == ADC_SAMPLETIME_56CYCLES) ((TIME) == ADC_SAMPLETIME_84CYCLES) ((TIME) == ADC_SAMPLETIME_112CYCLES) ((TIME) == ADC_SAMPLETIME_144CYCLES) ((TIME) == ADC_SAMPLETIME_480CYCLES) 可以放到最大 |
|
|
|
测量 一下电路上的电压,看看是不是输入就是如此
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32进行DMA数据转运,为什么只有A组最后一位数据被转运到B组去?
501 浏览 1 评论
1377 浏览 3 评论
1022 浏览 0 评论
嵌入式开发 Win11安装ST-Link 提示 设备描述符请求失败 怎么处理?
1157 浏览 0 评论
1443 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-12 03:23 , Processed in 0.785281 second(s), Total 93, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191