118 lines
3.9 KiB
C
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 */ |