ST意法半导体
直播中

张健

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

STM32F410 Bat电压测量消耗速度有多快?

大家好,
我只是想知道连续测量 VBat 是否会更快耗尽电池电量?速度有多快?
不幸的是,我没有能够测量如此低电流的工具。
我在我的项目中使用 STM32F410CB。我将 adc1(唯一可用的)与通道 0 和 1 一起使用。我使用 DMA 连续请求。
我添加了一块电池并使用相同的 ADC 对其进行了测量。作品
完美。但是我怕连续测量vbat真的会耗尽我的电池。







回帖(1)

h1654155275.5764

2023-1-30 11:24:04
一切正常。这就是我设法做到的



  • while(1)
  • {
  •         HAL_ADC_Start_DMA(&hadc1, (uint32_t*) s_analog_data,
  •                 SAMPLE_SIZE * ANALOG_IN_INDEX_max);
  •       
  •         osDelay(pdMS_TO_TICKS(2));
  •         HAL_ADC_Stop_DMA(&hadc1);
  •       
  •         // suspend the scheduler to prevent race condition of variable
  •         // s_ai_encoder_val, s_ai_second_val and s_ai_bat_voltage_val
  •         vTaskSuspendAll();
  •       
  •         s_ai_encoder_val = get_average(s_analog_data, ANALOG_IN_INDEX_encoder,
  •                         SAMPLE_SIZE);
  •         s_ai_second_val = get_average(s_analog_data, ANALOG_IN_INDEX_second,
  •                         SAMPLE_SIZE);
  •       
  •         if ((xTaskGetTickCount() - last_updated_tick > VBAT_PERIOD_TICK)
  •                         || (0 == s_ai_bat_voltage_val))
  •         {
  •                 last_updated_tick = xTaskGetTickCount();

  •                 ADC_InitTypeDef last_def;
  •                 mAnalogIn_configure_vbat(&last_def);
  •       
  •                 HAL_ADC_Start(&hadc1);
  •                 s_ai_bat_voltage_val = HAL_ADC_GetValue(&hadc1);
  •       
  •                 // Protect against an over and over reading of an
  •                 // not connected battery
  •                 if (0 == s_ai_bat_voltage_val)
  •                 {
  •                         s_ai_bat_voltage_val = 1;
  •                 }
  •       
  •                 mAnalogIn_configure_2_channels(&last_def);
  •         }
  •       
  •         // re-enable scheduler
  •         xTaskResumeAll();
  • }

它遗漏了一些函数定义,但我认为它不言而喻。
举报

更多回帖

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