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 之后)
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* rs485_700bs.h
|
||||
* DLD154Pro RS485 700BS 协议 — 车检器从机实现
|
||||
* 协议版本: V1.15 | 2022-08-19
|
||||
* 波特率: 9600 8N1, 半双工 RS485, XOR 校验
|
||||
*/
|
||||
#ifndef __RS485_700BS_H__
|
||||
#define __RS485_700BS_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* 协议常量 */
|
||||
#define RS485_BAUD 9600
|
||||
#define RS485_HEARTBEAT_MS 5000 // 空闲心跳 5s
|
||||
#define RS485_FAULT_MS 1000 // 故障心跳 1s
|
||||
#define RS485_MAX_FRAME 10 // 最大帧长
|
||||
|
||||
/* 命令码 (主机→从机) */
|
||||
#define CMD_QUERY_STATUS 0xFA // 查询有车状态 + 线圈好坏
|
||||
#define CMD_QUERY_FREQ 0x1B // 查询线圈频率
|
||||
#define CMD_RESET_INIT 0x2C // 复位初始化线圈
|
||||
#define CMD_QUERY_DIP 0x3D // 查询拨码 DIP1-5
|
||||
|
||||
/* 回复码 (从机→主机) */
|
||||
#define RSP_STATUS 0xF5 // 状态回复
|
||||
#define RSP_FREQ 0x14 // 频率回复
|
||||
#define RSP_DIP 0x32 // 拨码回复
|
||||
|
||||
/* 心跳 (从机主动) */
|
||||
#define HB_PREAMBLE 0xAA
|
||||
#define HB_INIT_FIRST 0xA1 // 设备复位后首次
|
||||
#define HB_INIT_NORMAL 0xA0 // 正常心跳
|
||||
|
||||
/*===========================================================================
|
||||
* API
|
||||
*===========================================================================*/
|
||||
|
||||
/* 初始化 RS485 通信 (UART0 9600 8N1 + 中断接收) */
|
||||
void rs485_init(void);
|
||||
|
||||
/* 主循环轮询 — 处理接收的 3 字节命令帧, 驱动心跳上报 */
|
||||
void rs485_poll(void);
|
||||
|
||||
/* 有车/无车事件触发立即上报 (由检测算法调用) */
|
||||
void rs485_event_notify(void);
|
||||
|
||||
/* 线圈状态变化触发 (连接/断开, 由 cjq_srv 调用) */
|
||||
void rs485_loop_notify(void);
|
||||
|
||||
/* 重置心跳计时 (复位后调用, 触发首次 A1 上报) */
|
||||
void rs485_reset_heartbeat(void);
|
||||
|
||||
#endif /* __RS485_700BS_H__ */
|
||||
Reference in New Issue
Block a user