Files

118 lines
3.9 KiB
C

/**
* @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 */