fix(v14): incorrect switch definition and add v12/v14 battery voltage sensing (#6155)

Co-authored-by: Richard Li <richard.li@ces.hk>
This commit is contained in:
helloradiosky
2025-05-12 14:11:06 +10:00
committed by GitHub
co-authored by Richard Li
parent 1890d09ba0
commit f6631f5574
8 changed files with 60 additions and 25 deletions
@@ -158,6 +158,15 @@ if(FLYSKY_GIMBAL)
add_definitions(-DFLYSKY_GIMBAL)
endif()
if(CSD203_SENSOR)
set(FIRMWARE_SRC ${FIRMWARE_SRC}
targets/common/arm/stm32/csd203_sensor.cpp
)
add_definitions(-DCSD203_SENSOR)
message("-- Adding support for Current sensor")
endif()
if(DEBUG OR CLI OR USB_SERIAL)
add_definitions(-DUSB_SERIAL)
message("-- Adding support for USB serial")
@@ -34,6 +34,7 @@
#include "stm32_hal.h"
#include "stm32_hal_ll.h"
#include "stm32_i2c_driver.h"
#include "hal/i2c_driver.h"
// clang-format off
/* CSD203 Regsistor map */
@@ -203,7 +204,7 @@ bool I2C_CSD203_WriteRegister(uint8_t I2C_ADDR, uint8_t reg, uint8_t *buf,
}
}
if (stm32_i2c_master_tx(TOUCH_I2C_BUS, I2C_ADDR, uAddrAndBuf, len + 1, 100) <
if (stm32_i2c_master_tx(I2C_Bus_1, I2C_ADDR, uAddrAndBuf, len + 1, 100) <
0) {
TRACE("I2C B1 ERROR: WriteRegister failed");
return false;
@@ -218,12 +219,12 @@ bool I2C_CSD203_ReadRegister(uint8_t I2C_ADDR, uint8_t reg, uint8_t *buf,
// uRegAddr[0] = (uint8_t)((reg & 0xFF00) >> 8);
uRegAddr[0] = (uint8_t)(reg & 0x00FF);
if (stm32_i2c_master_tx(TOUCH_I2C_BUS, I2C_ADDR, uRegAddr, 1, 100) < 0) {
if (stm32_i2c_master_tx(I2C_Bus_1, I2C_ADDR, uRegAddr, 1, 100) < 0) {
TRACE("I2C B1 ERROR: ReadRegister write reg address failed");
return false;
}
if (stm32_i2c_master_rx(TOUCH_I2C_BUS, I2C_ADDR, buf, len, 100) < 0) {
if (stm32_i2c_master_rx(I2C_Bus_1, I2C_ADDR, buf, len, 100) < 0) {
TRACE("I2C B1 ERROR: ReadRegister read reg address failed");
return false;
}
@@ -317,6 +318,19 @@ uint16_t CSD203_ReadManufacturerID(CSD_CONFIG *CSD203_CFG)
return Data;
}
void IICcsd203init(void)
{
if (i2c_init(I2C_Bus_1) < 0) {
return; //err
}
}
void ReIICcsd203init(void)
{
if (i2c_init(I2C_Bus_1) < 0) {
return; //err
}
}
void initCSD203(void)
{
CSD203MainInitFlag = false;
@@ -21,5 +21,6 @@
#pragma once
void IICcsd203init(void);
void initCSD203(void);
void readCSD203(void);
+1 -5
View File
@@ -132,7 +132,7 @@ if (PCB STREQUAL X10)
set(INTERNAL_GPS_BAUDRATE "9600" CACHE STRING "Baud rate for internal GPS")
set(FLEXSW "2" CACHE STRING "Max flex inputs usable as switches")
set(AUX2_SERIAL OFF)
set(HAS_CSD203_SENSOR ON)
set(CSD203_SENSOR ON)
set(FLYSKY_GIMBAL ON)
if (BLUETOOTH)
set(AUX_SERIAL OFF)
@@ -357,10 +357,6 @@ if(USB_CHARGER)
target_sources(board PRIVATE ${TARGET_SRC_DIR}/usb_charger_driver.cpp)
endif()
if(HAS_CSD203_SENSOR)
set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} csd203_sensor.cpp)
add_definitions(-DCSD203_SENSOR)
endif()
set(FIRMWARE_SRC
${FIRMWARE_SRC}
targets/common/arm/loadboot.cpp
+2
View File
@@ -406,6 +406,7 @@ elseif(PCB STREQUAL X7)
add_definitions(-DSTM32_SUPPORT_32BIT_TIMERS)
set(PXX2 ON)
set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough")
set(CSD203_SENSOR ON)
if (NOT BLUETOOTH)
set(AUX_SERIAL ON)
endif()
@@ -421,6 +422,7 @@ elseif(PCB STREQUAL X7)
add_definitions(-DSTM32_SUPPORT_32BIT_TIMERS)
set(PXX2 ON)
set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough")
set(CSD203_SENSOR ON)
set(FLYSKY_GIMBAL ON)
if (NOT BLUETOOTH)
set(AUX_SERIAL ON)
+9
View File
@@ -60,6 +60,10 @@
#include "bluetooth_driver.h"
#endif
#if defined(CSD203_SENSOR)
#include "csd203_sensor.h"
#endif
HardwareOptions hardwareOptions;
#if !defined(BOOT)
@@ -154,6 +158,11 @@ void boardInit()
#endif
#endif
#if defined(CSD203_SENSOR)
IICcsd203init();
initCSD203();
#endif
// If the radio was powered on by dual use USB, halt the boot process, let battery charge
// TODO: needs refactoring if any other manufacturer implements either of the following:
// - function switches and the radio supports charging
+20 -16
View File
@@ -674,7 +674,10 @@
#define SWITCHES_GPIO_REG_A GPIOD
#define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_0 // PD.00
#elif defined(RADIO_V14) || defined(RADIO_V12)
// ADC based switch
#define STORAGE_SWITCH_A
#define HARDWARE_SWITCH_A
#define SWITCHES_GPIO_REG_A GPIOC
#define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_13 // PC.13
#elif defined(PCBX7)
#define SWITCHES_GPIO_REG_A_L GPIOE
#define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_7 // PE.07
@@ -890,7 +893,10 @@
#elif defined(RADIO_GX12)
#define SWITCHES_D_2POS
#elif defined(RADIO_V14) || defined(RADIO_V12)
// ADC based switch
#define STORAGE_SWITCH_D
#define HARDWARE_SWITCH_D
#define SWITCHES_GPIO_REG_D GPIOE
#define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_8 // PE.08
#elif defined(PCBX7) && !defined(RADIO_COMMANDO8)
#define SWITCHES_GPIO_REG_D_L GPIOE
#define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_1 // PE.01
@@ -963,8 +969,7 @@
#elif defined(RADIO_GX12)
#define SWITCHES_E_3POS
#elif defined(RADIO_V14) || defined(RADIO_V12)
#define SWITCHES_GPIO_REG_E GPIOC
#define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_13 // PC.13
// ADC based switch
#elif defined(PCBX7)
// no SWE
#else
@@ -1027,8 +1032,7 @@
#elif defined(RADIO_GX12)
#define SWITCHES_F_3POS
#elif defined(RADIO_V14) || defined(RADIO_V12)
#define SWITCHES_GPIO_REG_F GPIOE
#define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_8 // PE.08
// ADC based switch
#elif defined(PCBX7)
#define SWITCHES_GPIO_REG_F GPIOE
#define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_14 // PE.14
@@ -1700,17 +1704,17 @@
#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_8 // ADC12_IN8 -> ADC1_IN8
#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_6 // ADC12_IN6 -> ADC1_IN6
#define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_12 // ADC123_IN12 -> ADC1_IN12
#define ADC_GPIO_PIN_SWA LL_GPIO_PIN_7 // PA.07
#define ADC_GPIO_PIN_SWE LL_GPIO_PIN_7 // PA.07
#define ADC_GPIO_PIN_SWB LL_GPIO_PIN_5 // PA.05
#define ADC_GPIO_PIN_SWC LL_GPIO_PIN_0 // PC.00
#define ADC_GPIO_PIN_SWD LL_GPIO_PIN_5 // PC.05
#define ADC_CHANNEL_SWA LL_ADC_CHANNEL_7 // ADC12_IN7 -> ADC1_IN7
#define ADC_GPIO_PIN_SWF LL_GPIO_PIN_5 // PC.05
#define ADC_CHANNEL_SWE LL_ADC_CHANNEL_7 // ADC12_IN7 -> ADC1_IN7
#define ADC_CHANNEL_SWB LL_ADC_CHANNEL_5 // ADC12_IN5 -> ADC1_IN5
#define ADC_CHANNEL_SWC LL_ADC_CHANNEL_10 // ADC123_IN10 -> ADC1_IN10
#define ADC_CHANNEL_SWD LL_ADC_CHANNEL_15 // ADC12_IN15 -> ADC1_IN15
#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SWA | ADC_GPIO_PIN_SWB)
#define ADC_CHANNEL_SWF LL_ADC_CHANNEL_15 // ADC12_IN15 -> ADC1_IN15
#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SWE | ADC_GPIO_PIN_SWB)
#define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT1)
#define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_SWC | ADC_GPIO_PIN_SWD)
#define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_SWC | ADC_GPIO_PIN_SWF)
#define ADC_VREF_PREC2 330
#elif defined(PCBX7)
#define HARDWARE_POT1
@@ -2546,14 +2550,14 @@
#endif
// LCD driver
#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_MT12) || defined(RADIO_T12MAX) || defined(RADIO_V14) || defined(RADIO_V12) || defined(RADIO_BUMBLEBEE)
#if defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_MT12) || defined(RADIO_T12MAX) || defined(RADIO_V12) || defined(RADIO_BUMBLEBEE)
#define LCD_VERTICAL_INVERT
#endif
#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_BUMBLEBEE) || defined(RADIO_GX12)
#if defined(RADIO_LR3PRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) || defined(RADIO_FAMILY_T20) || defined(RADIO_T14) || defined(RADIO_BUMBLEBEE) || defined(RADIO_GX12) || defined(RADIO_V14)
#define LCD_HORIZONTAL_INVERT
#define OLED_SCREEN
#endif
#if defined(RADIO_T14) || defined(RADIO_GX12)
#if defined(RADIO_T14) || defined(RADIO_GX12) || defined(RADIO_V14)
#define SSD1309_LCD
#endif
#if defined(PCBX9E)
@@ -2625,7 +2629,7 @@
#if defined(PCBXLITE) || defined(PCBX9LITE) || defined(PCBX7ACCESS) || \
defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_X9DP2019) || \
defined(RADIO_GX12)
defined(RADIO_GX12) || defined(RADIO_V12) || defined(RADIO_V14)
#define I2C_B1_SCL_GPIO GPIO_PIN(GPIOB, 8) // PB.08
#define I2C_B1_SDA_GPIO GPIO_PIN(GPIOB, 9) // PB.09
#else
+1 -1
View File
@@ -116,7 +116,7 @@ SWITCH_CONFIG = {
"SE": {"default": "2POS", "display": [0, 2]},
# right side
"SC": {"default": "2POS", "display": [1, 0]},
"SD": {"default": "3POS", "display": [1, 1]},
"SD": {"default": "2POS", "display": [1, 1]},
"SF": {"default": "TOGGLE", "display": [1, 2]},
},
"v16": {