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


主要有两个疑问:

  1.  既然是单通道采样, 为何需要这行代码:  GPIOA_ModeCfg( GPIO_Pin_5, GPIO_ModeIN_Floating );

  2. 如何根据 abcBuff[i] 的值换算出实际电压呢?

1、GPIOA_ModeCfg( GPIO_Pin_5, GPIO_ModeIN_Floating ); 这句话原本是进行数据校准的,最新的EVT包已修改为其他通道,这句话可以删除不要。

2、根据测量电压范围选择增益,然后按照公式可计算出电压值。

1.png


感谢


只有登录才能回复,可以选择微信账号登录