pile_com_stm32/pile_com蓝牙传输数据说明.txt
2024-02-23 17:21:13 +08:00

98 lines
2.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

上位机说明
由于MTU限制建议采用分小包发送的方式进行数据读写即上位机需要控制写入和读取的长度不能过长一般不超过20个字节
SERVER UUID:0X00FF
1. 写参数设置:
发送命令到UUID:0XFF01
格式0xf0 byte1 byte2 byte3 ...数据(小端)
功能码 写地址 数据长度 数据
1电流
起始地址0x0180
总长度0x0a
数据结构:
typedef struct
{
uint16_t magic;
struct _ch
{
uint16_t ad_4ma;
uint16_t ad_20ma;
} ch[2];
} cal_4_20ma_t;
2流量
起始地址0x0188
总长度0x14
数据结构:
typedef struct
{
int16_t flow_min;
int16_t flow_max;
} ad_flow_cal_t;
typedef struct
{
uint16_t magic;
uint16_t input_type;
int16_t min_flow[2];
ad_flow_cal_t ad_cal[2];
uint16_t pulse_coef[2];
uint16_t rsv[6];
} flow_config_t;
3深度
起始地址0x0198
总长度0x1e
数据结构:
typedef struct
{
uint16_t magic;
uint8_t input_type; // 0正交 1:正交反向 2:方向脉冲 3:方向脉冲反向
uint8_t port; // 编码器端口
uint16_t N; //编码器系数分子
uint16_t M; //编码器系数分母
// int pluse_coef; // 脉冲系数0.001mm
int16_t min_depth; // 最小深度 mm
int16_t max_depth; // 最大深度 mm
int16_t sample_depth; // 采样深度 mm
int16_t depth_offset; // 默认深度偏移
int16_t min_valid_depth; // 最小有效深度
int16_t inc_pile_depth; // 允许换桩深度
uint16_t current_on_threshold; // 行走电机开启电流
uint16_t current_off_threshold; // 行走电机关闭电流
uint16_t move_on_duratino; // 持续时间
uint16_t move_off_duration; // 持续时间
uint16_t move_current_channel; //行走电流通道
} depth_config_t;
2. 读:
发送命令到UUID:0XFF01
格式0xf1 byte1 byte2 byte3
功能码 地址 长度
监听UUID:0xff01即可得到数据
读取得到的数据前面包含发送的信息(发送的命令 + 数据),读取者需要自行处理前面多的数据
3. 上报实时数据:
接受端需要开启上报发送0xF2命令到UUID:0XFF01
之后监听UUID:0XFF02即可得到实时数据
下位机说明
1. 如需添加上报数据,在 ble_gatts_server.c文件的notify_all_data 函数中添加即可
2. 如需响应上位机的控制,例如开始和暂停按键,则需要在 stm32/ModbusS.c 中的 ModBusWordWriteHook 函数中添加写入特定值的响应操作
目前只实现的配置参数保存的响应,其他的没有实现