OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 200|回复: 4

请教一下,STM32G030AD零点为啥偏了100多?

[复制链接]

1

主题

9

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2020-8-13
在线时间
17 小时
发表于 2025-5-20 10:35:29 | 显示全部楼层 |阅读模式
1金钱
请教大家,STM32G030AD值零点为啥偏了100多,两个输入口都是,对地短路AD值稳定在109。程序没有执行AD校准,不知道为啥执行HAL库校准函数失败,执行后AD都出不来了
AD初始化程序是用Cube产生的,对HAL库也不熟,不知道问题出在哪里,按理说,即使不校准也不至于偏差那么多吧?我过那么多单片机还真碰过
麻烦大家帮忙看下是哪里的问题
void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};
  if(adcHandle->Instance==ADC1)
  {
  /* USER CODE BEGIN ADC1_MspInit 0 */

  /* USER CODE END ADC1_MspInit 0 */
    LL_RCC_SetADCClockSource(LL_RCC_ADC_CLKSOURCE_SYSCLK);

    /* ADC1 clock enable */
    __HAL_RCC_ADC_CLK_ENABLE();

    __HAL_RCC_GPIOB_CLK_ENABLE();
    /**ADC1 GPIO Configuration
    PB0     ------> ADC1_IN8
    PB1     ------> ADC1_IN9
    PB2     ------> ADC1_IN10
    */
    GPIO_InitStruct.Pin = AD_L_Pin|AD_R_Pin|AD_BT_Pin;
    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  /* USER CODE BEGIN ADC1_MspInit 1 */
                 

  /* USER CODE END ADC1_MspInit 1 */
  }
}

--------------------------------------------------------------------------------------------
void MX_ADC1_Init(void)
{

  /* USER CODE BEGIN ADC1_Init 0 */

  /* USER CODE END ADC1_Init 0 */

  ADC_ChannelConfTypeDef sConfig = {0};

  /* USER CODE BEGIN ADC1_Init 1 */

  /* USER CODE END ADC1_Init 1 */

  /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
  */
  hadc1.Instance = ADC1;
  hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV64;
  hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
  hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  hadc1.Init.LowPowerAutoWait = DISABLE;
  hadc1.Init.LowPowerAutoPowerOff = DISABLE;
  hadc1.Init.ContinuousConvMode = DISABLE;
  hadc1.Init.NbrOfConversion = 1;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  hadc1.Init.DMAContinuousRequests = DISABLE;
  hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
  hadc1.Init.SamplingTimeCommon1 = ADC_SAMPLETIME_160CYCLES_5;
  hadc1.Init.SamplingTimeCommon2 = ADC_SAMPLETIME_160CYCLES_5;
  hadc1.Init.OversamplingMode = DISABLE;
  hadc1.Init.TriggerFrequencyMode = ADC_TRIGGER_FREQ_HIGH;
  if (HAL_ADC_Init(&hadc1) != HAL_OK)
  {
    Error_Handler();
  }

  /** Configure Regular Channel
  */
  sConfig.Channel = ADC_CHANNEL_8;
  sConfig.Rank = ADC_REGULAR_RANK_1;
  sConfig.SamplingTime = ADC_SAMPLETIME_160CYCLES_5;
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN ADC1_Init 2 */
//        HAL_ADCEx_Calibration_Start(&hadc1);
        if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)
  {
    /* Calibration Error */
    Error_Handler();
        }

  /* USER CODE END ADC1_Init 2 */

}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2020-8-13
在线时间
17 小时
 楼主| 发表于 2025-5-20 10:37:06 | 显示全部楼层
执行  if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)会进入 Error_Handler();校准失败
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2020-8-13
在线时间
17 小时
 楼主| 发表于 2025-5-20 10:42:29 | 显示全部楼层
付上原理图,VREF+跟VDD接一起,电池供电,3VLDO
微信截图_20250520103914.png
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2020-8-13
在线时间
17 小时
 楼主| 发表于 2025-5-20 10:45:31 | 显示全部楼层
AD采样程序
                        sConfig.Channel = ADC_CHANNEL_8;
                        sConfig.Rank = ADC_REGULAR_RANK_1;
                        sConfig.SamplingTime = ADC_SAMPLETIME_160CYCLES_5;
                        HAL_ADC_ConfigChannel(&hadc1, &sConfig);       
                        HAL_ADC_Start (&hadc1);
                        HAL_ADC_PollForConversion(&hadc1,100);
                        AD_Value_L_Sum+=HAL_ADC_GetValue(&hadc1);
                       
                        sConfig.Channel = ADC_CHANNEL_9;
                        sConfig.Rank = ADC_REGULAR_RANK_1;
                        sConfig.SamplingTime = ADC_SAMPLETIME_160CYCLES_5;
                        HAL_ADC_ConfigChannel(&hadc1, &sConfig);       
                        HAL_ADC_Start (&hadc1);
                        HAL_ADC_PollForConversion(&hadc1,100);
                        AD_Value_R_Sum+=HAL_ADC_GetValue(&hadc1);
                       
                        sConfig.Channel = ADC_CHANNEL_10;
                        sConfig.Rank = ADC_REGULAR_RANK_1;
                        sConfig.SamplingTime = ADC_SAMPLETIME_160CYCLES_5;
                        HAL_ADC_ConfigChannel(&hadc1, &sConfig);       
                        HAL_ADC_Start (&hadc1);
                        HAL_ADC_PollForConversion(&hadc1,100);
                        AD_Value_BT_Sum+=HAL_ADC_GetValue(&hadc1);
                       
                        if(++ADC_Sample_Index>=64)
                        {
                                ADC_Sample_Index=0;
                                AD_Value_L=AD_Value_L_Sum/64;
                                AD_Value_R=AD_Value_R_Sum/64;
                                AD_Value_BT=AD_Value_BT_Sum/64;
                               
                                AD_Value_L_Sum=0;
                                AD_Value_R_Sum=0;
                                AD_Value_BT_Sum=0;
                               
                                for(i=9;i>0;i--)
                                        AD_Value_BT_Buf[i]=AD_Value_BT_Buf[i-1];
                                AD_Value_BT_Buf[0]=AD_Value_BT;
                               
                                for(i=0;i<10;i++)
                                        AD_Value_BT_Sum+=AD_Value_BT_Buf[i];
                                AD_Value_BT_Equal=AD_Value_BT_Sum/10;
                                AD_Value_BT_Sum=0;
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2025-5-24 22:33:07 | 显示全部楼层
自己画的板子?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-6 22:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表