P0功能已实现,按键、LED、过零检测、配网、OTA都已正常实现

This commit is contained in:
2026-09-04 18:49:07 +08:00
parent 2fb61a6458
commit 0de88083ba
47 changed files with 5184 additions and 26 deletions
+115
View File
@@ -0,0 +1,115 @@
/******************************************************************************
* @file board_pin.h
* @brief CBR1 板级引脚、电平与时序(换板只改本文件)
* @author cyWu <1917507415@qq.com>
* @date 2026.09.04
* @version V1.1.0
*
* @note UART0_TX=PC5 在 board_jl701n_demo_cfg.h。
* 过零用 MCPWM FPIN 双沿(CH0 下降 / CH1 上升),勿占这两个 PWM 通道。
* 软件采样兜底必须挂真实 1ms 定时器,禁止在 20ms 节拍里空循环读沿。
******************************************************************************/
#ifndef __BOARD_PIN_H__
#define __BOARD_PIN_H__
#include "asm/gpio.h"
/*============================================================================*/
/* 功能开关:某路硬件异常时可单独关掉,不影响配网 */
/* 0 时对应模块 init/run 直接 returnGPIO 不配,日志打一次 xxx disabled */
/*============================================================================*/
#define BOARD_LED_ENABLE 1 /**< 1=红绿状态 LEDPA7 红 / PA8 绿,低亮) */
#define BOARD_KEY_ENABLE 1 /**< 1=按键 PB1(低按下) */
#define BOARD_RELAY_ENABLE 1 /**< 1=继电器 PC3(高导通) */
#define BOARD_ZC_ENABLE 1 /**< 1=过零 PA1;=0 时开请求禁吸合、关请求强制断开 */
#define BOARD_LINKAGE_ENABLE 0 /* 联动引擎(第 10 章);P2 开 */
#define BOARD_TIMER_ENABLE 0 /* 定时引擎(第 11 章);P2 开 */
#define BOARD_TH_SCAN_ENABLE 0 /* 断连扫描风扇广播(第 8 章);P2 开 */
#define BOARD_RUNREC_ENABLE 0 /* 31 天运行记录(第 13 章);P2 开 */
#define BOARD_NVM_ENABLE 0 /* VM 持久化(第 13 章);P1 开 */
/*============================================================================*/
/* GPIO */
/*============================================================================*/
#define BOARD_UART_TX_PIN IO_PORTC_05 /**< 调试 UART TXcfg: TCFG_UART0_TX_PORT */
#define BOARD_KEY_PIN IO_PORTB_01 /**< 按键,低电平按下 */
#define BOARD_ZC_PIN IO_PORTA_01 /**< 过零检测,双沿都算一次过零 */
#define BOARD_LED_GREEN_PIN IO_PORTA_08 /**< 绿灯,低电平亮 */
#define BOARD_LED_RED_PIN IO_PORTA_07 /**< 红灯,低电平亮 */
#define BOARD_RELAY_PIN IO_PORTC_03 /**< 继电器,高电平导通(加热开) */
#define BOARD_LED_ON_LEVEL 0 /**< LED 点亮电平:0=低亮 */
#define BOARD_RELAY_ON_LEVEL 1 /**< 继电器有效电平:1=高导通 */
#define BOARD_KEY_ACTIVE_LEVEL 0 /**< 按键有效电平:0=按下为低 */
/*============================================================================*/
/* 按键 / 配对 / OTA */
/*============================================================================*/
/**
* 直接作为 key.c 状态机的 keyLongTime/keyLastTime 使用:
* 松手时刻 <BOARD_KEY_PAIR_MS → SHORT_Event,切加热(见 5.3
* 按住满 BOARD_KEY_PAIR_MS → LONG_Event(仍按住),切配对提示灯(绿灯快闪)
* 按住满 BOARD_KEY_OTA_MS → LAST_Event(仍按住,到点即触发),进 OTA
* 按满 5s~12s 后松手 → RELEASE_Event,提交配对
*/
#define BOARD_KEY_PAIR_MS 5000 /**< keyLongTime:满 5s 挂配对提示灯 */
#define BOARD_KEY_OTA_MS 12000 /**< keyLastTime:满 12s 到点直接进 OTA */
#define BOARD_KEY_DEBOUNCE_MS 20 /**< 按键消抖(参考值;key.c 内部以 30 为准) */
#define BOARD_PAIR_TIMEOUT_MS (120u * 1000u) /**< 配对超时 120s,失败后保持开机 */
/*============================================================================*/
/* LED(红绿双通道,低亮;事件表见 led_manager.c */
/*============================================================================*/
#define BOARD_LED_FAST_ON_MS 100 /**< 配对快闪:亮 */
#define BOARD_LED_FAST_OFF_MS 100 /**< 配对快闪:灭 */
#define BOARD_LED_OTA_ON_MS 200 /**< OTA 红绿交替半周期:亮 */
#define BOARD_LED_OTA_OFF_MS 200 /**< OTA 红绿交替半周期:灭 */
#define BOARD_LED_ALT_MS 200 /**< 交替事件半周期(配对失败 / OTA) */
#define BOARD_LED_PAIR_OK_MS 3000 /**< 配对成功绿灯常亮时长 */
#define BOARD_LED_PAIR_FAIL_MS 3000 /**< 配对失败提示总时长 */
#define BOARD_LED_STANDBY_ON 1 /**< 1=跟继电器灯常亮 */
/*============================================================================*/
/* 继电器 + 过零 */
/*============================================================================*/
#define BOARD_ZC_TIMEOUT_MS 100 /**< 过零超时:pending 置位后 100ms 无沿走超时路径 */
#define BOARD_ZC_SCAN_MS 1 /**< 软件兜底采样子步长(真实 1ms 定时器驱动) */
/* 过零沿检测方式:MCPWM FPIN 硬件边沿中断(官方例程 usr_hw_demo/usr_hw_gpio_int.c */
#define BOARD_ZC_USE_IRQ 1 /**< 1=FPIN 边沿中断执行切变;0=纯软件采样(真实 1ms 定时器) */
#define BOARD_ZC_FPIN_FALL_CH 0 /**< 下降沿用的 FPIN 通道号 0~3 */
#define BOARD_ZC_FPIN_RISE_CH 1 /**< 上升沿用的 FPIN 通道号 0~3(双沿=规格书 4/2.2 要求) */
#define BOARD_ZC_FPIN_BOTH_EDGE 1 /**< 1=双沿都算过零(占两个通道);0=只用下降沿通道 */
#define BOARD_ZC_FPIN_FILTER_EN 1 /**< 1=开 FPIN 硬件滤波(抗过零毛刺);不触发时试 0 */
#define BOARD_ZC_FPIN_FILTER 0x3FUL /**< 滤波档位 bits[5:0],例程默认 0b111111 */
#define BOARD_ZC_PULL_UP 1 /**< PA1 内部上拉(光耦 OC 输出时必须有;推挽输入也无害) */
#define BOARD_ZC_PULL_DOWN 0 /**< PA1 内部下拉,通常 0(与上拉互斥) */
#define BOARD_ZC_SW_POLL_1MS 0 /**< 1=额外挂真实 1ms 软件采样兜底(中断失效时滞后 ≤1ms,代价 1000Hz ISR */
#define BOARD_ZC_DIAG_LOG 1 /**< 1=500ms 打印一次过零沿计数(台上确认中断在跑,量产出货置 0) */
/*============================================================================*/
/* 断连扫描(P2,第 8.2 节) */
/*============================================================================*/
#define BOARD_ADV_SCAN_SLOT_MS 500 /* 重连广播 / 扫描各占一拍 */
/*============================================================================*/
/* 联动(P2,第 10 章:1 条 20B 配置,回差开/关) */
/*============================================================================*/
#define BOARD_LINKAGE_CFG_LEN 20 /**< DP8 linkage_config 长度(Byte) */
/*============================================================================*/
/* 运行记录(P2,第 13.1 节:31 天 × uint32 秒) */
/*============================================================================*/
#define BOARD_RUN_RECORD_DAYS 31 /**< 记录天数 */
#define BOARD_RUN_RECORD_SAVE_SEC 600 /**< 累计吸合 10 分钟写一次 VM */
#endif /* __BOARD_PIN_H__ */