wangfq
|
c8d1bfa4e8
|
fix(rs485): 频率从原始 capvd 直接计算,不再依赖 BLE 报告通道
rs485_get_freq(): 用 g_loop_acs_info.loop_capvd + loop1_LPCNT 直接算
freq = FREQ_SYS * LPCNT / capvd + 360
之前 g_loop_acs_info.frequent 只在 usart_packet_processing_acs_loop
里赋值,该路径被 g_dbn_ble_state_acs_enable.enable 门控,
BLE 断开时 freq 永远为 0
|
2026-07-24 09:46:02 +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
|
db234bad1b
|
fix(rs485): 修复 UART0 API 编译错误
- UART0_ResetRTXFIFO → UART0_CLR_RXFIFO/UART0_CLR_TXFIFO (SDK无此函数)
- UART0_Res_1Byte → UART_1BYTE_TRIG (正确枚举值)
- UART0_GetITFlag() 改为 switch 模式 (无参宏,非函数调用)
- 删除不存在的 UART0_ClearITFlag (读RBR自动清中断)
- ISR 增加 UART_II_LINE_STAT 处理防中断死锁
|
2026-07-24 08:28:10 +08:00 |
|
wangfq
|
d50135c77b
|
feat(rs485): 0x3D DIP查询从BLE配置实时映射灵敏度/输出/延时
- rs485_700bs.c: handle_query_dip() 从 g_loop_cng_unit 读取 sensitvity/output_mode/exist_mode/delay_time,映射为 DIP1-5 位
- rs485_700bs.h: 恢复 CMD_QUERY_DIP / RSP_DIP 常量
- docs: 添加 DLD-700BS V1.15 使用说明书 MD 版
- DLD154Pro 无物理拨码,所有配置通过 BLE 管理,0x3D 返回当前有效参数
|
2026-07-23 19:07:12 +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 |
|