首页 > 技术文章 > uavcan扩展帧格式 zubax

zhangxuechao 2017-11-14 17:06 原文

zubax_gnss_1.0和zubax_gnss_2.0中使用的uavcan的两种不同封装方式。都是采用扩展帧29b帧类型

zubax_gnss_1.0
我的代码:https://github.com/zwx230741/zubax_gnss/tree/release_1.0
1

transfer_id:接收端判断是哪个发送端
last_frame:判断是不是最后一包
frame_index:包计数
src/dst_node_id:包的id
transfer_type:有请求、应答、广播和单播形式
data_type_id:在DSDL中定义的消息id类型,默认值

zubax_gnss_2.0
我的代码:https://github.com/zwx230741/zubax_gnss
2.0中有两种消息类型,以service_not_message位来区分。而且数据部分的最高一个字节也用来作为协议的一部分

2

src_node_id:客户端node id,每一种包都是以node形式定义
dst_node_id:服务端node id
transfer_type:有请求、应答、广播和单播形式
transfer_priority:优先级。高优先级先发送(0最高)
data_type_id:在DSDL中定义的消息id类型

const uint8_t tail  = can_frame.data[can_frame.dlc - 1U];
start_of_transfer_  = (tail & (1U << 7)) != 0;
end_of_transfer_    = (tail & (1U << 6)) != 0;
toggle_             = (tail & (1U << 5)) != 0;
transfer_id_        = tail & 0x1f;

推荐阅读