更新配置代码
This commit is contained in:
@@ -37,8 +37,7 @@ const int *g_sys_log_on = &s_cfg_app.sys_log_on;
|
||||
static os_work_t s_work_hdl_save;
|
||||
|
||||
/* 默认的程序设置代码文件 */
|
||||
#include "app_config/developing.h"
|
||||
#include "app_config/SBDEMO.h"
|
||||
#include "app_config/_default_config.h"
|
||||
|
||||
/* nvs 接口 ------------------------------------------------------------------------------------ */
|
||||
|
||||
@@ -258,6 +257,18 @@ void app_cfg_set_rf_mode_change(void)
|
||||
app_cfg_do_save(1000);
|
||||
}
|
||||
|
||||
int app_cfg_set_rf_mode(data_bridge_rf_mode_t rf_mode)
|
||||
{
|
||||
if (rf_mode >= DATA_BRIDGE_RF_MODE_MAX)
|
||||
{
|
||||
SYS_LOG_WRN("rf_mode: %d", rf_mode);
|
||||
return -1;
|
||||
}
|
||||
s_cfg_app.rf_mode = rf_mode;
|
||||
app_cfg_do_save(1000);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int app_cfg_set_psPassword(const void *psPassword, int size)
|
||||
{
|
||||
if (size > sizeof(s_cfg_app.psPassword))
|
||||
@@ -355,6 +366,75 @@ int app_cfg_set_rf_parameters(const void *wifi_parameters, size_t size)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int app_cfg_set_wifi_ap_ssid(const void *ssid)
|
||||
{
|
||||
if (ssid == NULL)
|
||||
{
|
||||
SYS_LOG_WRN("ssid is empty");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (strlen(ssid) >= __ARRAY_SIZE(s_cfg_app.app_config_wifi_para.wifi_ap_ssid))
|
||||
{
|
||||
SYS_LOG_WRN("size: %u > %u", strlen(ssid), __ARRAY_SIZE(s_cfg_app.app_config_wifi_para.wifi_ap_ssid));
|
||||
return -1;
|
||||
}
|
||||
strncpy(s_cfg_app.app_config_wifi_para.wifi_ap_ssid, ssid, __ARRAY_SIZE(s_cfg_app.app_config_wifi_para.wifi_ap_ssid));
|
||||
app_cfg_do_save(1000);
|
||||
return 0;
|
||||
}
|
||||
int app_cfg_set_wifi_ap_password(const void *password)
|
||||
{
|
||||
if (password == NULL)
|
||||
{
|
||||
SYS_LOG_WRN("password is empty");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (strlen(password) >= __ARRAY_SIZE(s_cfg_app.app_config_wifi_para.wifi_ap_password))
|
||||
{
|
||||
SYS_LOG_WRN("size: %u > %u", strlen(password), __ARRAY_SIZE(s_cfg_app.app_config_wifi_para.wifi_ap_password));
|
||||
return -1;
|
||||
}
|
||||
strncpy(s_cfg_app.app_config_wifi_para.wifi_ap_password, password, __ARRAY_SIZE(s_cfg_app.app_config_wifi_para.wifi_ap_password));
|
||||
app_cfg_do_save(1000);
|
||||
return 0;
|
||||
}
|
||||
int app_cfg_set_wifi_sta_ssid(const void *ssid)
|
||||
{
|
||||
if (ssid == NULL)
|
||||
{
|
||||
SYS_LOG_WRN("ssid is empty");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (strlen(ssid) >= __ARRAY_SIZE(s_cfg_app.app_config_wifi_para.wifi_sta_ssid))
|
||||
{
|
||||
SYS_LOG_WRN("size: %u > %u", strlen(ssid), __ARRAY_SIZE(s_cfg_app.app_config_wifi_para.wifi_sta_ssid));
|
||||
return -1;
|
||||
}
|
||||
strncpy(s_cfg_app.app_config_wifi_para.wifi_sta_ssid, ssid, __ARRAY_SIZE(s_cfg_app.app_config_wifi_para.wifi_sta_ssid));
|
||||
app_cfg_do_save(1000);
|
||||
return 0;
|
||||
}
|
||||
int app_cfg_set_wifi_sta_password(const void *password)
|
||||
{
|
||||
if (password == NULL)
|
||||
{
|
||||
SYS_LOG_WRN("password is empty");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (strlen(password) >= __ARRAY_SIZE(s_cfg_app.app_config_wifi_para.wifi_sta_password))
|
||||
{
|
||||
SYS_LOG_WRN("size: %u > %u", strlen(password), __ARRAY_SIZE(s_cfg_app.app_config_wifi_para.wifi_sta_password));
|
||||
return -1;
|
||||
}
|
||||
strncpy(s_cfg_app.app_config_wifi_para.wifi_sta_password, password, __ARRAY_SIZE(s_cfg_app.app_config_wifi_para.wifi_sta_password));
|
||||
app_cfg_do_save(1000);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int app_cfg_set_drone_data(const void *drone_data, int size)
|
||||
{
|
||||
if (size > sizeof(s_cfg_app.drone_data))
|
||||
@@ -445,3 +525,30 @@ int app_cfg_set_mac_tab(uint8_t mac[6])
|
||||
app_cfg_do_save(1000);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int app_cfg_set_temp_log_on(bool sw)
|
||||
{
|
||||
// SYS_LOG_INF("set temp log on: %d", sw);
|
||||
s_cfg_app.temperature_log.temp_log_on = !!sw;
|
||||
app_cfg_do_save(100);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int app_cfg_set_temp_log_index(uint8_t index)
|
||||
{
|
||||
// SYS_LOG_INF("set temp log index: %d", index);
|
||||
s_cfg_app.temperature_log.temp_log_index = index;
|
||||
app_cfg_do_save(100);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int app_cfg_set_gyro_heat_value(uint8_t value)
|
||||
{
|
||||
if (value > 60)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
s_cfg_app.gyro_heat_value = value;
|
||||
app_cfg_do_save(100);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -100,7 +100,13 @@ typedef struct // 设备配置统一数据结构
|
||||
bool ble : 1; // 使用 BLE
|
||||
bool ap : 1; // 使用 WIFI AP 模式
|
||||
bool sta : 1; // 使用 WIFI STA 模式
|
||||
uint32_t reserve : 24;
|
||||
|
||||
bool strip_pwrup : 1; // 使用灯带上电效果
|
||||
bool strip_show_rf : 1; // 在灯带中用一个灯来显示射频数据接口状态的灯效图层
|
||||
bool strip_link_fc : 1; // 开启灯带联动飞控:用于飞控状态监控(MSP)
|
||||
bool bat_led_startup : 1; // 开启电量灯效
|
||||
|
||||
uint32_t reserve : 21; // 预留占位(原来是24个uint32)
|
||||
} capacity;
|
||||
|
||||
struct
|
||||
@@ -114,9 +120,18 @@ typedef struct // 设备配置统一数据结构
|
||||
|
||||
uint8_t mac_index; // 记录当前通过 WIFI 连接过的 APP 的 MAC 地址的序号
|
||||
uint8_t mac_tab[6][6]; // 记录当前通过 WIFI 连接过的 APP 的 MAC 地址, 6 个 MAC 地址,每个 MAC 地址 6 字节,判断是否 APP 设备连接,用于决定是否停止对飞控状态监测
|
||||
|
||||
uint8_t product_id[6]; // 产品 ID
|
||||
|
||||
uint32_t reserve[32]; // 预留占位,下次更改时保证参数总长度不变,如超过预留长度后则当作新数据处理
|
||||
uint8_t gyro_heat_value; // 陀螺仪加热值,单位温度,0为关闭,最大值为80℃
|
||||
|
||||
struct
|
||||
{
|
||||
bool temp_log_on : 1; // 温度日志开关
|
||||
uint8_t temp_log_index : 5; // 温度日志最新索引
|
||||
} temperature_log;
|
||||
|
||||
uint32_t reserve[37]; // 预留占位,下次更改时保证参数总长度不变,如超过预留长度后则当作新数据处理,sizeof(cfg_app_t) = 484UL
|
||||
|
||||
uint32_t crc32; // 校验数据(可放于任何位置)
|
||||
} cfg_app_t;
|
||||
@@ -140,6 +155,8 @@ extern const int *g_sys_log_on;
|
||||
void app_cfg_set_sys_log(bool on);
|
||||
|
||||
void app_cfg_set_rf_mode_change(void); // 设置 g_cfg_app->rf_mode 的下一个模式
|
||||
int app_cfg_set_rf_mode(data_bridge_rf_mode_t rf_mode);
|
||||
|
||||
int app_cfg_set_psPassword(const void *psPassword, int size);
|
||||
int app_cfg_set_device_name_ble(const void *device_name_ble, int size);
|
||||
int app_cfg_set_drone_data(const void *drone_data, int size);
|
||||
@@ -157,5 +174,14 @@ int app_cfg_set_led_strip_sw(uint8_t sw);
|
||||
int app_cfg_set_armed2close_rf_sw(bool sw);
|
||||
|
||||
int app_cfg_set_rf_parameters(const void *wifi_parameters, size_t size);
|
||||
int app_cfg_set_wifi_ap_ssid(const void *ssid);
|
||||
int app_cfg_set_wifi_ap_password(const void *password);
|
||||
int app_cfg_set_wifi_sta_ssid(const void *ssid);
|
||||
int app_cfg_set_wifi_sta_password(const void *password);
|
||||
|
||||
int app_cfg_set_mac_tab(uint8_t mac[6]);
|
||||
|
||||
int app_cfg_set_temp_log_on(bool sw);
|
||||
int app_cfg_set_temp_log_index(uint8_t index);
|
||||
|
||||
int app_cfg_set_gyro_heat_value(uint8_t value);
|
||||
|
||||
4
app/config/app_config/_default_config.h
Normal file
4
app/config/app_config/_default_config.h
Normal file
@@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#include "./developing.h"
|
||||
#include "./SBDEMO.h"
|
||||
@@ -12,9 +12,7 @@
|
||||
#define CONS_ABORT()
|
||||
#include "sys_log.h"
|
||||
|
||||
#include "board_config/devkit_esp32c2.h"
|
||||
#include "board_config/devkit_esp32c3.h"
|
||||
#include "board_config/devkit_esp32s3.h"
|
||||
#include "board_config/_default_config.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
|
||||
#include "drivers/chip/_hal.h"
|
||||
#include "sdkconfig.h"
|
||||
#include "hal/adc_types.h"
|
||||
#include "driver/ledc.h"
|
||||
|
||||
#define GPIO_USED(pin) ((pin) < 255)
|
||||
|
||||
@@ -44,12 +46,27 @@ typedef struct // 对应 GPIO 单个引脚的输入/输出配置的基础定义
|
||||
|
||||
typedef struct // LED: WS2812
|
||||
{
|
||||
hal_id_t spi_id; // 模拟 PWM 用的 SPI
|
||||
uint8_t strip_pin[4]; // 用于驱动灯带的输出引脚。[0] 为默认脚,[1..3] 为附加的另外几路,非 255 表示有效,程序根据这些脚判断接多少根灯带
|
||||
uint8_t bat_led_pin; // 用于指示电池电量的 LED 灯,非 255 表示有效
|
||||
uint8_t rf_status_pin; // 板上用于指示状态的 RGB 灯珠,非 255 表示有效
|
||||
hal_id_t spi_id; // 模拟 PWM 用的 SPI
|
||||
uint8_t strip_pin[4]; // 用于驱动灯带的输出引脚。[0] 为默认脚,[1..3] 为附加的另外几路,非 255 表示有效,程序根据这些脚判断接多少根灯带
|
||||
uint8_t bat_led_pin[2]; // 用于指示电池电量的 RGB 灯,[0]为IO非 255 表示有效,[1]为电量灯珠数目
|
||||
uint8_t rf_status_pin; // 板上用于指示状态的 RGB 灯珠,非 255 表示有效
|
||||
} cfg_board_led_spi_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ledc_channel_t pwm_output; // pwm 输出控制引脚,有效电平为打开热输出的电平
|
||||
uint32_t pwm_period; // pwm 输出周期
|
||||
} cfg_pwm_config_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t adc_short; // 设测温电阻短路(阻值为0时)将表现的电平:0 表示接地,1 表示接电源
|
||||
uint16_t adc_max; // 元器件量程(采样最大值)
|
||||
uint16_t thermistor_b; // 热敏电阻的材料常数(B值。一般2000~6000之间,单位为K)
|
||||
uint16_t thermistor_ohm; // 热敏电阻在25℃时的阻值(Ω)
|
||||
uint16_t load_res_ohm; // 测温度负载分压电阻(Ω)
|
||||
} cfg_thermistor_config_t;
|
||||
|
||||
typedef enum __packed // 用于与飞控通讯的数据接口
|
||||
{
|
||||
CFG_BOARD_FC_PORT_UART = 0, // 使用串口与飞控通讯
|
||||
@@ -85,6 +102,7 @@ typedef struct // 数据结构一旦定下不可随意变更
|
||||
|
||||
cfg_board_pin_io_t key_reset; // 按键检测:开机时长安 10 秒恢复出厂设置的按键,有效电平为按下电平
|
||||
cfg_board_pin_io_t key_led_strip_switch; // 按键检测:切换灯带效果,适用于灯带固件,有效电平为按下电平
|
||||
cfg_board_pin_io_t key_led_color_switch; // 按键检测:切换灯带效果,适用于竞速灯带切换颜色,有效电平为按下电平
|
||||
cfg_board_pin_io_t key_rf_switch; // 按键检测:切换射频数据接口,适用于固定翼无线 USB 板,有效电平为按下电平
|
||||
cfg_board_pin_io_t key_9v_switch; // 按键检测:9伏电源开关控制,适用 F7V4, 有效电平为按下电平
|
||||
|
||||
@@ -96,6 +114,10 @@ typedef struct // 数据结构一旦定下不可随意变更
|
||||
cfg_board_pin_io_t led_strip_on; // 灯带控制主机切换的指示灯,有效电平为点亮电平
|
||||
cfg_board_pin_io_t led_bat[4]; // 电池电量指示灯,有效电平为点亮电平
|
||||
|
||||
hal_adc_hdl_t heat_adc; // 用于 ADC 测量的配置
|
||||
cfg_pwm_config_t heat_pwm; // 用于控制 PWM 输出的配置
|
||||
cfg_thermistor_config_t heat_thermistor; // 热敏电阻配置
|
||||
|
||||
/* 产品功能描述类 */
|
||||
|
||||
} cfg_board_t;
|
||||
|
||||
5
app/config/board_config/_default_config.h
Normal file
5
app/config/board_config/_default_config.h
Normal file
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include "./devkit_esp32c2.h"
|
||||
#include "./devkit_esp32c3.h"
|
||||
#include "./devkit_esp32s3.h"
|
||||
@@ -5,7 +5,8 @@
|
||||
static cfg_board_t const s_cfg_board_default = {
|
||||
.firmware_str = PRODUCT_ID,
|
||||
.platform_str = CONFIG_IDF_TARGET,
|
||||
.board_name = "ESP32-C2-Devkitc",
|
||||
.board_name = "devkit_esp32c2",
|
||||
|
||||
/* 控制台串口 */
|
||||
.uart_console = {
|
||||
.pin_txd = {43, _GPIO_DIR_OUT, _GPIO_PUD_PULL_UP},
|
||||
@@ -15,18 +16,68 @@ static cfg_board_t const s_cfg_board_default = {
|
||||
.br = 115200,
|
||||
},
|
||||
|
||||
/* 启动按键 */
|
||||
.key_reset = {
|
||||
.pin = 9, // 用于切换灯效
|
||||
.en_lev = 0, // 用于切换灯效
|
||||
/* 数据透传串口 */
|
||||
.uart_fc = {
|
||||
.pin_txd = {7, _GPIO_DIR_OUT, _GPIO_PUD_PULL_UP},
|
||||
.pin_rxd = {6, _GPIO_DIR_IN, _GPIO_PUD_PULL_UP},
|
||||
.id = UART_NUM_1,
|
||||
.irq_prior = 24,
|
||||
.br = 115200,
|
||||
},
|
||||
|
||||
.led_spi = {
|
||||
.spi_id = SPI2_HOST, // 模拟 PWM 用的 SPI
|
||||
.strip_pin = {10, ~0, ~0, ~0}, // 用于驱动灯带的输出引脚
|
||||
.bat_led_pin = ~0, // 用于指示电池电量的 LED 灯,非 ~0 表示有效
|
||||
.bat_led_pin = {~0, 0}, // 用于指示电池电量的 LED 灯,[0]为IO非 ~0 表示有效,[1]为电量灯珠数目
|
||||
.rf_status_pin = ~0, // 板上用于指示状态的 RGB 灯珠,非 ~0 表示有效
|
||||
},
|
||||
|
||||
.fc_port_type = CFG_BOARD_FC_PORT_UART, // 用于与飞控通讯的数据接口
|
||||
|
||||
/* ISP 控制脚 */
|
||||
.io_isp = {
|
||||
.nrst = 4, // 复位控制引脚
|
||||
.boot0 = 5, // boot0 控制引脚
|
||||
},
|
||||
|
||||
.detect_usb = {.pin = ~0, .en_lev = 0}, // 输入检测:检测飞控 USB 插入,有效电平为插入电平
|
||||
|
||||
.key_reset = {.pin = 9, .en_lev = 0}, // 按键检测:开机时长安 10 秒恢复出厂设置的按键,有效电平为按下电平
|
||||
.key_led_strip_switch = {.pin = 9, .en_lev = 0}, // 按键检测:切换灯带效果,适用于灯带固件,有效电平为按下电平
|
||||
.key_led_color_switch = {.pin = ~0, .en_lev = 1}, // 按键检测:切换灯带颜色,适用于竞速灯带切换颜色,有效电平为按下电平
|
||||
.key_rf_switch = {.pin = ~0, .en_lev = 0}, // 按键检测:切换射频数据接口,适用于固定翼无线 USB 板,有效电平为按下电平
|
||||
.key_9v_switch = {.pin = ~0, .en_lev = 0}, // 按键检测:9伏电源开关控制,适用 F7V4, 有效电平为按下电平
|
||||
|
||||
.sw_led_strip = {.pin = ~0, .en_lev = 0}, // 灯带控制主机的切换控制引脚,有效电平为切换为本模块控制的电平
|
||||
.sw_pwr_9v = {.pin = ~0, .en_lev = 0}, // 9V 电源输出控制引脚,有效电平为打开 9V 电源的电平
|
||||
.sw_usb = {.pin = ~0, .en_lev = 0}, // USB 切换的模拟开关,有效电平为切换为本模块控制的电平
|
||||
|
||||
.led_rf_status = {.pin = ~0, .en_lev = 0}, // 射频指示灯,单色 LED. 引脚号值为 ~0 时,射频连接状态通过灯带展示,值为非 ~0 时,射频连接状态通过这个引脚控制的 LED 展示,有效电平为点亮电平
|
||||
.led_strip_on = {.pin = ~0, .en_lev = 0}, // 灯带控制主机切换的指示灯,有效电平为点亮电平
|
||||
.led_bat = {
|
||||
// 电池电量指示灯,有效电平为点亮电平
|
||||
[0] = {.pin = ~0, .en_lev = 0},
|
||||
[1] = {.pin = ~0, .en_lev = 0},
|
||||
[2] = {.pin = ~0, .en_lev = 0},
|
||||
[3] = {.pin = ~0, .en_lev = 0},
|
||||
},
|
||||
|
||||
.heat_adc = {
|
||||
.id = ADC_UNIT_1, // ADC 单元
|
||||
.channel_mask = ~0, // ADC 通道
|
||||
},
|
||||
.heat_pwm = {
|
||||
.pwm_output = ~0, // 热输出控制引脚,有效电平为打开热输出的电平
|
||||
.pwm_period = 1000000, // 模拟 PWM 的周期( us )
|
||||
},
|
||||
.heat_thermistor = {
|
||||
.adc_short = 0, // 设测温电阻短路(阻值为0时)将表现的电平:0 表示接地,1 表示接电源
|
||||
.adc_max = 1 << 12, // 器件的量程( ADC 取样的最大值)
|
||||
.thermistor_ohm = 10000, // 热敏电阻在25℃时的阻值( Ω ) NCP15XH103F03RC
|
||||
.load_res_ohm = 10000, // 负载电阻的阻值( Ω )
|
||||
.thermistor_b = 3380, // 热敏电阻的材料常数( B 值,一般2000~6000之间,单位为 K )
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
static cfg_board_t const s_cfg_board_default = {
|
||||
.firmware_str = PRODUCT_ID,
|
||||
.platform_str = CONFIG_IDF_TARGET,
|
||||
.board_name = "ESP32-C3-Devkitc",
|
||||
.board_name = "devkit_esp32c3",
|
||||
|
||||
/* 控制台串口 */
|
||||
.uart_console = {
|
||||
.pin_txd = {43, _GPIO_DIR_OUT, _GPIO_PUD_PULL_UP},
|
||||
@@ -15,18 +16,68 @@ static cfg_board_t const s_cfg_board_default = {
|
||||
.br = 115200,
|
||||
},
|
||||
|
||||
/* 启动按键 */
|
||||
.key_reset = {
|
||||
.pin = 9, // 用于切换灯效
|
||||
.en_lev = 0, // 用于切换灯效
|
||||
/* 数据透传串口 */
|
||||
.uart_fc = {
|
||||
.pin_txd = {7, _GPIO_DIR_OUT, _GPIO_PUD_PULL_UP},
|
||||
.pin_rxd = {6, _GPIO_DIR_IN, _GPIO_PUD_PULL_UP},
|
||||
.id = UART_NUM_1,
|
||||
.irq_prior = 24,
|
||||
.br = 115200,
|
||||
},
|
||||
|
||||
.led_spi = {
|
||||
.spi_id = SPI2_HOST, // 模拟 PWM 用的 SPI
|
||||
.strip_pin = {18, ~0, ~0, ~0}, // 用于驱动灯带的输出引脚
|
||||
.bat_led_pin = ~0, // 用于指示电池电量的 LED 灯,非 ~0 表示有效
|
||||
.strip_pin = {10, ~0, ~0, ~0}, // 用于驱动灯带的输出引脚
|
||||
.bat_led_pin = {~0, 0}, // 用于指示电池电量的 LED 灯,[0]为IO非 ~0 表示有效,[1]为电量灯珠数目
|
||||
.rf_status_pin = ~0, // 板上用于指示状态的 RGB 灯珠,非 ~0 表示有效
|
||||
},
|
||||
|
||||
.fc_port_type = CFG_BOARD_FC_PORT_UART, // 用于与飞控通讯的数据接口
|
||||
|
||||
/* ISP 控制脚 */
|
||||
.io_isp = {
|
||||
.nrst = 4, // 复位控制引脚
|
||||
.boot0 = 5, // boot0 控制引脚
|
||||
},
|
||||
|
||||
.detect_usb = {.pin = ~0, .en_lev = 0}, // 输入检测:检测飞控 USB 插入,有效电平为插入电平
|
||||
|
||||
.key_reset = {.pin = 9, .en_lev = 0}, // 按键检测:开机时长安 10 秒恢复出厂设置的按键,有效电平为按下电平
|
||||
.key_led_strip_switch = {.pin = 9, .en_lev = 0}, // 按键检测:切换灯带效果,适用于灯带固件,有效电平为按下电平
|
||||
.key_led_color_switch = {.pin = ~0, .en_lev = 1}, // 按键检测:切换灯带颜色,适用于竞速灯带切换颜色,有效电平为按下电平
|
||||
.key_rf_switch = {.pin = ~0, .en_lev = 0}, // 按键检测:切换射频数据接口,适用于固定翼无线 USB 板,有效电平为按下电平
|
||||
.key_9v_switch = {.pin = ~0, .en_lev = 0}, // 按键检测:9伏电源开关控制,适用 F7V4, 有效电平为按下电平
|
||||
|
||||
.sw_led_strip = {.pin = ~0, .en_lev = 0}, // 灯带控制主机的切换控制引脚,有效电平为切换为本模块控制的电平
|
||||
.sw_pwr_9v = {.pin = ~0, .en_lev = 0}, // 9V 电源输出控制引脚,有效电平为打开 9V 电源的电平
|
||||
.sw_usb = {.pin = ~0, .en_lev = 0}, // USB 切换的模拟开关,有效电平为切换为本模块控制的电平
|
||||
|
||||
.led_rf_status = {.pin = ~0, .en_lev = 0}, // 射频指示灯,单色 LED. 引脚号值为 ~0 时,射频连接状态通过灯带展示,值为非 ~0 时,射频连接状态通过这个引脚控制的 LED 展示,有效电平为点亮电平
|
||||
.led_strip_on = {.pin = ~0, .en_lev = 0}, // 灯带控制主机切换的指示灯,有效电平为点亮电平
|
||||
.led_bat = {
|
||||
// 电池电量指示灯,有效电平为点亮电平
|
||||
[0] = {.pin = ~0, .en_lev = 0},
|
||||
[1] = {.pin = ~0, .en_lev = 0},
|
||||
[2] = {.pin = ~0, .en_lev = 0},
|
||||
[3] = {.pin = ~0, .en_lev = 0},
|
||||
},
|
||||
|
||||
.heat_adc = {
|
||||
.id = ADC_UNIT_1, // ADC 单元
|
||||
.channel_mask = ~0, // ADC 通道
|
||||
},
|
||||
.heat_pwm = {
|
||||
.pwm_output = ~0, // 热输出控制引脚,有效电平为打开热输出的电平
|
||||
.pwm_period = 1000000, // 模拟 PWM 的周期( us )
|
||||
},
|
||||
.heat_thermistor = {
|
||||
.adc_short = 0, // 设测温电阻短路(阻值为0时)将表现的电平:0 表示接地,1 表示接电源
|
||||
.adc_max = 1 << 12, // 器件的量程( ADC 取样的最大值)
|
||||
.thermistor_ohm = 10000, // 热敏电阻在25℃时的阻值( Ω ) NCP15XH103F03RC
|
||||
.load_res_ohm = 10000, // 负载电阻的阻值( Ω )
|
||||
.thermistor_b = 3380, // 热敏电阻的材料常数( B 值,一般2000~6000之间,单位为 K )
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -5,28 +5,85 @@
|
||||
static cfg_board_t const s_cfg_board_default = {
|
||||
.firmware_str = PRODUCT_ID,
|
||||
.platform_str = CONFIG_IDF_TARGET,
|
||||
.board_name = "ESP32-S3-Devkitc",
|
||||
.board_name = "devkit_esp32s3",
|
||||
|
||||
/* 控制台串口 */
|
||||
.uart_console = {
|
||||
.pin_txd = {255, _GPIO_DIR_OUT, _GPIO_PUD_PULL_UP},
|
||||
.pin_rxd = {255, _GPIO_DIR_IN, _GPIO_PUD_PULL_UP},
|
||||
.pin_txd = {43, _GPIO_DIR_OUT, _GPIO_PUD_PULL_UP},
|
||||
.pin_rxd = {44, _GPIO_DIR_IN, _GPIO_PUD_PULL_UP},
|
||||
.id = UART_NUM_0,
|
||||
.irq_prior = 0,
|
||||
.br = 115200,
|
||||
},
|
||||
|
||||
/* 启动按键 */
|
||||
.key_reset = {
|
||||
.pin = 0, // 用于切换灯效
|
||||
.en_lev = 0, // 用于切换灯效
|
||||
/* 数据透传串口 */
|
||||
.uart_fc = {
|
||||
.pin_txd = {7, _GPIO_DIR_OUT, _GPIO_PUD_PULL_UP},
|
||||
.pin_rxd = {6, _GPIO_DIR_IN, _GPIO_PUD_PULL_UP},
|
||||
.id = UART_NUM_1,
|
||||
.irq_prior = 24,
|
||||
.br = 115200,
|
||||
},
|
||||
|
||||
.led_spi = {
|
||||
.spi_id = SPI2_HOST, // 模拟 PWM 用的 SPI
|
||||
.strip_pin = {18, ~0, ~0, ~0}, // 用于驱动灯带的输出引脚
|
||||
.bat_led_pin = ~0, // 用于指示电池电量的 LED 灯,非 ~0 表示有效
|
||||
.strip_pin = {14, ~0, ~0, ~0}, // 用于驱动灯带的输出引脚
|
||||
.bat_led_pin = {~0, 0}, // 用于指示电池电量的 LED 灯,[0]为IO非 ~0 表示有效,[1]为电量灯珠数目
|
||||
.rf_status_pin = ~0, // 板上用于指示状态的 RGB 灯珠,非 ~0 表示有效
|
||||
},
|
||||
|
||||
.fc_port_type = CFG_BOARD_FC_PORT_UART, // 用于与飞控通讯的数据接口
|
||||
|
||||
/* ISP 控制脚 */
|
||||
.io_isp = {
|
||||
.nrst = 4, // 复位控制引脚
|
||||
.boot0 = 5, // boot0 控制引脚
|
||||
},
|
||||
|
||||
/* USB OTG 引脚 */
|
||||
.io_usb = {
|
||||
.usb_dm = 19,
|
||||
.usb_dp = 20,
|
||||
},
|
||||
|
||||
.detect_usb = {.pin = 36, .en_lev = 1}, // 输入检测:检测飞控 USB 插入,有效电平为插入电平
|
||||
|
||||
.key_reset = {.pin = ~0, .en_lev = 0}, // 按键检测:开机时长安 10 秒恢复出厂设置的按键,有效电平为按下电平
|
||||
.key_led_strip_switch = {.pin = ~0, .en_lev = 0}, // 按键检测:切换灯带效果,适用于灯带固件,有效电平为按下电平
|
||||
.key_led_color_switch = {.pin = ~0, .en_lev = 1}, // 按键检测:切换灯带颜色,适用于竞速灯带切换颜色,有效电平为按下电平
|
||||
.key_rf_switch = {.pin = ~0, .en_lev = 0}, // 按键检测:切换射频数据接口,适用于固定翼无线 USB 板,有效电平为按下电平
|
||||
.key_9v_switch = {.pin = ~0, .en_lev = 0}, // 按键检测:9伏电源开关控制,适用 F7V4, 有效电平为按下电平
|
||||
|
||||
.sw_led_strip = {.pin = 2, .en_lev = 1}, // 灯带控制主机的切换控制引脚,有效电平为切换为本模块控制的电平
|
||||
.sw_pwr_9v = {.pin = 11, .en_lev = 1}, // 9V 电源输出控制引脚,有效电平为打开 9V 电源的电平
|
||||
.sw_usb = {.pin = 5, .en_lev = 1}, // USB 切换的模拟开关,有效电平为切换为本模块控制的电平
|
||||
|
||||
.led_rf_status = {.pin = 3, .en_lev = 0}, // 射频指示灯,单色 LED. 引脚号值为 ~0 时,射频连接状态通过灯带展示,值为非 ~0 时,射频连接状态通过这个引脚控制的 LED 展示,有效电平为点亮电平
|
||||
.led_strip_on = {.pin = 4, .en_lev = 0}, // 灯带控制主机切换的指示灯,有效电平为点亮电平
|
||||
.led_bat = {
|
||||
// 电池电量指示灯,有效电平为点亮电平
|
||||
[0] = {.pin = 33, .en_lev = 0},
|
||||
[1] = {.pin = 34, .en_lev = 0},
|
||||
[2] = {.pin = 35, .en_lev = 0},
|
||||
[3] = {.pin = 36, .en_lev = 0},
|
||||
},
|
||||
|
||||
.heat_adc = {
|
||||
.id = ADC_UNIT_1, // ADC 单元
|
||||
.channel_mask = ~0, // ADC 通道
|
||||
},
|
||||
.heat_pwm = {
|
||||
.pwm_output = ~0, // 热输出控制引脚,有效电平为打开热输出的电平
|
||||
.pwm_period = 1000000, // 模拟 PWM 的周期( us )
|
||||
},
|
||||
.heat_thermistor = {
|
||||
.adc_short = 0, // 设测温电阻短路(阻值为0时)将表现的电平:0 表示接地,1 表示接电源
|
||||
.adc_max = 1 << 12, // 器件的量程( ADC 取样的最大值)
|
||||
.thermistor_ohm = 10000, // 热敏电阻在25℃时的阻值( Ω ) NCP15XH103F03RC
|
||||
.load_res_ohm = 10000, // 负载电阻的阻值( Ω )
|
||||
.thermistor_b = 3380, // 热敏电阻的材料常数( B 值,一般2000~6000之间,单位为 K )
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
#include "uart_port.h"
|
||||
|
||||
#include "drivers/chip/gpio.h"
|
||||
#include "driver/uart.h"
|
||||
#include "hal/uart_ll.h"
|
||||
|
||||
@@ -368,7 +369,7 @@ static int _uart_port_read(sb_data_port_t *port, void *data, uint32_t size)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static bool _uart_port_is_tart(sb_data_port_t *port)
|
||||
static bool _uart_port_is_start(sb_data_port_t *port)
|
||||
{
|
||||
if (port == NULL)
|
||||
{
|
||||
@@ -424,7 +425,7 @@ static sb_data_port_vtable_t const s_uart_vtable = {
|
||||
.stop = _uart_port_stop,
|
||||
.write = _uart_port_write,
|
||||
.read = _uart_port_read,
|
||||
.is_started = _uart_port_is_tart,
|
||||
.is_started = _uart_port_is_start,
|
||||
.get_rx_length = _uart_port_get_rx_length,
|
||||
};
|
||||
|
||||
@@ -482,9 +483,14 @@ sb_data_port_t *sb_uart_port_bind(int uart_num,
|
||||
|
||||
void sb_uart_port_unbind(sb_data_port_t *port)
|
||||
{
|
||||
if (_uart_port_is_tart(port))
|
||||
if (_uart_port_is_start(port))
|
||||
{
|
||||
_uart_port_stop(port);
|
||||
|
||||
__uart_data_t *uart_data = port->data;
|
||||
drv_gpio_pin_configure(uart_data->tx_pin, _GPIO_DIR_IN, _GPIO_PUD_PULL_UP);
|
||||
drv_gpio_pin_configure(uart_data->rx_pin, _GPIO_DIR_IN, _GPIO_PUD_PULL_UP);
|
||||
|
||||
port->data = NULL;
|
||||
}
|
||||
port->data = NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user