Files
DCU_APP/GD32E508_DCU_APP/sys/config.h
T
cbb dc91883f1e refactor(device): 重构SPI命令处理为模块化架构
- 将原有的 monolithic app_spi_command.cpp 拆分为多个专门的命令处理器文件
- 新增 spi_command_handler.h 定义命令处理器接口和上下文结构
- 新增 app_spi_command_defs.h 提取公共协议常量定义
- 新增多个具体命令处理器实现文件:
  - app_spi_cmd_boot_request.cpp (进入Bootloader命令)
  - app_spi_cmd_ota_wait.cpp (OTA等待响应命令)
  - app_spi_cmd_ping.cpp (APP心跳ping命令)
  - app_spi_cmd_can_bridge.cpp (SPI到CAN桥接命令)

- 修改 app_spi_command.cpp 仅负责SPI链路管理和命令路由逻辑
- 更新配置文件添加新源文件到项目编译列表
- 调整全局实例为对象实例(AppSpiCommandBus),移除静态方法依赖
- 更新README文档说明新的SPI命令总线拆分架构
- 微调版本号(patch: 0 -> 1, build: 2 -> 0)
2026-06-23 01:49:33 +08:00

146 lines
6.5 KiB
C

/**
* @file config.h
* @brief 应用级集中配置项定义。
* @note 用于统一管理当前项目中可调的外设、时序、通信与算法常量。
*/
#ifndef SYS_CONFIG_H
#define SYS_CONFIG_H
/** @brief 应用启动横幅字符串。 */
#define APP_BANNER_TEXT "GD32E508 DCU task scheduler start"
/** @brief USART0 默认波特率。 */
#define CONFIG_USART0_BAUDRATE 115200U
/** @brief ADC 外设实例。 */
#define CONFIG_ADC_INSTANCE ADC0
/** @brief ADC 外部 VIN 检测通道号(原理图:PA6 -> VIN_ADC)。 */
#define CONFIG_ADC_VIN_CHANNEL ADC_CHANNEL_6
/** @brief ADC 内部温度通道号。 */
#define CONFIG_ADC_TEMP_CHANNEL ADC_CHANNEL_16
/** @brief ADC 内部参考电压通道号。 */
#define CONFIG_ADC_VREFINT_CHANNEL ADC_CHANNEL_17
/** @brief ADC 满量程计数值。 */
#define CONFIG_ADC_MAX_VALUE 4095.0f
/** @brief 内部参考电压典型值,单位 V。 */
#define CONFIG_ADC_VREFINT_TYPICAL_VOLTAGE 1.20f
/** @brief 温度传感器 25℃ 对应电压,单位 V。 */
#define CONFIG_ADC_TEMP_V25 1.43f
/** @brief 温度传感器平均斜率,单位 V/℃。 */
#define CONFIG_ADC_TEMP_AVG_SLOPE 0.0043f
/** @brief ADC 上电后稳定等待时间,单位 ms。 */
#define CONFIG_ADC_STABILIZE_DELAY_MS 2U
/** @brief ADC 规则通道采样时间配置。 */
#define CONFIG_ADC_SAMPLE_TIME ADC_SAMPLETIME_239POINT5
/** @brief ADC 空输入保护时默认 VDDA,单位 V。 */
#define CONFIG_ADC_DEFAULT_VDDA 3.3f
/** @brief ADC 中值滤波窗口长度(最终样本数为该值 + 1)。 */
#define CONFIG_ADC_FILTER_SIZE 6U
/** @brief CAN 外设实例。 */
#define CONFIG_CAN_INSTANCE CAN0
/** @brief CAN 外设时钟使能枚举。 */
#define CONFIG_CAN_RCU RCU_CAN0
/** @brief CAN 状态报文标准帧 ID。 */
#define CONFIG_CAN_STATUS_ID 0x321U
/** @brief ESP32 请求 DCU_APP 进入 Bootloader OTA 窗口的扩展帧 ID(备用 CAN 入口)。 */
#define CONFIG_CAN_OTA_BOOT_REQ_ID 0x00000320U
/** @brief 进入 Bootloader OTA 请求魔术字节 0。 */
#define CONFIG_CAN_OTA_BOOT_MAGIC0 0x4FU
/** @brief 进入 Bootloader OTA 请求魔术字节 1。 */
#define CONFIG_CAN_OTA_BOOT_MAGIC1 0x54U
/** @brief 进入 Bootloader OTA 请求魔术字节 2。 */
#define CONFIG_CAN_OTA_BOOT_MAGIC2 0x41U
/** @brief 进入 Bootloader OTA 请求魔术字节 3。 */
#define CONFIG_CAN_OTA_BOOT_MAGIC3 0x21U
/** @brief ESP32 在 APP 运行期通过 SPI 发送的进入 Bootloader OTA 命令。 */
#define CONFIG_SPI_APP_OTA_BOOT_CMD 0xB0U
/** @brief SPI 进入 Bootloader OTA 命令确认状态:成功。 */
#define CONFIG_SPI_APP_OTA_BOOT_ACK_OK 0xB5U
/** @brief SPI 进入 Bootloader OTA 命令确认状态:失败。 */
#define CONFIG_SPI_APP_OTA_BOOT_ACK_ERROR 0xE2U
/** @brief CAN 接收过滤器目标标准帧 ID。 */
#define CONFIG_CAN_RX_FILTER_ID CONFIG_CAN_STATUS_ID
/** @brief CAN 接收过滤器标准帧掩码;`0x7FFU` 表示精确匹配 11-bit ID。 */
#define CONFIG_CAN_RX_FILTER_MASK 0x7FFU
/** @brief 单次 CAN 接收解析任务最多消费的软件队列帧数,避免主循环长期被接收流量占用。 */
#define CONFIG_CAN_RX_PARSE_BUDGET 48U
/** @brief CAN 状态载荷中调试标识字符 0。 */
#define CONFIG_CAN_STATUS_TAG0 0x43U
/** @brief CAN 状态载荷中调试标识字符 1。 */
#define CONFIG_CAN_STATUS_TAG1 0x41U
/** @brief CAN 状态载荷中调试标识字符 2。 */
#define CONFIG_CAN_STATUS_TAG2 0x4EU
/** @brief CAN 状态载荷中调试标识字符 3。 */
#define CONFIG_CAN_STATUS_TAG3 0x46U
/** @brief 用户调度定时器实例。 */
#define CONFIG_SCHED_TIMER_INSTANCE TIMER2
/** @brief 用户调度定时器中断号。 */
#define CONFIG_SCHED_TIMER_IRQn TIMER2_IRQn
/** @brief 用户调度定时器时钟使能宏参数。 */
#define CONFIG_SCHED_TIMER_RCU RCU_TIMER2
/** @brief 用户调度定时器预分频值。 */
#define CONFIG_SCHED_TIMER_PRESCALER 179U
/** @brief 用户调度定时器周期重装值。 */
#define CONFIG_SCHED_TIMER_PERIOD 99U
/** @brief 用户调度定时器 NVIC 抢占优先级。 */
#define CONFIG_SCHED_TIMER_IRQ_PREEMPT_PRIO 1U
/** @brief 用户调度定时器 NVIC 子优先级。 */
#define CONFIG_SCHED_TIMER_IRQ_SUB_PRIO 0U
/** @brief 调度基准节拍:ADC VREF 采样周期,单位 100us tick。 */
#define CONFIG_TASK_PERIOD_VREF_SAMPLE_TICKS 5U
/** @brief 调度基准节拍:ADC 温度采样/处理周期,单位 100us tick。 */
#define CONFIG_TASK_PERIOD_TEMP_SAMPLE_TICKS 10U
/** @brief 调度基准节拍:10ms 计数周期,单位 100us tick。 */
#define CONFIG_TASK_PERIOD_CAN_RX_TICKS 100U
/** @brief 调度基准节拍:CAN 发送/状态灯周期,单位 100us tick。 */
#define CONFIG_TASK_PERIOD_CAN_TX_TICKS 1000U
/** @brief 调度基准节拍:心跳/诊断打印周期,单位 100us tick。 */
#define CONFIG_TASK_PERIOD_HEARTBEAT_TICKS 10000U
/** @brief 周期温度/电压 UART 打印开关:0=关闭,1=开启。 */
#define CONFIG_UART_TEMP_PERIODIC_PRINT 1
/** @brief UART 诊断打印级别:0=仅温度/电压,1=温度/电压+CAN 统计。 */
#define CONFIG_UART_DIAG_LEVEL 1
/** @brief FWDGT 独立看门狗预分频值。 */
#define CONFIG_FWDGT_PSC FWDGT_PSC_DIV64
/** @brief FWDGT 独立看门狗重载值。
* 超时 = (64 / 40000) * (RLD + 1) = 1.6ms * (RLD+1)
* RLD=1874 → 1.6ms * 1875 ≈ 3.0s
*/
#define CONFIG_FWDGT_RLD 1874U
/** @brief FWDGT 超时近似值(毫秒),仅供文档参考。 */
#define CONFIG_FWDGT_TIMEOUT_MS 3000U
/* ============================================================
* APP 固件版本号
* ============================================================ */
/** @brief APP 主版本号。 */
#define APP_FW_VERSION_MAJOR 1U
/** @brief APP 次版本号。 */
#define APP_FW_VERSION_MINOR 0U
/** @brief APP 补丁版本号。 */
#define APP_FW_VERSION_PATCH 1U
/** @brief APP 构建编号。 */
#define APP_FW_VERSION_BUILD 0U
/* ============================================================
* BOOT 版本在 OTA 配置页中的 Flash 存储地址
* 与 BOOT 工程 sys/config.h 保持一致
* ============================================================ */
/** @brief OTA 配置页基地址。 */
#define CONFIG_OTA_CONFIG_PAGE_ADDR 0x0807E000U
/** @brief BOOT 版本存储地址(word 6,低 32 位:major|minor)。 */
#define CONFIG_BOOT_VERSION_ADDR0 (CONFIG_OTA_CONFIG_PAGE_ADDR + 0x18U)
/** @brief BOOT 版本存储地址(word 7,低 32 位:patch|build)。 */
#define CONFIG_BOOT_VERSION_ADDR1 (CONFIG_OTA_CONFIG_PAGE_ADDR + 0x1CU)
/** @brief OTA 配置页总 word 数(6 个 OTA 标志 + 2 个 BOOT 版本)。 */
#define CONFIG_OTA_CONFIG_WORD_COUNT 8U
#endif /* SYS_CONFIG_H */