添加接收机子项目

This commit is contained in:
2026-06-26 17:57:02 +08:00
parent f3df7276b2
commit fc0fd36861
11 changed files with 3279 additions and 0 deletions

79
rx/README.md Normal file
View File

@@ -0,0 +1,79 @@
# ZhaTianRX
## 说明
本项目是ZhaTianRC下的接收机子项目使用STC8H1K08系列单片机作为主控NRF24L01作为射频IC具有4路PWM输出默认50Hz驱动舵机一路串口一路SBUS与串口共用TX一路CRSF/Crossfire输出。
## 操作说明
* 使用内置eeprom保存数据如果eeprom内没有数据则自动进入对频模式。
* LED状态1Hz慢闪未连接/断开连接3Hz快闪对频模式常亮连接正常双闪nrf24l01连接异常
* 默认工作模式PWM输出
* 默认回传频率2Hz
## 回传功能
接收机支持通过NRF24L01向发射机回传遥测数据
| 回传数据 | 说明 |
|---------|------|
| 电池电压 | 通过 BAT_ADC(P3.3) 采样12位ADC原始值 |
| RSSI | 信号强度估计 (0-100)基于NRF RPD载波检测 |
| 丢包率 | 滑动窗口估算 (0-100%) |
回传频率可通过串口命令 `TELEM(N)` 设置为 1~10Hz。
### 不同输出模式下的回传行为
| 输出模式 | 回传通道 | 说明 |
|---------|---------|------|
| PWM (默认) | NRF24L01 | 通过NRF回传电压、RSSI、丢包率 |
| SBUS | NRF24L01 | 同上 |
| CRFS | CRSF UART + NRF | 通过CRSF遥测帧回传电压/RSSI/丢包同时将飞控发来的CRSF帧通过NRF转发给发射机 |
## 引脚分配
### 功能引脚
| 功能 | 引脚 | 说明 |
|-----------|------------|---------------------------------------|
| CH1 | P3.7 | 舵机 PWM 输出 1 (50Hz) |
| CH2 | P3.6 | 舵机 PWM 输出 2 |
| CH3 | P3.5 | 舵机 PWM 输出 3 |
| CH4 | P3.4 | 舵机 PWM 输出 4 |
| BAT_ADC | P3.3/ADC11 | 电池电压分压输入 |
| LED | P3.2 | 状态指示灯 |
| TX | P3.1 | UART1 TX / SBUS 输出 (经板上三极管反相)|
| RX | P3.0 | UART1 RX / 命令输入 |
### NRF24L01连接引脚
NRF24L01基于STC8系列的一路硬件SPI进行开发。由于IRQ连接到了不具备中断的引脚上可以通过主函数轮询的方法检测引脚状态
| SCK | P1.5 |
| CE | P1.6 |
| IRQ | P1.7 |
| CSN | P5.4 |
| MISO | P1.3 |
| MOSI | P1.4 |
## 串口命令
通过 P3.0 (RX) 输入,115200 8N1,回车或换行结束命令。串口模式时也持续监听是否从串口接收到以下命令,未监听到不影响串口和飞控通信:
| 命令 | 作用 |
|-------------------|----------------------------------------------|
| `MODEL(SBUS)` | 切换到 SBUS 反向 UART 输出 (100kbps 8N2) |
| `MODEL(PWM)` | 切换到 4 路舵机 PWM 输出 (50Hz) |
| `MODEL(UART)` | 切换到 UART 输出 (115200 8N1) |
| `MODEL(CRFS)` | 切换到 CRSF/Crossfire 输出 (420kbps 8N1) |
| `ADDR(0xHH HH HH HH HH)` | 切换 NRF24L01 地址 (5 字节十六进制) |
| `PHRASE(xxxxxx)` | 设置对频短语1~6位支持大小写字母和数字 |
| `TUN(N)` | 切换 RF 频道 (0..125 十进制) |
| `DEL(BIND)` | 清除EEPROM内的对频信息 |
| `TELEM(N)` | 设置回传频率 (1~10Hz, 默认2Hz) |
每次命令有效都会应答:
* `OK\r\n` - 成功
* `ERR\r\n` - 命令格式错
* `ERR_ADDR\r\n` - 地址参数错
* `ERR_RANGE\r\n` - 范围错
* `UNK\r\n` - 未知命令