完善资料让更多小伙伴认识你,还能领取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) 可以放到最大 |
|
|
|
测量 一下电路上的电压,看看是不是输入就是如此
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1359 浏览 0 评论
国产NSI1300D05-DSWVR放大芯片放大增益8.2或41的问题
1337 浏览 0 评论
STM32串口接受中断使用C++STL中的queue导致所有中断失效
8887 浏览 1 评论
3624 浏览 0 评论
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
1565 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-6 12:44 , Processed in 0.621467 second(s), Total 57, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191