修复协议解析器, 打通与 MPU 的双向通信

- protocol: 修复 edc_cycle_parse_byte 状态机死代码 (switch 恒 return, 收帧逻辑不可达), 并加 LEN 未就绪保护
- protocol: UART 默认引脚改为 GPIO11/12 (UART0)
- sdkconfig.defaults: 控制台切至 USB Serial/JTAG, 避免与协议 UART0 冲突
- web_ctrl: 新增协议状态 API 与 Cycle 快照; on_cycle 回 DONE 并按 cycle_id 去重
- main: 接入协议初始化与接收任务, 更新接线注释
- 实测: MPU 每秒下发 Cycle, I2C/UART 双通道 12/12 收, DONE 12/12 回
This commit is contained in:
kirl committed 2026-07-29 23:24:31 +08:00
1 parent 40ee976236
commit af4f0edc08
9 files changed
+218 -20

No files matched your search

+20 -3
View File
@@ -7,7 +7,14 @@
* ESP32 RX (GPIO7) -> 电机 TX
* ESP32 GPIO5 -> 电磁铁
* ESP32 GPIO4 -> 舵机
* ESP32 GND -> 电机 GND
* ESP32 GPIO11 -> 协议 UART TX (→ MPU) (UART0)
* ESP32 GPIO12 -> 协议 UART RX (← MPU) (UART0)
* ESP32 GPIO2 -> I2C SDA (← MPU)
* ESP32 GPIO3 -> I2C SCL
* ESP32 GND -> 电机 GND / MPU GND
*
* 注: 日志控制台已切换到 USB Serial/JTAG (COM 口监视),
* UART0 (GPIO11/12) 专用于 MPU 协议通讯。
*
* WiFi: 连接 ICE (密码 12345678), 获取 IP 后用浏览器打开控制页面
*/
@@ -16,8 +23,12 @@
#include "magnet.h"
#include "servo.h"
#include "web_ctrl.h"
#include "protocol.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
static const char *TAG = "MAIN";
void app_main(void)
{
@@ -30,14 +41,20 @@ void app_main(void)
/* 初始化舵机 (GPIO4, 上限180° 下限0°) */
servo_init(GPIO_NUM_4);
/* 初始化通讯协议 (I2C 从机 GPIO2/3 + UART0 GPIO11/12) */
edc_proto_init(NULL);
/* 启动协议接收任务 */
xTaskCreate(edc_proto_task, "proto", 4096, NULL, 2, NULL);
/* 上电延时 2 秒, 等待电机闭环初始化完毕 */
ESP_LOGI("MAIN", "等待电机初始化...");
ESP_LOGI(TAG, "等待电机初始化...");
vTaskDelay(pdMS_TO_TICKS(2000));
/* 启动 WiFi + HTTP 网页控制服务器 */
web_ctrl_init();
ESP_LOGI("MAIN", "系统就绪, 等待网页指令...");
ESP_LOGI(TAG, "系统就绪, 等待网页指令...");
while (1) {
vTaskDelay(pdMS_TO_TICKS(1000));
}