完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
CH579 ADC采集电压时,接0V测量数值有1120左右,接1.5V测量数值有3100左右,接3.0V测量数值只有3900左右?用示波器测量管脚电压都是正常,但读出来的数据为何如此?
#include "CH57x_common.h" UINT16 abcBuff[40]; volatile UINT8 adclen; void DebugInit(void) { GPIOA_SetBits(GPIO_Pin_9); GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); UART1_DefInit(); } int main() { UINT8 i; signed short RoughCalib_Value=0; // ADC粗调偏差值 /* 配置串口调试 */ DebugInit(); PRINT( "Start @ChipID=%02Xn", R8_CHIP_ID ); /* 单通道采样:选择adc通道9做采样,对应 PA0引脚, 带数据校准功能 */ PRINT( "n2.Single channel sampling...n"); GPIOA_ModeCfg(GPIO_Pin_0, GPIO_ModeIN_Floating); ADC_ExtSingleChSampInit( SampleFreq_3_2, ADC_PGA_1_2 ); /* 注意:数据校准包括 粗调和细调: ADC_DataCalib_Rough() 是粗调函数,调用前需保证PA5引脚配置浮空输入模式,外部没有电压信号,在ADC初始化之后调用,一般调用一次,除非更改了ADC模式(增益改变) ADC_DataCalib_Fine() 是细调函数,对于粗调过的数据进行拟合算法运算,得到更精确数据 */ GPIOA_ModeCfg(GPIO_Pin_5, GPIO_ModeIN_Floating); RoughCalib_Value = ADC_DataCalib_Rough(); // 用于计算ADC内部偏差,记录到全局变量 RoughCalib_Value中 PRINT("=%d n", RoughCalib_Value); while(1) { int sum=0; ADC_ChannelCfg( 9 ); for(i=0; i<21; i++) { abcBuff[i] = ADC_ExcutSingleConver() + RoughCalib_Value; // 连续采样20次 ADC_DataCalib_Fine( &abcBuff[i], ADC_PGA_1_2 ); if(i>=1) {sum += abcBuff[i];} } printf("ADC值:%drn",sum/20); } } |
|
相关推荐
2个回答
|
|
|
去掉校准值也是这个变化趋势,只是数值会小一些
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
347 浏览 0 评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
861 浏览 0 评论
1461 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
3417 浏览 2 评论
2822 浏览 1 评论
安卓手机支持外接otg扩展坞 然后使用ch340+ch9329控制电脑吗
1808浏览 1评论
1461浏览 1评论
348浏览 0评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
863浏览 0评论
468浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 07:12 , Processed in 1.175146 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
712