琢磨了一天的CAN协议

962358e1a7e8c50adbfd0974dae1d0e1.png

最新公司需要利用J1939的CAN协议进行数据通信,琢磨了一天,才明白,现在整理成笔记,内容如下:


1.数据帧格式

数据帧格式应遵循CAN 29位标识符的扩展帧格式,CAN 数据帧由很多域组成(仲裁域+控制域+数据域+CRC域)。

b495448e889a72b5d8b8713d454e6763.jpeg


2.协议数据单元(PDU)

数据帧是通过PDU进行组织的。PDU由数据帧中的 29 位标识符(ID号)和数据场组成。ID又划分为 6 个部分:优先级P(3 位),保留位(1位),数据页 DP位(1位),PDU格式PF(8位),PDU细节PS(8位),源地址SA(8位)。扩展帧协议数据单元及场分布如下图:

dd488b0a023bb05634d8d53367ae8606.jpeg

2.1优先级(P)

长度:3位,位于ID最前面,用来优化报文传输到总线的传输延迟。一条报文的优先级可以从最高0(000)设置到最低7(111)。

2.2保留位(R )

保留此位以备今后开发使用,可能扩展 PDU 格式域,定义新的 PDU 格式,扩展优先级段或增加地址空间。所有报文的保留位应设置为 0。

2.3数据页(DP )

DP 默认设置为0。

2.4PDU 类型

PDU格式决定了是到具体ECU通信(特定目标地址)或是广播通信(全局目标地址发送)。

2.5目标地址(DA)

DA 场定义的特定目标地址要求任何源地址与该目标地址不同的节点忽略此报文。

2.6群扩展(GE)

GE场与PF场的低4位(当 PF 场高 4 位全部设置为 1 时表示 PS 场是组扩展)提供每个数据页 4096 种参数组。对于每个数据页有 4096 个参数组只在 PDU2 格式下可用;此外,还有 240 个参数组只在 PDU1 的格式下可用。当前,两个数据页共有 8672 个参数组可用。

2.7源地址(SA)

SA 场是一个 8 位域。给定的一个源地址在网络中应当只有一个设备与其相对应,源地址应是唯一的。

网络中一个特定源地址只能匹配一个设备。因此,源地址域确保CAN标识符符合CAN协议中的唯一性要求。

2.8 数据场

数据场包含 8 个字节,携带了要发送的数据内容。

==========

往期回顾:

什么是Modbus协议?

蓝桥杯付费视频更新进度通知

GD32F1硬件开发指南之复位电路

个人对STM32 SysTick的总结

解决printf无法打印输出的问题

==========

作者:你若盛开

平台:知乎

链接:点击阅读原文

36aa8744e6cb34d621d53432432c3821.png

a7ca5c1cbc4ee2415be8f0289df11206.png

0d01bb7cb7cce76cbcd4d60cd0461782.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值