/** * @file config.h * @brief 萝莉3代 接收机系统配置 * MCU:STC8H1K08-36I-QFN20 * * 引脚分配 (来自主人注释): * CH1-P3.7 CH2-P3.6 CH3-P3.5 CH4-P3.4 (PWM/舵机输出) * BAT_ADC-P3.3 (ADC11) (电池电压检测) * LEDA-P3.2 (状态指示灯) * TX-P3.1, RX-P3.0 (串口1) * - SBUS 连接到 TX 经板上三极管反相 * - 串口命令解析走 RX (P3.0) * * NRF24L01 (硬件 SPI): * SCK=P1.5, MOSI=P1.3 (主机输出), MISO=P1.4 (主机输入) * CSN=P5.4, CE=P1.6, IRQ=P1.7 * * UART1 复用: * - 默认模式:命令解析 (115200 8N1) * - MODEL(SBUS):切换到 SBUS 输出 (100kbps 8N2 反相逻辑) * - MODEL(PWM):切换到 4 路舵机 PWM 输出 * - MODEL(UART):切换到 UART 输出 (占位) */ #ifndef __LOLI_RX_CONFIG_H #define __LOLI_RX_CONFIG_H #include "stc8h.h" /* 系统时钟:24MHz 内部高速 IRC */ #define SYS_CLK_HZ 24000000UL #define MCU_MHZ 24 /* ─────────────── 通道定义 ─────────────── */ #define CH_COUNT 4 /* 4 路 PWM 输出引脚 */ #define CH1_PORT PORT_P3 #define CH1_BIT 7 #define CH2_PORT PORT_P3 #define CH2_BIT 6 #define CH3_PORT PORT_P3 #define CH3_BIT 5 #define CH4_PORT PORT_P3 #define CH4_BIT 4 /* LED 引脚 */ #define LED_PORT PORT_P3 #define LED_BIT 2 /* 电池电压 ADC */ #define ADC_BAT_CH 11 /* P3.3 = ADC11 */ /* NRF24L01 引脚 */ #define NRF_SCK_PORT PORT_P1 #define NRF_SCK_BIT 5 #define NRF_MOSI_PORT PORT_P1 #define NRF_MOSI_BIT 3 /* 主机输出 */ #define NRF_MISO_PORT PORT_P1 #define NRF_MISO_BIT 4 /* 主机输入 */ #define NRF_CSN_PORT PORT_P5 #define NRF_CSN_BIT 4 #define NRF_CE_PORT PORT_P1 #define NRF_CE_BIT 6 #define NRF_IRQ_PORT PORT_P1 #define NRF_IRQ_BIT 7 /* ─────────────── 协议参数 ─────────────── */ /* SBUS 通道:16 路,11 bit */ #define SBUS_CH_COUNT 16 #define SBUS_VALUE_MIN 172 #define SBUS_VALUE_MID 992 #define SBUS_VALUE_MAX 1811 /* 私有 NRF24L01 协议(与 LoliCon 兼容) */ #define NRF_PAYLOAD_LEN 32 #define NRF_ADDR_WIDTH 5 /* 默认地址:萝莉3代标准地址 */ static const uint8_t __code DEFAULT_ADDR[5] = { 0xE7, 0xE7, 0xE7, 0xE7, 0xC2 }; /* 默认频道 */ #define DEFAULT_RF_CH 76 /* 2476MHz */ /* ─────────────── UART 参数 ─────────────── */ #define UART_BAUD_CMD 115200UL /* 命令解析默认波特率 */ #define UART_BAUD_SBUS 100000UL /* SBUS 100kbps */ #define UART_BAUD_SBUS_NEAR 100000UL /* BRT 实际 100k */ /* ─────────────── 模式定义 ─────────────── */ typedef enum { MODE_SBUS = 0, MODE_PWM = 1, MODE_UART = 2, } RxMode_e; /* ─────────────── 配置存储 (IAP) ─────────────── * STC8H1K08 的 Flash 末段用作 EEPROM * 每个 IAP 扇区 512 字节 * 我们只用最后 1 个扇区 (512 字节) 作为配置存储 */ #define IAP_EEPROM_BASE 0xFC00 /* Flash 末 1KB(实际只用 1 个扇区 512 字节) */ #define IAP_EEPROM_SECTORS 1 #define EEPROM_MAGIC 0x4C33 /* "L3" */ /* ─────────────── 帧速率 / 输出更新 ─────────────── */ #define OUTPUT_PERIOD_MS 20 /* PWM 输出 50Hz (20ms 周期) */ /* ─────────────── 电池电压 ─────────────── * 板上分压 (假设):BAT → 1/2 分压 → P3.3 * Vref = VCC = 5V * 实际电压 = ADC * 5.0 / 1024 * 2 */ #define BATTERY_DIVIDER 2.0f #define ADC_VREF_VOLT 5.0f #endif /* __LOLI_RX_CONFIG_H */