Improve:External Mcu design.
This commit is contained in:
parent
96ed848470
commit
073087411b
|
@ -2,9 +2,10 @@
|
||||||
|
|
||||||
  为满足打猎相机的低功耗需求,使用外置MCU的硬件设计框架,在非工作状态下保持外置MCU供电,CPU断电,满足低功耗的产品需求。
|
  为满足打猎相机的低功耗需求,使用外置MCU的硬件设计框架,在非工作状态下保持外置MCU供电,CPU断电,满足低功耗的产品需求。
|
||||||
|
|
||||||
| 修改 | 说明 |
|
| 版本 | 时间 | 说明 |
|
||||||
| ---- | ---- |
|
| ---- | ---- | ---- |
|
||||||
| 2024-5-14 | 首次评审。 |
|
| V1.0 | 2024-5-14 | 首次评审。 |
|
||||||
|
| V1.1 | 2024-5-15 | 完善时序图。 |
|
||||||
|
|
||||||
## 1.1. 基本概念
|
## 1.1. 基本概念
|
||||||
|
|
||||||
|
@ -64,18 +65,17 @@
|
||||||
|
|
||||||
### 1.3.1. 整机物理上电启动
|
### 1.3.1. 整机物理上电启动
|
||||||
|
|
||||||
  整机物理上电时,根据实际情况刷新设备的工作状态。
|
  整机物理上电时,设备一定会进入TEST或者ON状态,主控Linux启动一次。
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
participant CPU
|
participant CPU
|
||||||
participant MCU
|
participant MCU
|
||||||
MCU ->> MCU:物理上电
|
MCU ->> MCU:物理上电
|
||||||
MCU ->> MCU:串口初始化
|
MCU ->> CPU:物理上电
|
||||||
|
CPU ->> MCU:查询启动模式
|
||||||
alt 检测到TEST拨档挡位
|
alt 检测到TEST拨档挡位
|
||||||
MCU ->> CPU:物理上电
|
MCU -->> CPU:回复TEST启动
|
||||||
CPU ->> +MCU:查询启动模式
|
|
||||||
MCU -->> -CPU:回复TEST启动
|
|
||||||
CPU ->> CPU:TEST启动
|
CPU ->> CPU:TEST启动
|
||||||
loop 无操作
|
loop 无操作
|
||||||
CPU ->> MCU:发送关机指令
|
CPU ->> MCU:发送关机指令
|
||||||
|
@ -83,27 +83,16 @@ alt 检测到TEST拨档挡位
|
||||||
end
|
end
|
||||||
else 检测到ON拨档挡位
|
else 检测到ON拨档挡位
|
||||||
note over MCU:正常工作模式,PIR触发后可给主控上电
|
note over MCU:正常工作模式,PIR触发后可给主控上电
|
||||||
MCU ->> CPU:物理上电
|
MCU -->> CPU:回复ON启动
|
||||||
CPU ->> +MCU:查询启动模式
|
|
||||||
MCU -->> -CPU:回复ON启动
|
|
||||||
CPU ->> CPU:ON启动
|
CPU ->> CPU:ON启动
|
||||||
CPU ->> MCU:发送关机指令
|
CPU ->> MCU:发送关机指令
|
||||||
MCU ->> CPU:物理断电
|
MCU ->> CPU:物理断电
|
||||||
end
|
end
|
||||||
opt PIR触发中断
|
|
||||||
MCU ->> CPU:物理上电
|
|
||||||
MCU ->> +CPU:发送PIR触发启动
|
|
||||||
CPU ->> CPU:PIR启动
|
|
||||||
CPU -->> -MCU:回复OK
|
|
||||||
CPU ->> MCU:发送关机指令
|
|
||||||
MCU ->> CPU:物理断电
|
|
||||||
end
|
|
||||||
loop 默认开启喂狗
|
loop 默认开启喂狗
|
||||||
opt 喂狗超时
|
opt 喂狗超时
|
||||||
MCU ->> CPU:断电重启
|
MCU ->> CPU:断电重启
|
||||||
MCU ->> +CPU:发送启动模式:喂狗异常启动
|
CPU ->> +MCU:查询启动模式
|
||||||
CPU ->> CPU:异常启动
|
MCU -->> -CPU:回复喂狗异常启动
|
||||||
CPU -->> -MCU:回复OK
|
|
||||||
CPU ->> MCU:发送关机指令
|
CPU ->> MCU:发送关机指令
|
||||||
MCU ->> CPU:物理断电
|
MCU ->> CPU:物理断电
|
||||||
end
|
end
|
||||||
|
@ -123,32 +112,28 @@ sequenceDiagram
|
||||||
participant CPU
|
participant CPU
|
||||||
participant MCU
|
participant MCU
|
||||||
loop 常通电待机
|
loop 常通电待机
|
||||||
opt CPU关机
|
|
||||||
CPU ->> MCU:发送关机指令
|
|
||||||
MCU ->> CPU:物理断电
|
|
||||||
MCU ->> MCU:休眠
|
|
||||||
end
|
|
||||||
opt PIR触发中断
|
opt PIR触发中断
|
||||||
MCU ->> MCU:休眠唤醒
|
MCU ->> MCU:休眠唤醒
|
||||||
MCU ->> CPU:物理上电
|
MCU ->> CPU:物理上电
|
||||||
MCU ->> +CPU:发送PIR触发启动
|
CPU ->> +MCU:查询启动模式
|
||||||
CPU -->> -MCU:回复OK
|
MCU -->> -CPU:回复PIR启动
|
||||||
end
|
end
|
||||||
opt TEST按键中断
|
opt TEST/ON按键中断
|
||||||
MCU ->> MCU:休眠唤醒
|
MCU ->> MCU:休眠唤醒
|
||||||
MCU ->> CPU:物理上电
|
MCU ->> CPU:物理上电
|
||||||
MCU ->> +CPU:发送TEST启动
|
CPU ->> +MCU:查询启动模式
|
||||||
CPU -->> -MCU:回复OK
|
MCU -->> -CPU:回复TEST/ON启动
|
||||||
end
|
end
|
||||||
opt 设置定时唤醒
|
opt 设置定时唤醒
|
||||||
CPU ->> MCU:发送设置定时唤醒协议
|
CPU ->> MCU:发送设置定时唤醒协议
|
||||||
opt 定时唤醒中断
|
opt 定时唤醒中断
|
||||||
MCU ->> MCU:休眠唤醒
|
MCU ->> MCU:休眠唤醒
|
||||||
MCU ->> CPU:物理上电
|
MCU ->> CPU:物理上电
|
||||||
MCU ->> +CPU:发送定时唤醒启动
|
CPU ->> +MCU:查询启动模式
|
||||||
CPU -->> -MCU:回复OK
|
MCU -->> -CPU:回复喂狗异常启动
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
MCU ->> MCU:休眠
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -214,9 +199,8 @@ loop 默认开启喂狗
|
||||||
end
|
end
|
||||||
alt 主控喂狗异常
|
alt 主控喂狗异常
|
||||||
MCU ->> CPU:断电重启
|
MCU ->> CPU:断电重启
|
||||||
MCU ->> +CPU:发送启动模式:喂狗异常启动
|
CPU ->> +MCU:查询启动模式
|
||||||
CPU ->> CPU:喂狗异常启动
|
MCU -->> -CPU:回复喂狗异常启动
|
||||||
CPU -->> -MCU:回复OK
|
|
||||||
CPU ->> MCU:断电关机
|
CPU ->> MCU:断电关机
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -228,7 +212,7 @@ note over MCU:休眠后进入正常工作模式:当发生PIR触发时,<br>
|
||||||
|
|
||||||
#### 1.3.3.3. 超时异常启动
|
#### 1.3.3.3. 超时异常启动
|
||||||
|
|
||||||
  CPU单次上电时间都是有限的,在主控未正常发送关机指令时,3min后断电进行异常启动。
|
  CPU单次上电时间都是有限的,在主控未正常发送关机指令时,3min后断电进行异常启动。TEST/产测模式等需要一直开机的场景,主控关闭喂狗功能即可。
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
|
@ -236,11 +220,13 @@ participant CPU
|
||||||
participant MCU
|
participant MCU
|
||||||
MCU ->> MCU:物理上电
|
MCU ->> MCU:物理上电
|
||||||
MCU ->> CPU:某种启动模式触发物理上电
|
MCU ->> CPU:某种启动模式触发物理上电
|
||||||
opt 主控未正常发送关机指令
|
alt 主控未关闭喂狗
|
||||||
MCU ->> CPU:物理断电
|
note over MCU:如果主控关闭喂狗的功能,<br>也同时关闭超时异常启动功能
|
||||||
MCU ->> +CPU:发送启动模式:喂狗异常启动
|
opt 主控未正常发送关机指令
|
||||||
CPU ->> CPU:喂狗异常启动
|
MCU ->> CPU:物理断电
|
||||||
CPU -->> -MCU:回复OK
|
CPU ->> +MCU:查询启动模式
|
||||||
|
MCU -->> -CPU:回复喂狗异常启动
|
||||||
|
end
|
||||||
end
|
end
|
||||||
CPU ->> MCU:断电关机
|
CPU ->> MCU:断电关机
|
||||||
MCU ->> CPU:物理断电
|
MCU ->> CPU:物理断电
|
||||||
|
@ -259,9 +245,9 @@ loop 常通电待机
|
||||||
opt PIR触发中断
|
opt PIR触发中断
|
||||||
MCU ->> MCU:休眠唤醒
|
MCU ->> MCU:休眠唤醒
|
||||||
MCU ->> CPU:物理上电
|
MCU ->> CPU:物理上电
|
||||||
MCU ->> +CPU:发送PIR触发启动模式
|
CPU ->> +MCU:查询启动模式
|
||||||
CPU ->> CPU:PIR启动
|
MCU -->> -CPU:回复PIR触发启动
|
||||||
CPU -->> -MCU:回复OK
|
CPU ->> CPU:Do something
|
||||||
CPU ->> MCU:断电关机
|
CPU ->> MCU:断电关机
|
||||||
MCU ->> CPU:物理断电
|
MCU ->> CPU:物理断电
|
||||||
MCU ->> MCU:休眠
|
MCU ->> MCU:休眠
|
||||||
|
@ -280,17 +266,12 @@ sequenceDiagram
|
||||||
participant CPU
|
participant CPU
|
||||||
participant MCU
|
participant MCU
|
||||||
MCU ->> MCU:常电待机
|
MCU ->> MCU:常电待机
|
||||||
opt 拨键从ON拨到TEST
|
opt 拨键从ON/OFF拨到TEST
|
||||||
note over MCU:TEST模式启动,只会发生在从ON切换到TEST的瞬间,<br>如果PIR触发时,已经处于TEST挡位,此时不影响PIR模式启动
|
note over MCU:TEST模式启动,只会发生在从ON/OFF切换到TEST的瞬间,<br>如果PIR触发时,已经处于TEST挡位,此时不影响PIR模式启动
|
||||||
MCU ->> CPU:物理上电
|
MCU ->> CPU:物理上电
|
||||||
MCU ->> +CPU:发送启动模式:TEST启动
|
CPU ->> +MCU:查询启动模式
|
||||||
CPU ->> CPU:TEST启动
|
MCU -->> -CPU:回复TEST启动
|
||||||
CPU -->> -MCU:回复OK
|
CPU ->> CPU:Do something
|
||||||
opt 拨键从TEST拨到ON
|
|
||||||
note over MCU:进入ON模式,设备处于正常工作状态
|
|
||||||
CPU ->> MCU:发送断电关机
|
|
||||||
MCU ->> CPU:物理断电
|
|
||||||
end
|
|
||||||
opt CPU关机
|
opt CPU关机
|
||||||
note over MCU:超时关机时,<br>此时拨键还是处于“TEST”挡位的
|
note over MCU:超时关机时,<br>此时拨键还是处于“TEST”挡位的
|
||||||
CPU ->> MCU:发送断电关机
|
CPU ->> MCU:发送断电关机
|
||||||
|
@ -300,7 +281,69 @@ end
|
||||||
MCU ->> MCU:休眠
|
MCU ->> MCU:休眠
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 1.3.3.6. 数据同步
|
#### 1.3.3.6. 主控通电时发生启动事件
|
||||||
|
|
||||||
|
  如果主控在通电后(主控发送关机指令之前)发生启动事件的动态变化,需要先主动发送启动事件,有主控发送关机指令后,再断电重启触发新的启动事件。
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
sequenceDiagram
|
||||||
|
participant CPU
|
||||||
|
participant MCU
|
||||||
|
MCU ->> MCU:主控已经上电,常电待机
|
||||||
|
note over MCU:此处不管由于何总原因的主控上电,<br>如果发生启动事件动态变化,需要先发送启动命令给主控
|
||||||
|
opt 拨键从ON拨到TEST
|
||||||
|
MCU ->> +CPU:发送启动模式:TEST启动
|
||||||
|
CPU ->> CPU:Do something
|
||||||
|
CPU -->> -MCU:回复OK
|
||||||
|
CPU ->> MCU:发送断电关机
|
||||||
|
MCU ->> CPU:物理断电重启
|
||||||
|
CPU ->> +MCU:查询启动模式
|
||||||
|
MCU -->> -CPU:回复TEST启动
|
||||||
|
CPU ->> CPU:TEST启动
|
||||||
|
opt CPU关机
|
||||||
|
note over MCU:超时关机时,<br>此时拨键还是处于“TEST”挡位的
|
||||||
|
CPU ->> MCU:发送断电关机
|
||||||
|
MCU ->> CPU:物理断电
|
||||||
|
end
|
||||||
|
end
|
||||||
|
opt 拨键从TEST拨到ON
|
||||||
|
MCU ->> +CPU:发送启动模式:ON启动
|
||||||
|
CPU ->> CPU:Do something
|
||||||
|
CPU -->> -MCU:回复OK
|
||||||
|
CPU ->> MCU:发送断电关机
|
||||||
|
MCU ->> CPU:物理断电重启
|
||||||
|
CPU ->> +MCU:查询启动模式
|
||||||
|
MCU -->> -CPU:回复ON启动
|
||||||
|
CPU ->> CPU:ON启动
|
||||||
|
opt CPU关机
|
||||||
|
CPU ->> MCU:发送断电关机
|
||||||
|
MCU ->> CPU:物理断电
|
||||||
|
end
|
||||||
|
end
|
||||||
|
opt PIR触发
|
||||||
|
note over MCU:上电后发生PIR触发,主控立即处理抓拍流程,无需断电重启。
|
||||||
|
MCU ->> +CPU:发送启动模式:PIR启动
|
||||||
|
CPU ->> CPU:Do something
|
||||||
|
CPU -->> -MCU:回复OK
|
||||||
|
opt CPU关机
|
||||||
|
CPU ->> MCU:发送断电关机
|
||||||
|
MCU ->> CPU:物理断电
|
||||||
|
end
|
||||||
|
end
|
||||||
|
opt 定时启动
|
||||||
|
note over MCU:上电后发生定时启动,主控立即处理抓拍流程,无需断电重启。
|
||||||
|
MCU ->> +CPU:发送启动模式:定时启动
|
||||||
|
CPU ->> CPU:Do something
|
||||||
|
CPU -->> -MCU:回复OK
|
||||||
|
opt CPU关机
|
||||||
|
CPU ->> MCU:发送断电关机
|
||||||
|
MCU ->> CPU:物理断电
|
||||||
|
end
|
||||||
|
end
|
||||||
|
MCU ->> MCU:休眠
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 1.3.3.7. 数据同步
|
||||||
|
|
||||||
  主控和外置MCU之间数据同步,包括主控发给外置MCU的,也包括外置MCU发给主控的。数据同步流程可以在任意的工作状态下进行。
|
  主控和外置MCU之间数据同步,包括主控发给外置MCU的,也包括外置MCU发给主控的。数据同步流程可以在任意的工作状态下进行。
|
||||||
|
|
||||||
|
@ -321,6 +364,12 @@ MCU ->> MCU:休眠
|
||||||
note over MCU:休眠后进入正常工作模式:当发生PIR触发时,<br>给CPU物理上电并发送PIR启动命令
|
note over MCU:休眠后进入正常工作模式:当发生PIR触发时,<br>给CPU物理上电并发送PIR启动命令
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 1.3.4. 连拍
|
||||||
|
|
||||||
|
  打猎机可以设置连拍张数和连拍间隔。连拍张数1-3,连拍间隔0-60s;
|
||||||
|
|
||||||
|
**备注:竞品的连拍间隔为0/1/2s。先做0/1/2s连拍,此时与外置MCU无关。**
|
||||||
|
|
||||||
## 1.4. MCU协议
|
## 1.4. MCU协议
|
||||||
|
|
||||||
  负责对MCU协议进行封包/解包,协议封包/解包功能独立封装成库,详见[协议文档](../../utils/McuProtocol/README.md)。
|
  负责对MCU协议进行封包/解包,协议封包/解包功能独立封装成库,详见[协议文档](../../utils/McuProtocol/README.md)。
|
Loading…
Reference in New Issue
Block a user