电子产业一站式赋能平台

PCB联盟网

搜索
查看: 31|回复: 0
收起左侧

CAN总线协议底层基础原理

[复制链接]

334

主题

334

帖子

3289

积分

四级会员

Rank: 4

积分
3289
发表于 2024-6-28 11:45:00 | 显示全部楼层 |阅读模式
关注+星标公众,不错过精彩内容
6 F: B: h5 g; J, G

ktgipsytydt64063124825.jpg

ktgipsytydt64063124825.jpg

" e3 A9 Y  @) g& ^& p# R6 A作者 | strongerHuang微信公众号 | strongerHuang
  x, r% X. q* o2 v本文说的CAN即是一种总线,也是一种协议。因此,我们常听见CAN总线,也常听见CAN协议。
# N% `) v& M: p3 G0 D% t! u
( z  ?% h8 B: a: M, rCAN协议和CANOpen协议是两套不同的协议。从软硬件层次来划分,CAN协议属于硬件协议,而CANOpen属于软件协议5 j; l; |; V; V: n( H! n4 k
/ \! N: e( _* a( u& L; r
本文将概述CAN网络,让大家对CAN总线协议有一个全局的概念,再到底层的CAN总线协议知识。
. f$ ]( q, X8 x
! R' b8 P- r& h* y1CAN网络CAN网络可以理解为多台CAN设备连接在同一条CAN总线上组合成的网络,其中的CAN设备我们称之为节点。CAN网络拓扑结构如下图:
/ U) ?# [: |4 T; X9 V8 {

t5l3k155u0d64063124925.jpg

t5l3k155u0d64063124925.jpg

5 Q; m- W( ^* \, u7 N1 }: A0 z1 F" i, r
如上图,一个CAN节点主要包含三类:MCU应用程序、CAN控制器、CAN收发器) b( G1 n/ Z/ b; ?! c
1. MCU应用程序MCU应用程序我将其分为三块:业务逻辑代码、协议层代码、底层驱动代码
: ?( Q1 R9 z* c* aA.业务逻辑代码:是根据项目需求而定,也很好理解。比如我读取一个传感器数据,并对其做出相应逻辑处理。2 i* g9 g$ p5 k" t- @
B.协议层代码:比如后续要讲述的CANOpen。
! l( y4 _. v7 ]' f  B# V/ \C.底层驱动代码:配置CAN总线相应参数、控制收发的代码。
/ ~3 c3 _8 p9 `) H8 [, M% l, V) P2.CAN控制器CAN控制器内部结构还是挺复杂的,一般现在CAN控制器都是与处理器集成在一起+ b/ i* g4 O( K
其实对于编程的人来说,无非也就是包含一些控制、状态、配置等寄存器。
5 ~# u# M5 o9 C$ Z! |7 v比如我们看到有些STM32芯片带有CAN,也就是说CAN控制器已经集成在STM32芯片中了,我们只需要编程操作其中的寄存器即可。( K0 @! |* b: R! a
3.CAN收发器CAN收发器:将CAN收发引脚(CAN_TX和CAN_RX)的TTL信号转换成CAN总线的电平信号$ g0 {" ?+ `. N+ H6 a- Z9 }
PS:你可以把CAN总线通信认为是UART通过485进行通信:CAN控制器就如UART的控制器,而CAN收发器就如485转换芯片。
  [* D  n3 o( c# D& g2ISO标准化的CAN协议写这一章节的主要目的就是想让大家了解CAN总线位于OSI所在层次。
( _  U# o. h1 d3 N
  b7 L. L) K$ M0 ?& ~/ o* g2 t1.ISO/OSI基本参照模型
- E; P4 e, r- Z  Z

riufakmxjuq64063125025.jpg

riufakmxjuq64063125025.jpg
5 ^/ o; N2 F0 Q
【注】
3 x8 M6 ?/ @$ V9 a" D" iISO:International Standardization Organization国际标准化组织;8 f, q4 X! @9 ?, x8 M" C
OSI:Open Systems Interconnection开放式系统间互联;
$ M" Y5 j) G* I
: [. D% j. B3 {0 F- z2.CAN在OSI模型中的定义4 b  j1 M& {) }1 c8 i

ngfxexjhw5c64063125125.jpg

ngfxexjhw5c64063125125.jpg

9 P: z1 o/ U% @; }! J& Y【注】
9 z- U# r# ]3 c# XLLC:Logical Link Control逻辑链路控制;
, N' g3 g, L' OMAC:Medium Access Control媒介访问控制;
8 h& O& C+ Y  _% _* ]( r
3 s; s% z1 c/ y1 H2 X8 f从上图可以知道CAN总线底层硬件的内容(CAN控制器、收发器)主要位于OSI的第1层和第2层。
: `2 f7 L" G! X, N
8 m, ~5 K7 |% `0 u8 H4 w7 U& F3概述CAN总线协议CAN总线协议:就是为了保证通信(收发)数据在CAN总线上能稳定传输而制订的一套协议。- _$ H1 A5 A0 Y* O- b

/ S/ Q/ G" N% f, c5 tCAN总线协议的内容很多,为方便初学者理解,本文先大概描述一下CAN总线协议,后续文章详细讲述CAN总线协议的内容。* B" ^' R* N5 v% M  q4 D5 i. s
1.总线信号CAN总线为「两线」「差分」信号,用隐形代表逻辑1,显性代表逻辑0。如下图:4 F' T1 D0 u: @/ i4 r9 u

ys0rshh0b5g64063125225.jpg

ys0rshh0b5g64063125225.jpg

( C. @" J+ J$ f- D- z3 a. k$ T' O: D; n1 Q. u. T
2.优先级" z6 W, q, e  o7 ~0 R
假如某一时刻,一个设备(节点)往总线发0,一个设备往总线发1。那么总线会呈现什么现象?+ H: Z* c# e5 @' S2 u+ g. `

. ]; `- K! A* K5 r% J! O3 U答案:最后总线呈现为显性,也就是0。& J7 e- N! ~  T2 q0 q5 f* z9 j9 F) y

9 U* Y7 Y/ Z" M: v- P5 J, j$ z3.位时序  `5 c% [6 d/ d' l! C" A
位时序逻辑将监视串行总线,执行采样并调整采样点,在调整采样点时,需要在起始位边沿进行同步并后续的边沿进行再同步。
) B9 y9 v8 L8 i; s2 F! G. Q8 G8 l5 p, Q1 x0 N8 F( N0 o* W& T
简单的说就是对一个bit位分几段进行采样,目的就是提高数据传输稳定性。在STM32中底层驱动代码就需要进行位时序编程,在STM32参考手册中也会发现如下位时序图:
6 t3 }' f7 C) K% \

kvqzlc0x1ie64063125325.jpg

kvqzlc0x1ie64063125325.jpg

3 H1 [  E8 s* m$ L
2 |4 l; O$ e  k: v8 g4.帧的种类和格式帧的种类有多种:数据帧:用于发送单元向接收单元传送数据的帧。遥控帧:用于接收单元向具有相同 ID 的发送单元请求数据的帧。错误帧:用于当检测出错误时向其它单元通知错误的帧。过载帧:用于接收单元通知其尚未做好接收准备的帧。帧间隔:用于将数据帧及遥控帧与前面的帧分离开来的帧。$ h1 c3 }. q1 W1 v( J6 G) S6 \* s
数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11个位的标识符ID,扩展格式有29个位的ID。
3 n0 Q3 v' [! r* j9 F. @# S5.位填充位填充是为防止突发错误而设定的功能。当同样的电平持续 5 位时则添加一个位的反型数据。如下图:. S  o/ C) Q% a' ^5 j6 e1 _

fm0fza2r1tn64063125425.jpg

fm0fza2r1tn64063125425.jpg
8 z) i/ B& f% B/ R) _

# i& b8 t+ s; D8 {* b* j; _9 F6.错误的种类( s! [) ~, ]: h, ~9 G) r: ?1 _

pslvn0w1pi264063125525.jpg

pslvn0w1pi264063125525.jpg

' r& P9 s+ h$ c. C4 s/ I7 j
2 D. b( R4 V% y* O; e3 r7 XCAN总线协议内容很多,初学者可以先了解这些,希望对你有所帮助。
7 t7 D% ]$ V' z; ^5 N------------ END ------------. F. P$ a/ [  q6 M4 y, j

x2i2nskbe0f64063125625.gif

x2i2nskbe0f64063125625.gif
" O* w" |! `# z, f" U; q
●专栏《嵌入式工具●专栏《嵌入式开发》●专栏《Keil教程》●嵌入式专栏精选教程
9 \  N9 k# k1 `) d; n关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。
/ F& {, J# {9 P2 q
( f. S/ }2 P) [; v$ \

bbcd21vywpv64063125726.png

bbcd21vywpv64063125726.png

3 X4 s: o' U$ u4 U0 @1 C点击“阅读原文”查看更多分享。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表