ea4uqyhxpmi64087475136.png
" e) L, [7 g( ^, Y8 ~
最新公司需要利用J1939的CAN协议进行数据通信,琢磨了一天,才明白,现在整理成笔记,内容如下:2 j3 U! h' x: K m/ z2 q
1.数据帧格式数据帧格式应遵循CAN 29位标识符的扩展帧格式,CAN 数据帧由很多域组成(仲裁域+控制域+数据域+CRC域)。
; X& I/ v0 C4 d
nzbz0dz24vm64087475236.jpg
) e8 x7 `. `+ U: u; h3 |( p; C
2.协议数据单元(PDU)数据帧是通过PDU进行组织的。PDU由数据帧中的 29 位标识符(ID号)和数据场组成。ID又划分为 6 个部分:优先级P(3 位),保留位(1位),数据页 DP位(1位),PDU格式PF(8位),PDU细节PS(8位),源地址SA(8位)。扩展帧协议数据单元及场分布如下图:; z7 I- t, p' [) o
4m55zchoqfk64087475336.jpg
- E9 }5 U1 X% ~2 A8 [! c& b* E- e; v9 A N4 A8 A* p
2.1优先级(P)长度:3位,位于ID最前面,用来优化报文传输到总线的传输延迟。一条报文的优先级可以从最高0(000)设置到最低7(111)。8 O/ f) _" h' c4 A
2.2保留位(R )保留此位以备今后开发使用,可能扩展 PDU 格式域,定义新的 PDU 格式,扩展优先级段或增加地址空间。所有报文的保留位应设置为 0。
; t7 `. R. M2 M7 K# T8 v S2.3数据页(DP )DP 默认设置为0。
9 Q, P5 d& M0 i- p7 x1 \, d5 |2.4PDU 类型PDU格式决定了是到具体ECU通信(特定目标地址)或是广播通信(全局目标地址发送)。- ]" _: u- Z5 I% F0 a) m( j: W; m8 H
2.5目标地址(DA)DA 场定义的特定目标地址要求任何源地址与该目标地址不同的节点忽略此报文。7 c$ y0 t" G% e, a& Q H
2.6群扩展(GE)GE场与PF场的低4位(当 PF 场高 4 位全部设置为 1 时表示 PS 场是组扩展)提供每个数据页 4096 种参数组。对于每个数据页有 4096 个参数组只在 PDU2 格式下可用;此外,还有 240 个参数组只在 PDU1 的格式下可用。当前,两个数据页共有 8672 个参数组可用。4 m' N" n( v1 L; Q
2.7源地址(SA)SA 场是一个 8 位域。给定的一个源地址在网络中应当只有一个设备与其相对应,源地址应是唯一的。
; b( h; K7 P/ O/ }5 R- i8 b- n网络中一个特定源地址只能匹配一个设备。因此,源地址域确保CAN标识符符合CAN协议中的唯一性要求。- ^ M- F, ~2 @9 h
2.8 数据场数据场包含 8 个字节,携带了要发送的数据内容。
& |5 W+ W9 h# j5 ~& c8 x7 s$ x==========2 H7 i7 w( l0 a6 w! ?9 R' w% J
往期回顾:什么是Modbus协议?
! I* |2 r1 r! y/ h H6 V蓝桥杯付费视频更新进度通知
" J9 Q' W v/ ]GD32F1硬件开发指南之复位电路2 {7 E! \5 w/ e3 v
个人对STM32 SysTick的总结/ [4 b& \: m0 W
解决printf无法打印输出的问题# H- z& W( o# v6 w9 G% z6 e
==========作者:你若盛开平台:知乎链接:点击阅读原文0 }7 A! K2 x3 ]. |& S1 }0 r" d
n3ulpiy324i64087475436.png
6 B+ E( O+ m) n% L. f
1114lbrwm1v64087475536.png
( l# c/ g& F. {7 G* q+ W
jjkkdyche0f64087475637.png
|