完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM8S103 两路ADC单次转换AD值不对,分别为第2路、第5路,单独采集任何一路AD值都正常正确,但两路轮询就两路AD值都不正确。
void ADC_Data_Read(unsigned int *AD_Value,unsigned char ch) { ADC_CR1_bit.ADON = 0; ADC_CSR_bit.CH=ch; delay(1000); ADC_CR1_bit.ADON = 1; //启动ADC delay(1000); ADC_CR1_bit.ADON = 1; //启动ADC while(ADC_CSR_bit.EOC == 0); //等待转换结束 *AD_Value = ADC_DRH; //先读取高8位 *AD_Value = (unsigned int)((*AD_Value << 8) + ADC_DRL); ADC_CSR_bit.EOC=0; } while(1) { delay(1300); ADC_Data_Read( adc_2,2); delay(1300); ADC_Data_Read( adc_6,6); } |
|
相关推荐
1个回答
|
|
STM8S103两路ADC单次转换AD值不对的原因可能有以下几点:
1. 采样时间不足:在进行ADC转换时,需要确保每个通道的采样时间足够长,以便获得准确的AD值。如果采样时间太短,可能会导致AD值不准确。 2. 通道切换延迟不足:在进行多通道ADC转换时,需要在切换通道时留出足够的时间,以便ADC能够稳定并准备好下一个通道的转换。如果切换速度过快,可能会导致AD值不准确。 3. 电源和模拟地线不稳定:如果电源和模拟地线不稳定,可能会影响ADC的转换精度。确保电源和模拟地线稳定且无干扰。 4. 外部干扰:外部电磁干扰可能会影响ADC的转换结果。检查电路板布局,确保ADC输入信号线远离可能产生干扰的元件。 5. 程序逻辑问题:检查程序逻辑,确保在进行多通道ADC转换时,正确地设置了通道和采样时间。 针对以上可能的原因,可以尝试以下解决方案: 1. 增加采样时间:在ADC_Data_Read函数中,增加delay时间,确保每个通道的采样时间足够长。 2. 优化通道切换逻辑:在切换通道时,增加适当的延时,确保ADC有足够的时间稳定并准备好下一个通道的转换。 3. 检查电源和模拟地线:确保电源和模拟地线稳定且无干扰。如果需要,可以使用去耦电容来提高稳定性。 4. 减少外部干扰:检查电路板布局,确保ADC输入信号线远离可能产生干扰的元件。如果需要,可以使用屏蔽电缆来减少干扰。 5. 检查程序逻辑:仔细检查程序逻辑,确保在进行多通道ADC转换时,正确地设置了通道和采样时间。 6. 检查硬件连接:确保ADC输入信号线连接正确,没有松动或接触不良。 通过以上方法,应该能够解决STM8S103两路ADC单次转换AD值不对的问题。如果问题仍然存在,建议进一步检查硬件和软件,或者寻求专业人士的帮助。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
554浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 12:04 , Processed in 0.944870 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号