X12S fixes (not tested)

This commit is contained in:
Raphael Coeffic
2021-07-31 18:46:42 +02:00
parent 4ea1820366
commit 56b30ffa9e
5 changed files with 15 additions and 26 deletions
+7 -3
View File
@@ -76,13 +76,15 @@ const etx_hal_adc_driver_t* etx_hal_adc_driver = nullptr;
0 /*TX_VOLTAGE*/, 0 /*TX_VBAT*/,
0 /*SWB*/, 0 /*SWD*/};
#elif defined(PCBX12S)
const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, -1,1,-1, -1,-1, -1,1, 0,0,0};
#else
#error "ADC driver does not suppport this target"
#endif
uint16_t adcValues[NUM_ANALOGS] __DMA;
#if defined(PCBX10)
#if defined(PCBX10) || defined(PCBX12S)
uint16_t rtcBatteryVoltage;
#endif
@@ -117,7 +119,9 @@ static bool adcSingleRead()
return true;
}
bool adcRead() __attribute__((weak))
// Declare adcRead() weak so it can be re-declared
#pragma weak adcRead
bool adcRead()
{
uint16_t temp[NUM_ANALOGS] = { 0 };
@@ -151,7 +155,7 @@ uint16_t getRTCBatteryVoltage()
{
#if defined(HAS_TX_RTC_VOLTAGE)
return (getAnalogValue(TX_RTC_VOLTAGE) * ADC_VREF_PREC2) / 2048;
#elif defined(PCBX10)
#elif defined(PCBX10) || defined(PCBX12S)
return (rtcBatteryVoltage * 2 * ADC_VREF_PREC2) / 2048;
#elif defined(PCBNV14)
#warning "TODO RTC voltage"
+2 -4
View File
@@ -41,7 +41,7 @@
#endif
// TODO: get rid of this special case
#if defined(PCBX10)
#if defined(PCBX10) || defined(PCBX12S)
extern uint16_t rtcBatteryVoltage;
#endif
@@ -54,8 +54,6 @@ struct etx_hal_adc_driver_t {
bool adcInit(const etx_hal_adc_driver_t* driver);
// void adcDeInit();
// Declare adcRead() weak so it can be re-declared
bool adcRead() __attribute__((weak));
bool adcRead();
uint16_t getRTCBatteryVoltage();
uint16_t getAnalogValue(uint8_t index);
+1
View File
@@ -138,6 +138,7 @@ elseif (PCB STREQUAL X12S)
)
set(FIRMWARE_TARGET_SRC
${FIRMWARE_TARGET_SRC}
../../hal/adc_driver.cpp
x12s_adc_driver.cpp
)
set(BITMAPS_TARGET x12s_bitmaps)
+1 -1
View File
@@ -26,7 +26,7 @@
#include "../common/arm/stm32/stm32_hal_adc.h"
#define ADC_DRIVER stm32_hal_adc_driver
#else
#include "x12_adc_driver.h"
#include "x12s_adc_driver.h"
#define ADC_DRIVER x12s_adc_driver
#endif
+4 -18
View File
@@ -19,9 +19,8 @@
*/
#include "opentx.h"
#include "x12s_adc_driver.h"
uint16_t adcValues[NUM_ANALOGS] __DMA;
uint16_t rtcBatteryVoltage;
#define ADC_CS_HIGH() (ADC_SPI_GPIO->BSRRL = ADC_SPI_PIN_CS)
#define ADC_CS_LOW() (ADC_SPI_GPIO->BSRRH = ADC_SPI_PIN_CS)
@@ -137,11 +136,8 @@ static bool x12s_adc_init()
ADC1->SQR3 = (ADC_Channel_Vbat << 0);
ADC1->SMPR1 = (ADC_SAMPTIME << 0) + (ADC_SAMPTIME << 3) + (ADC_SAMPTIME << 6) + (ADC_SAMPTIME << 9) + (ADC_SAMPTIME << 12) + (ADC_SAMPTIME << 15) + (ADC_SAMPTIME << 18) + (ADC_SAMPTIME << 21) + (ADC_SAMPTIME << 24);
ADC1->SMPR2 = (ADC_SAMPTIME << 0) + (ADC_SAMPTIME << 3) + (ADC_SAMPTIME << 6) + (ADC_SAMPTIME << 9) + (ADC_SAMPTIME << 12) + (ADC_SAMPTIME << 15) + (ADC_SAMPTIME << 18) + (ADC_SAMPTIME << 21) + (ADC_SAMPTIME << 24) + (ADC_SAMPTIME << 27);
}
uint16_t getRTCBatteryVoltage()
{
return (rtcBatteryVoltage * 2 * ADC_VREF_PREC2) / 2048;
return true;
}
const uint16_t adcCommands[MOUSE1+2] =
@@ -229,7 +225,7 @@ bool adcOnChipReadFinished()
// Re-declare adcRead()
// (takes precedence over hal/adc_driver.cpp)
void adcRead()
bool adcRead()
{
uint16_t temp[NUM_ANALOGS-MOUSE1] = { 0 };
uint8_t noInternalReads = 0;
@@ -268,19 +264,9 @@ void adcRead()
if (isVBatBridgeEnabled()) {
rtcBatteryVoltage = ADC1->DR;
}
}
#if !defined(SIMU)
const int8_t ana_direction[NUM_ANALOGS] = {1,-1,1,-1, -1,1,-1, -1,-1, -1,1, 0,0,0};
uint16_t getAnalogValue(uint8_t index)
{
if (ana_direction[index] < 0)
return 4095 - adcValues[index];
else
return adcValues[index];
return true;
}
#endif // #if !defined(SIMU)
//TODO: implement these based on stm32_hal_adc.cpp
//static bool x12s_adc_init();