WCH沁恒单片机
直播中

王银喜

7年用户 2397经验值
私信 关注
[问答]

CH573F的ADC采样如何计算出实际电压?

参考了CH573F官方的ADC示例:
/* 单通道采样:选择adc通道0做采样,对应 PA4引脚, 带数据校准功能 */
PRINT( "n2.Single channel sampling...n" );
GPIOA_ModeCfg( GPIO_Pin_4, GPIO_ModeIN_Floating );
ADC_ExtSingleChSampInit( SampleFreq_3_2, ADC_PGA_0 );

GPIOA_ModeCfg( GPIO_Pin_5, GPIO_ModeIN_Floating );
RoughCalib_Value = ADC_DataCalib_Rough(); // 用于计算ADC内部偏差,记录到全局变量 RoughCalib_Value中
PRINT( "RoughCalib_Value =%d n", RoughCalib_Value );

ADC_ChannelCfg( 0 );
for( i = 0; i < 20; i++ )
{
abcBuff = ADC_ExcutSingleConver() + RoughCalib_Value; // 连续采样20次
}
for( i = 0; i < 20; i++ )
{
PRINT( "%d n", abcBuff ); // 注意:由于ADC内部偏差的存在,当采样电压在所选增益范围极限附近的时候,可能会出现数据溢出的现象
}


主要有两个疑问:

  • 既然是单通道采样, 为何需要这行代码:  GPIOA_ModeCfg( GPIO_Pin_5, GPIO_ModeIN_Floating );
  • 如何根据 abcBuff 的值换算出实际电压呢?


回帖(1)

李秀荣

2022-8-16 09:32:29
1、GPIOA_ModeCfg( GPIO_Pin_5, GPIO_ModeIN_Floating ); 这句话原本是进行数据校准的,最新的EVT包已修改为其他通道,这句话可以删除不要。
2、根据测量电压范围选择增益,然后按照公式可计算出电压值。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分