本章咱们将向咱们介绍怎么运用STM32自带的CAN操控器来完成两个开发板之间的CAN通讯,并将成果显现在TFTLCD模块上。本章分为如下几个部分:
30.1 CAN简介
30.2 硬件规划
30.3 软件规划
30.4 下载验证
30.1 CAN简介
CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO世界规范化的串行通讯协议。在当时的轿车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各式各样的电子操控体系被开发了出来。因为这些体系之间通讯所用的数据类型及对牢靠性的要求不尽相同,由多条总线构成的状况许多,线束的数量也随之添加。为习惯“削减线束的数量”、“经过多个LAN,进行很多数据的高速通讯”的需求,1986 年德国电气商博世公司开发出面向轿车的CAN 通讯协议。尔后,CAN 经过ISO11898 及ISO11519 进行了规范化,现在在欧洲已是轿车网络的规范协议。
现在,CAN 的高性能和牢靠性已被认同,并被广泛地运用于工业自动化、船只、医疗设备、工业设备等方面。现场总线是当今自动化范畴技术发展的热门之一,被誉为自动化范畴的核算机局域网。它的出现为分布式操控体系完成各节点之间实时、牢靠的数据通讯供给了强有力的技术支撑。
CAN 操控器依据两根线上的电位差来判别总线电平。总线电平分为显性电平缓隐性电平,二者必居其一。发送方经过使总线电平产生变化,将音讯发送给接纳方。
CAN协议具有一下特色:
1) 多主操控。在总线闲暇时,一切单元都能够发送音讯(多主操控),而两个以上的单元一同开端发送音讯时,依据标识符(Identifier 以下称为 ID)决议优先级。ID 并不是表明发送的意图地址,而是表明拜访总线的音讯的优先级。两个以上的单元一同开端发送音讯时,对各音讯ID 的每个位进行逐一裁定比较。裁定取胜(被判定为优先级最高)的单元可持续发送音讯,裁定失利的单元则马上中止发送而进行接纳作业。
2) 体系的若软性。与总线相连的单元没有类似于“地址”的信息。因而在总线上添加单元时,衔接在总线上的其它单元的软硬件及运用层都不需求改动。
3) 通讯速度较快,通讯距离远。最高1Mbps(距离小于40M),最远可达10KM(速率低于5Kbps)。
4) 具有过错检测、过错告诉和过错康复功用。一切单元都能够检测过错(过错检测功用),检测出过错的单元会当即一同告诉其他一切单元(过错告诉功用),正在发送音讯的单元一旦检测出过错,会强制完毕当时的发送。强制完毕发送的单元会不断重复地从头发送此音讯直到成功发送停止(过错康复功用)。
5) 毛病封闭功用。CAN 能够判别出过错的类型是总线上暂时的数据过错(如外部噪声等)仍是持续的数据过错(如单元内部毛病、驱动器毛病、断线等)。由此功用,当总线上产生持续数据过错时,可将引起此毛病的单元从总线上阻隔出去。
6) 衔接节点多。CAN 总线是可一同衔接多个单元的总线。可衔接的单元总数理论上是没有约束的。但实际上可衔接的单元数受总线上的时刻延迟及电气负载的约束。下降通讯速度,可衔接的单元数添加;进步通讯速度,则可衔接的单元数削减。
正是因为CAN协议的这些特色,使得CAN特别合适工业进程监控设备的互连,因而,越来越遭到工业界的注重,并已公认为最有出路的现场总线之一。
CAN协议经过ISO规范化后有两个规范:ISO11898规范和ISO11519-2规范。其间ISO11898是针对通讯速率为125Kbps~1Mbps的高速通讯规范,而ISO11519-2是针对通讯速率为125Kbps以下的低速通讯规范。
本章,咱们运用的是450Kbps的通讯速率,运用的是ISO11898规范,该规范的物理层特征如图30.1.1所示:
图30.1.1 ISO11898物理层特性
l 数据帧
l 要控帧
l 过错帧
l 过载帧
l 帧距离
别的,数据帧和遥控帧有规范格局和扩展格局两种格局。规范格局有11 个位的标识符(ID),扩展格局有29 个位的ID。各种帧的用处如表30.1.1所示:
帧类型
|
帧用处
|
数据帧
|
用于发送单元向接纳单元传送数据的帧
|
遥控帧
|
用于接纳单元向具有相同 ID 的发送单元恳求数据的帧
|
过错帧
|
用于当检测出过错时向其它单元告诉过错的帧
|
过载帧
|
用于接纳单元告诉其没有做好接纳预备的帧
|
距离帧
|
用于将数据帧及遥控帧与前面的帧别离开来的帧
|
表30.1.1 CAN协议各种帧及其用处
(1) 帧开端。表明数据帧开端的段。
(2) 裁定段。表明该帧优先级的段。
(3) 操控段。表明数据的字节数及保存位的段。
(4) 数据段。数据的内容,一帧可发送0~8个字节的数据。
(5) CRC段。查看帧的传输过错的段。
(6) ACK段。表明承认正常接纳的段。
(7) 帧完毕。表明数据帧完毕的段。
数据帧的构成如图30.1.2所示:
图30.1.2
图中D表明显性电平,R表明隐形电平(下同)。
帧开端,这个比较简略,规范帧和扩展帧都是由1个位的显性电平表明帧开端。
裁定段,表明数据优先级的段,规范帧和扩展帧格局在本段有所区别,如图30.1.3所示:
图30.1.3 数据帧裁定段构成
规范格局的ID 有11 个位。从ID28 到ID18 被顺次发送。制止高7 位都为隐性(制止设定:ID=1111111XXXX)。扩展格局的 ID 有29 个位。根本ID 从ID28 到ID18,扩展ID 由ID17 到ID0 表明。根本ID 和规范格局的ID 相同。制止高7 位都为隐性(制止设定:根本ID=1111111XXXX)。
其间RTR位用于标识是否是长途帧(0,数据帧;1,长途帧),IDE位为标识符挑选位(0,运用规范标识符;1,运用扩展标识符),SRR位为替代长途恳求位,为隐性位,它替代了规范帧中的RTR位。
操控段,由6个位构成,表明数据段的字节数。规范帧和扩展帧的操控段稍有不同,如图30.1.4所示:
图30.1.4 数据帧操控段构成
数据段,该段可包含0~8个字节的数据。从最高位(MSB)开端输出,规范帧和扩展帧在这个段的界说都是相同的。如图30.1.5所示:
图30.1.5 数据帧数据段构成
图30.1.6 数据帧CRC段构成
图30.1.7 数据帧CRC段构成
发送单元的ACK,发送2个位的隐性位,而接纳到正确音讯的单元在ACK槽(ACK Slot)发送显性位,告诉发送单元正常接纳完毕,这个进程叫发送ACK/回来ACK。发送 ACK 的是在既不处于总线封闭态也不处于休眠态的一切接纳单元中,接纳到正常音讯的单元(发送单元不发送ACK)。所谓正常音讯是指不含填充过错、格局过错、CRC 过错的音讯。
帧完毕,这个段也比较简略,规范帧和扩展帧在这个段格局相同,由7个位的隐性位组成。
由发送单元在非同步的状况下发送的每秒钟的位数称为位速率。一个位可分为 4 段。
l 同步段(SS)
l 传达时刻段(PTS)
l 相位缓冲段1(PBS1)
l 相位缓冲段2(PBS2)
这些段又由可称为 Time Quantum(以下称为Tq)的最小时刻单位构成。
1 位分为4 个段,每个段又由若干个Tq 构成,这称为位时序。
1 位由多少个Tq 构成、每个段又由多少个Tq 构成等,能够恣意设定位时序。经过设定位时序,多个单元可一同采样,也可恣意设定采样点。各段的效果和 Tq 数如表30.1.2所示:
表30.1.2 一个位各段及其效果
图30.1.8 一个位的构成
在总线闲暇态,最早开端发送音讯的单元取得发送权。
当多个单元一同开端发送时,各发送单元从裁定段的第一位开端进行裁定。接连输出显性电平最多的单元可持续发送。完成进程,如图30.1.9所示:
图30.1.9 CAN总线裁定进程
STM32的bxCAN的主要特色有:
l 支撑CAN协议2.0A和2.0B自动形式
l 波特率最高达1Mbps
l 支撑时刻触发通讯
l 具有3个发送邮箱
l 具有3级深度的2个接纳FIFO
l 可变的过滤器组(最多28个)
在STM32互联型产品中,带有2个CAN操控器,而咱们运用的STM32F103ZET6归于增强型,不是互联型,只要1个CAN操控器。双CAN的框图如图30.1.10所示:
图30.1.10 双CAN框图
STM32每个过滤器组的位宽都能够独立装备,以满意运用程序的不同需求。依据位宽的不同,每个过滤器组可供给:
● 1个32位过滤器,包含:STDID[10:0]、EXTID[17:0]、IDE和RTR位
● 2个16位过滤器,包含:STDID[10:0]、IDE、RTR和EXTID[17:15]位
此外过滤器可装备为,屏蔽位形式和标识符列表形式。
在屏蔽位形式下,标识符存放器和屏蔽存放器一同,指定报文标识符的任何一位,应该依照“有必要匹配”或“不必关怀”处理。
而在标识符列表形式下,屏蔽存放器也被当作标识符存放器用。因而,不是选用一个标识符加一个屏蔽位的方法,而是运用2个标识符存放器。接纳报文标识符的每一位都有必要跟过滤器标识符相同。
经过CAN_FMR存放器,能够装备过滤器组的位宽和作业形式,如图30.1.11所示:
图30.1.11 过滤器组位宽形式设置
为了过滤出一组标识符,应该设置过滤器组作业在屏蔽位形式。
为了过滤出一个标识符,应该设置过滤器组作业在标识符列表形式。
运用程序不必的过滤器组,应该保持在禁用状况。
过滤器组中的每个过滤器,都被编号为(叫做过滤器号,图30.1.11中的n)从0开端,到某个最大数值-取决于过滤器组的形式和位宽的设置。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/260538.html