Commit Graph
13 Commits
Author SHA1 Message Date
wangfq af364cea65 fix(opt): 光耦复位改为上升沿触发 + 使能 PB10 数字输入
1. 逻辑改为上升沿触发:
   干接点接通(PB10=0) ≥500ms → 断开(上升沿) → SYS_ResetExecute()
   中途断开 <500ms → 计时清零, 不触发

2. 使能 PB10 数字输入:
   R32_PIN_CONFIG2 &= ~(1UL<<26)
   RB_PIN_PB10_15_DIS 默认置位关闭数字输入以省电,
   DLD110SV4 未用 PB10 作输入因此未配置
2026-07-24 16:43:04 +08:00
wangfq 71366fe1a7 fix(opt): 光耦复位改为 SYS_ResetExecute() 芯片全复位
INIT_VD() 仅复位检测状态,SYS_ResetExecute() 全芯片复位
包括 MCU 外设、BLE 协议栈、RS485 全部重新初始化
2026-07-24 13:35:02 +08:00
wangfq b98c931baa feat: 光耦输入复位功能 (PB10 ≥500ms 低电平触发 INIT_VD)
opt_input_poll():
- g_fm_radar_input_disable=0: 雷达模式 (暂未实现)
- g_fm_radar_input_disable=1: 光耦复位模式
  PB10 低电平 ≥500ms → INIT_VD() + rs485_reset_heartbeat()
  <500ms 脉冲被消抖忽略 (上升沿清零计时)
2026-07-24 12:09:53 +08:00
wangfq 4964e0d019 feat: 支持四级灵敏度 (MAX_LOOP_SENS_AMOUNT 3→4)
- SensTable:  新增第四档 14 (原 108/54/28)
- SensTable1: 新增第四档 12 (原 81/32/16)
- set_factory_param(): total 由 MAX_LOOP_SENS_AMOUNT 宏决定
2026-07-24 11:10:44 +08:00
wangfq cd42b75f53 fix(rs485): 修复死循环导致地感不工作
根因:
1. rs485_send() 中 while(R8_UART0_TFC == 0) 逻辑反了
   TFC=0 表示 FIFO 空, ==0 时条件永真 → 死循环卡死主循环
   修复: ==0 → !=0 (等 FIFO 空再写下一字节)

2. rs485_init() 从未被调用
   gpio_uart_init() 仅写了注释, 未实际调用 → UART0/GPIO 未初始化
   修复: 替换注释为实际函数调用

3. 首次心跳立即触发
   _hb_last_ms 静态初始化为 0 → 首次 poll 立即发心跳
   修复: rs485_init() 末尾 _hb_last_ms = mstick()
2026-07-24 09:06:51 +08:00
wangfq ab469315bf feat(DLD154Pro): RS485 700BS 从机协议实现
新增 rs485_700bs.c/h:
  - UART0 9600 8N1 中断接收, PA13 方向控制
  - 命令处理: 0xFA(状态)/0x1B(频率)/0x2C(复位)/0x3D(拨码)
  - 心跳上报: 0xAA 空闲5s/故障1s/事件立即
  - XOR 校验, 地址匹配 (g_rs485_id)
  - 0x2C 复位: loop1_LC_Reset + INI_LOOP 完整初始化

集成 peripheral_main.c:
  - rs485_init() 替换 GPIO placeholder
  - rs485_poll() 加入主循环 (cjq_srv 之后)
2026-07-23 18:51:30 +08:00
wangfq 441a3e61cb feat: BLE 新增 RS485 地址/波特率读写 + 空闲关蓝牙超时 + 功能码细分
- 新增 CMD_DBN_RW_UART_BAUD (0x31): 读写 RS485 波特率、485 地址、空闲关蓝牙超时
- storage.h: 新增 flash 地址 ADDR_BT_Close_TIMEOUT_Offset(0x10)、Addr_RS485_Baud_Offset(0x11,3B)、Addr_RS485_ID_Offset(0x14)
- 功能码细分: g_function_mode bit0→fm_700bs_disable(0=700BS/1=Modbus), bit1→fm_radar_input_disable(0=光耦/1=复位)
- factory_dev 出厂默认: RS485 ID=1, 波特率=9600, 蓝牙超时=0
- para_store_init 上电从 flash 恢复所有新增配置
2026-07-22 14:25:32 +08:00
wangfq f89457cebe perf: 呼吸灯加速至 ~1.9s 心跳周期
- 步进: 1→8 级/50ms, 渐亮/渐灭各 ~800ms
- Hold: 0.5s/0.3s→150ms/150ms
- 总周期 13.5s→1.9s, 快速判断设备存活
2026-07-21 17:20:38 +08:00
wangfq 9a490ca29d fix: pwm_led_init 前置声明修复编译警告 2026-07-21 17:08:45 +08:00
wangfq ee9aba64b8 feat: LEDB 红色呼吸灯 (PB23, PWM11)
- 新增 pwm_led_init(): 初始化 PWM11, f≈5.86kHz, 分辨率128级
- 新增四相呼吸状态机 (渐亮/高亮保持/渐灭/低亮保持), ~13.5s周期
- gpio_uart_init(): LEDB 从 GPIO 改为 PWM 控制
- LEDB_ON/OFF 宏保留备用 (不再用于呼吸控制)
- 注: PB23 需在 ISP 烧录时关闭外部复位 (RB_CFG_RESET_EN=0)
2026-07-21 16:40:05 +08:00
wangfq 7683627639 fix: 修复灵敏度无法修改 + 调整有限存在时间 + 版本号更新
- dbn_ble_srv.c: unpack_pkg_set_cjq_param() 中同步更新 g_freq_sens,
  修复 BLE 小程序修改灵敏度无效的 bug
- dbn_ble_srv.c: g_hold_time 公式对齐 para_store_init (20*5)
- peripheral_main.c: g_freq_sens 从 INIT_VD 写死值移到
  para_store_init() 从存储读取
- cmcng.h: 固件 v3.00, 硬件 v3.01
2026-07-21 16:19:40 +08:00
wangfq 91ba84495d feat: 按DLD154Pro硬件资源文档调整代码
变更摘要:
- LED.h: PB15→PB22(LEDA绿)+PB23(LEDB红呼吸灯)
- cmcng.h: 型号DLD110S→DLD154Pro, 版本v4.01/hw1.00
- peripheral.c: BLE广播名/设备名→DLD154Pro
- peripheral_main.c: 删RLY2/KEY_SA1_SA2/FLEVEL_L/DEBUG_UART
- peripheral_main.c: 新增RS485预留(PA14/15/13)+光耦预留(PB10)
- peripheral_main.c: 简化继电器为单路(PA8), 一级调频(PA12)
- peripheral_main.c: 删poll_sens_key(), g_freq_sens默认值=2
- IDE工程文件: DLD110S→DLD154Pro
2026-07-21 10:43:45 +08:00
wangfq 5f5f697992 init: DLD154Pro 单线圈蓝牙车检器,从 DLD110SV4 复制初始代码和文档 2026-07-21 10:38:23 +08:00