Jelajahi Sumber

Fix voltage measurements

anfractuosity 2 tahun lalu
induk
melakukan
2693876f6f
1 mengubah file dengan 7 tambahan dan 6 penghapusan
  1. 7 6
      scenes/scope_scene_run.c

+ 7 - 6
scenes/scope_scene_run.c

@@ -1,3 +1,4 @@
+#include <float.h>
 #include <furi.h>
 #include <furi.h>
 #include <furi_hal.h>
 #include <furi_hal.h>
 #include <furi_hal_resources.h>
 #include <furi_hal_resources.h>
@@ -21,7 +22,7 @@
 #define VAR_CONVERTED_DATA_INIT_VALUE_16BITS    (0xFFFF + 1U)
 #define VAR_CONVERTED_DATA_INIT_VALUE_16BITS    (0xFFFF + 1U)
 #define __ADC_CALC_DATA_VOLTAGE(__VREFANALOG_VOLTAGE__, __ADC_DATA__)       \
 #define __ADC_CALC_DATA_VOLTAGE(__VREFANALOG_VOLTAGE__, __ADC_DATA__)       \
   ((__ADC_DATA__) * (__VREFANALOG_VOLTAGE__) / DIGITAL_SCALE_12BITS)
   ((__ADC_DATA__) * (__VREFANALOG_VOLTAGE__) / DIGITAL_SCALE_12BITS)
-#define VDDA_APPLI                       ((uint32_t)3300)
+#define VDDA_APPLI                       ((uint32_t)2500)
 
 
 // ramVector found from - https://community.nxp.com/t5/i-MX-Processors/Relocate-vector-table-to-ITCM/m-p/1302304
 // ramVector found from - https://community.nxp.com/t5/i-MX-Processors/Relocate-vector-table-to-ITCM/m-p/1302304
 // the aligned aspect is key!
 // the aligned aspect is key!
@@ -50,8 +51,8 @@ static DMA_HandleTypeDef hdma_adc1;
 static TIM_HandleTypeDef htim2;
 static TIM_HandleTypeDef htim2;
 
 
 __IO uint16_t aADCxConvertedData[ADC_CONVERTED_DATA_BUFFER_SIZE];                   // Array that ADC data is copied to, via DMA
 __IO uint16_t aADCxConvertedData[ADC_CONVERTED_DATA_BUFFER_SIZE];                   // Array that ADC data is copied to, via DMA
-__IO uint16_t aADCxConvertedData_Voltage_mVoltA[ADC_CONVERTED_DATA_BUFFER_SIZE];    // Data is converted to range from 0 to 3300
-__IO uint16_t aADCxConvertedData_Voltage_mVoltB[ADC_CONVERTED_DATA_BUFFER_SIZE];    // Data is converted to range from 0 to 3300
+__IO uint16_t aADCxConvertedData_Voltage_mVoltA[ADC_CONVERTED_DATA_BUFFER_SIZE];    // Data is converted to range from 0 to 2500
+__IO uint16_t aADCxConvertedData_Voltage_mVoltB[ADC_CONVERTED_DATA_BUFFER_SIZE];    // Data is converted to range from 0 to 2500
 __IO uint8_t ubDmaTransferStatus = 2;                                               // DMA transfer status
 __IO uint8_t ubDmaTransferStatus = 2;                                               // DMA transfer status
 
 
 __IO uint16_t *mvoltWrite = &aADCxConvertedData_Voltage_mVoltA[0];                  // Pointer to area we write converted voltage data to
 __IO uint16_t *mvoltWrite = &aADCxConvertedData_Voltage_mVoltA[0];                  // Pointer to area we write converted voltage data to
@@ -151,7 +152,7 @@ static void MX_ADC1_Init(void)
     }
     }
     sConfig.Channel = ADC_CHANNEL_1;
     sConfig.Channel = ADC_CHANNEL_1;
     sConfig.Rank = ADC_REGULAR_RANK_1;
     sConfig.Rank = ADC_REGULAR_RANK_1;
-    sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLE_5;
+    sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
     sConfig.SingleDiff = ADC_SINGLE_ENDED;
     sConfig.SingleDiff = ADC_SINGLE_ENDED;
     sConfig.OffsetNumber = ADC_OFFSET_NONE;
     sConfig.OffsetNumber = ADC_OFFSET_NONE;
     sConfig.Offset = 0;
     sConfig.Offset = 0;
@@ -255,7 +256,7 @@ static void app_draw_callback(Canvas * canvas, void *ctx)
     float data[ADC_CONVERTED_DATA_BUFFER_SIZE];
     float data[ADC_CONVERTED_DATA_BUFFER_SIZE];
     float crossings[ADC_CONVERTED_DATA_BUFFER_SIZE];
     float crossings[ADC_CONVERTED_DATA_BUFFER_SIZE];
     float max = 0.0;
     float max = 0.0;
-    float min = 33000.0;
+    float min = FLT_MAX;
     int count = 0;
     int count = 0;
     char buf1[50];
     char buf1[50];
 
 
@@ -402,7 +403,7 @@ void scope_scene_run_on_enter(void* context) {
 
 
     MX_TIM2_Init(period);
     MX_TIM2_Init(period);
 
 
-    // Set VREFBUF, as vref isn't connected to 3.3V itself in the flipper zero
+    // Set VREFBUF to 2.5V, as vref isn't connected to 3.3V itself in the flipper zero
     VREFBUF->CSR |= VREFBUF_CSR_ENVR;
     VREFBUF->CSR |= VREFBUF_CSR_ENVR;
     VREFBUF->CSR &= ~VREFBUF_CSR_HIZ;
     VREFBUF->CSR &= ~VREFBUF_CSR_HIZ;
     VREFBUF->CSR |= VREFBUF_CSR_VRS;
     VREFBUF->CSR |= VREFBUF_CSR_VRS;