基于MCP2515 CAN控制器的多字节数据通信方法.pdf

所需积分/C币:9 2019-09-13 00:24:39 559KB PDF

提出了一种基于MCP2515 CAN控制器的多字节数据通信方法:应用扩展数据帧的仲裁域, 提供了额外的2个字节数据,一个作为目的节点号,另一个作为命令字,数据域长度仍为可选的0~ 8B;利用MCP2515提供的对仲裁域按位屏蔽和滤波功能实现对目的节点号的滤波,减少了MCU的 开销,提高了MCU的工作效率,同时解决了通过一个CAN节点管理多个子节点的问题。
李周利等:基于MCP515CAN控制器的多字节数据通信方法 完成报文的接收和分析。 位,分别为ID10-10和ED17—EIDO,如图1和 3.2报文的设计 图2所示。 MCP2515的扩展帧格式报文的标识符为29 IDI0 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 IDI IDO 图1标准报文标识符 Fig 1 Standard message identifier EID EIDEIDEID EIDEIDEID EIDEIDEID EID EID EID EID EID EID EIDEID 171615141312 6 图2扩展报文标识符 Fig 2 Extended message identifier 根据报文标识符的高7位不能全是“1”。扩展存器组成。接收码寄存器规定了拟接收报文中参与 格式报文定义如下: 筛选比较的各位(主要是标识符)必须匹配的值,而 ID10-1D3;源节点(由用户自己指定但必须小接收屏蔽器却将ACR中的某些位屏蔽为“无关 于FEH),报文发送方的节点号; 位”,对应“无关位”的报文的位不参加筛选比较。 ID2-1O:设备类型; 当接收到一个扩展格式的报文时,筛选器的配置只 EID16-1D17:预留; 对“收方地址”进行比较,其他数据不进行筛选,即 EIDl5EID8:目的节点,报文接收方的节只接收发给本节点的数据。 点号; 在木设计中每个CAN节点(一个CAN控制器) EID7-EID0:命令字/控制字,源节点请求目的管理着4个子节点,其中前6位为CAN节点号,后2 节点所完成的操作、任务或数据字段的类型等。 位正好代表4个子节点。在报文设计时将源地址置 3.3筛选器的设计 于标识符ID10-ID3(共8bit),目的地址置于扩展 MCP2515CAN控制器监听接收总线上的所有标识符EID15EID8(共8bit),前6位为CAN节点 报文,只有通过CAN控制器的报文筛选器筛选的报号屏蔽(后2位为子节点号不屏蔽),这样安排使得 文才能进入CAN的报文接收缓冲区,为该节点所接编程方便。只有目的地址与本节点号一致的数据帧 收并传送给某应用程序。通过对报文筛选器的预定才触发中断,这样可以大大减少MCU的工作量,提 义,决定某个节点接收那些特定的报文。 高工作效率。仲裁域中要屏蔽的位如图3中的阴影 报文接收筛选器由接收码寄存器和接收屏蔽寄所示。 IDIO ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2IDIIDO EIDEIDEID ED EID EID EIDEIDEIDEIDEIDEIDEIDEIDEID EID EID EID 17161514 13121 109 8 7654 10 图3仲裁域中屏蔽位示意图 Fig 3 Mask bit in the arbitration field 3.4初始化 3.5数据发送 在上电或系统复位时对CAN控制器MCP2515 MCP2515对CAN总线的数据发送则没有限 进行初始化。初始化操作包括硬件使能、软件复位、制,只要用MCU通过SP接口将待发送的数据写人 总线波特率、中断工作方式、滤波器工作方式、工作MCP2515的发送缓冲器,然后再调用RTS(发送请 模式等的设置并启动CAN等。 求)命令即可将数据发送到CAN总线上。数据发送 将MCP2515的RST端连接到MCU的L0口,时,通过操作发送控制寄存器可以选择采用中断发 当MCU诊断出MCP2515出现故障或异常时,MCU送或查询发送。但不管是中断发送还是查询发送, 可对MCP2515进行硬件复位。 都是从发送缓冲区中取得一帧完整的数据。如果数 100 西安石油大学学报(自然科学版) 据长度大于8,则将报文数据按顺序分解为数个数数据帧才由CAN控制器向MCU发出中断请求,再 据包,每个数据包的长度不得大于8;在发送时,依由MCU通过SPI接囗读取CAN接收到的数据,大 次取得每个数据包设置数据域,依据报文的发送地大减少了MCU的开销,提高了MCU的工作效率。 址、报文类型和收方地址设置仲裁域、控制域,然后同时解决了通过1个CAN节点管理多个子节点的 顺序发送。 问题。 发送数据时,对相应的寄存器进行设置即可,其 参考文献 中优先级可根据报文的重要程度进行设置。同时,1]吴永刚,陈祥辉基于82527CAN控制器多字节数据通 为防止报文丢失,在发送数据时,应在头一次发送报 信的解决方法[J.水雷战与舰船防护,2008,16(3): 文和下一次发送报文之间适当延时,且应设置适当 46-50. 的波特率,使发送和接收都正常的进行。 wL Yong-gang, chen Xiang-hui. Solution of multibyte 3.6数据接收 data comInunication based on 82527 CAN Controller[ J J MCP2515在CAN总线上的数据接收是通过2 Mine Warfare Ship Self-defence, 2008, 16(3): 46-50 个接收缓冲器2个接收屏蔽器6个接收过滤器的「2] Microchip Technology Inc.sand- Alone Can Controller with 组合来实现的。CAN总线上只有同时满足了至少 SpiInterfacelk/ol.[2014-07-07.Thttp://www.mi 任意一个接收屏蔽器和一个接收过滤器的条件的帧 crochip, com/ search/ searchapp/ searchhome aspx? id 才可以进入接收缓冲器。MCU可以通过SPI接口 2&q=DS21801G 来读取接收缓冲器里的数据。数据接收时,接收屏3]王继国,吉吟东,孙新业CAN总线控制器McP515 蔽寄存器对总线上的数据进行比较,如果和木节点 的原理及应用[J]电测与仪表,2004,41(457):5256 相同的数据就接收,不是4节点的数据就过滤。接 WANG Ji-guo, JI Yin-dong, SuN Xin-ya. Application of 收数据可采用查询方式或中断方式。为了提高效 MCP2515 in industry automatic instruments[J]. Ele ectr- 率,可采用中断方式,在初始化程序中必须使能接收 cal Measurement Instrumentation 2004, 41(457): 52- 中断;在中断服务子程序中,判断是否有接收中断标 志,有则读取接收缓冲区数据。程序收到数据后,对 4]绕运涛现场总线CAN原理与应用技术[M].北京:北 报文的类型和长度进行比较接收,根据源地址不同 京航天航空大学出版社,2003:20-36 可分别将数据放到不同的接收缓冲区中。为了防止 5]李延伟,陈欠根,朱毅.嵌入式操作系统 Vxworks下 接收缓冲区数据溢出,可开辟一个循环接收数据队 CAN驱动程序开发[J].工业控制计算机,2006,19 列来暂时存储数据。调度程序则通过查询该队列来 LI Yan-wei, chen Qian-gen, ZHU Yi. Evelopment of 获得从CAN总线上收到的数据。 CAN driver under embedded operation systcm Vxworks 3.7硬件连接方法 [J」.2006,19(10):3032 CAN控制器与CAN驱动器之间最好采用高速[6」王燕律德才,幺正才 CAN-bus仪表的通讯模块设计 光耦隔离以取得较好的EMI特性。同时要注意 [J].电测与仪表,2001,38(428):4547 MCP2515的 RXCAN引脚对低电平的识别门限仅为 WANG Yan, LV De-cai, YAO Zheng-cai. The design of 0.15V,所以与其连接的器件输出低电平必须与之 communication module of instrument based on can bu 匹配 [J. Electrical Measurement Instrumentation, 2001, 38 (428):4547 4结束语 [7] Robert Bosch Gmbh CAN Specification V2.0, 1991[K/ 本文介绍了利用CAN控制器芯片MCP2515实 ].[201407-01htp;//ww.do88.com/p 9357122294996.hml 现多字节通信的方法。通过设置合适的扩展帧以及 责任编辑:张新宝 屏蔽和滤波寄存器,使得只有与节点自身相匹配的

...展开详情
img
  • 至尊王者

    成功上传501个资源即可获取

关注 私信 TA的资源

上传资源赚积分,得勋章
相关内容推荐