添加BSP驱动模块文档,包括继电器、传感器和UART通信的详细说明
This commit is contained in:
@@ -1,148 +0,0 @@
|
||||
# BSP Drivers
|
||||
|
||||
本目录包含外设驱动模块,包括继电器驱动、传感器驱动和UART通信。
|
||||
|
||||
---
|
||||
|
||||
## 1. 继电器驱动 (Relay)
|
||||
|
||||
控制 LIGHT 和 FAN 两个继电器。
|
||||
|
||||
### 硬件连接
|
||||
|
||||
| 继电器 | GPIO端口 | 引脚 |
|
||||
|--------|----------|------|
|
||||
| LIGHT | GPIOB | PB15 |
|
||||
| FAN | GPIOB | PB14 |
|
||||
|
||||
> 注意:两个继电器均为**低电平有效**(低电平触发开启)
|
||||
|
||||
### API 接口
|
||||
|
||||
| 函数 | 描述 |
|
||||
|------|------|
|
||||
| `BSP_Relay_Init()` | 初始化所有继电器,默认为关闭状态 |
|
||||
| `BSP_LIGHT_On()` | 打开 LIGHT 继电器 |
|
||||
| `BSP_LIGHT_Off()` | 关闭 LIGHT 继电器 |
|
||||
| `BSP_LIGHT_Toggle()` | 切换 LIGHT 继电器状态 |
|
||||
| `BSP_FAN_On()` | 打开 FAN 继电器 |
|
||||
| `BSP_FAN_Off()` | 关闭 FAN 继电器 |
|
||||
| `BSP_FAN_Toggle()` | 切换 FAN 继电器状态 |
|
||||
| `BSP_FAN_SetMode()` | 设置风扇模式(自动/手动) |
|
||||
| `BSP_FAN_SetThreshold()` | 设置自动模式温度阈值 |
|
||||
| `BSP_FAN_AutoControl()` | 根据温度自动控制风扇 |
|
||||
|
||||
---
|
||||
|
||||
## 2. BMP280 气压/温度传感器
|
||||
|
||||
使用 I2C1 接口 (PB6-SCL, PB7-SDA),I2C地址: 0x76 (SDO接地)
|
||||
|
||||
### 配置说明
|
||||
|
||||
- I2C接口: I2C1
|
||||
- I2C地址: 0x76
|
||||
- 引脚: PB6 (SCL), PB7 (SDA)
|
||||
|
||||
---
|
||||
|
||||
## 3. UART1 通信驱动 (MQTT透传)
|
||||
|
||||
使用 DMA + IDLE空闲中断 实现高效接收,用于MQTT模块透明传输。
|
||||
|
||||
### 硬件连接
|
||||
|
||||
| 功能 | GPIO端口 | 引脚 |
|
||||
|------|----------|------|
|
||||
| TX | GPIOA | PA9 |
|
||||
| RX | GPIOA | PA10 |
|
||||
|
||||
### DMA配置
|
||||
|
||||
| DMA通道 | 方向 | 说明 |
|
||||
|---------|------|------|
|
||||
| DMA1_Channel4 | TX | USART1发送 |
|
||||
| DMA1_Channel5 | RX | USART1接收 |
|
||||
|
||||
### 工作原理
|
||||
|
||||
1. DMA持续接收数据到缓冲区
|
||||
2. 检测到IDLE空闲线(一帧结束)时触发中断
|
||||
3. 中断只保存数据长度并重启DMA
|
||||
4. 主循环中调用 `BSP_UART1_Process()` 解析JSON命令并执行
|
||||
5. 执行结果以JSON格式通过UART1返回
|
||||
|
||||
### 文件结构
|
||||
|
||||
```
|
||||
Core/Bsp/
|
||||
├── bsp_uart.h / .c # UART1 DMA驱动
|
||||
├── bsp_cmd.h / .c # JSON命令解析与执行
|
||||
├── cJSON.h / .c # cJSON库(精简版)
|
||||
├── bsp_relay.h / .c # 继电器驱动
|
||||
├── bsp_flash.h / .c # Flash存储驱动
|
||||
├── bsp_bmp280.h / .c # BMP280 BSP
|
||||
├── driver_bmp280.h / .c # LibDriver BMP280
|
||||
└── driver_bmp280_interface.c / .h # HAL接口
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. JSON 命令协议
|
||||
|
||||
通信采用 JSON 格式,所有命令通过 UART1 接收,响应也通过 UART1 返回。
|
||||
|
||||
### 请求格式
|
||||
|
||||
```json
|
||||
{"cmd":"xxx","value":"xxx"}
|
||||
```
|
||||
|
||||
### 支持的命令
|
||||
|
||||
| 命令 | 请求示例 | 说明 |
|
||||
|------|---------|------|
|
||||
| 查询状态 | `{"cmd":"status"}` | 返回所有状态信息 |
|
||||
| 风扇模式 | `{"cmd":"fan_mode","value":"auto"}` | 设置风扇为自动/手动 |
|
||||
| 风扇阈值 | `{"cmd":"fan_threshold","value":30.0}` | 设置温度阈值 |
|
||||
| 风扇开关 | `{"cmd":"fan","value":"on"}` | 手动开/关风扇 |
|
||||
| 灯光开关 | `{"cmd":"light","value":"on"}` | 开/关灯 |
|
||||
| 恢复默认 | `{"cmd":"reset"}` | 恢复出厂设置 |
|
||||
|
||||
### 响应格式
|
||||
|
||||
**简单响应:**
|
||||
```json
|
||||
{"status":"ok","msg":"fan mode set to auto"}
|
||||
{"status":"error","msg":"unknown command"}
|
||||
```
|
||||
|
||||
**状态查询响应:**
|
||||
```json
|
||||
{"status":"ok","data":{"fan_mode":"auto","fan_threshold":30.0,"fan":"off","light":"off"}}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Flash存储 (bsp_flash)
|
||||
|
||||
将设置参数存储到内部Flash,实现断电保存。
|
||||
|
||||
- 存储地址: `0x0801F800` (最后一页)
|
||||
|
||||
---
|
||||
|
||||
## 初始化
|
||||
|
||||
驱动在 `MX_FREERTOS_Init()` 和任务启动时初始化:
|
||||
|
||||
```c
|
||||
// MX_FREERTOS_Init() 中
|
||||
BSP_Relay_Init(); // 继电器初始化
|
||||
BSP_BMP280_Init(); // BMP280初始化
|
||||
|
||||
// StartDefaultTask() 中
|
||||
BSP_UART1_Init(); // UART1 DMA初始化
|
||||
```
|
||||
|
||||
任务循环中调用 `BSP_UART1_Process()` 处理命令。
|
||||
Reference in New Issue
Block a user