基于C8051F040单片机的CAN总线和RS-232串口通信设计

网友投稿 262 2022-11-24

基于C8051F040单片机的CAN总线和RS-232串口通信设计

本设计完成了CAN总线与RS-232软件设计。本设计的创新点是:CAN总线与RS-232接口数据通信速率以及通信帧格式都不同,解决了这两点不同,从而实现了数据在CAN总线与RS-232接口之间的交互传输。本文完成了基于C8051F040单片机控制的CAN与RS-232转换的研究与设计,设计了C8051F040单片机对RS-232串口和CAN总线的控制,解决了CAN总线与RS-232接口数据通信速率以及通信帧格式不同的技术问题,实现了RS-232接口数据与CAN总线数据的相互传输。

1 概述

1. 1 CAN总线

标准CAN的标志符长度是11位,而扩展格式CAN的标志符长度可达29位。CAN协议2.0A版本规定CAN控制器必须有一个11位的标识符。而2.0B版本中规定,CAN控制器的标志符长度可以是11位或者29位。遵循CAN2.0B协议的CAN控制器可以发送和接收11位标识符的标准格式报文或29位标识符的标准格式报文。如果禁止CAN2.0B,则CAN控制器只能发送和接收11位标识符的标准格式报文,而忽略扩展格式的报文结构,但不会出现错误。C8051F040所集成的CAN控制器为2.0B。

数据帧是携带数据由发送器至接收器的帧,是CAN的4种帧格式之一,这4种帧格式分别是数据帧、远程帧、出错帧和超载帧,其中数据帧结构如图1所示。

1)帧起始:标志数据帧的起始,仅由一个“显性”位组成,只在总线空闲时才允许节点开始发送信号;2)仲裁场:标准格式帧与扩展格式帧的仲裁场格式不同。标准格式里,仲裁场由11位识别符和远程发送请求位组成,识别符位为ID-28~ID-18。扩展格式里,仲裁场包括29位识别符、替代远程请求位、识别符扩展位和远程发送请求位。其识别符为ID-28~ID-0;3)控制场:由6个位构成,前2位为保留位,为显性,后4位为数据长度码,表示数据场中数据的字节数,必须在0~8范围内变化;4)数据场:由被发送数据组成,数目为控制场中决定的0~8个字节,第一个字节的最高位首先被发送;5)CRC场:包括CRC序列和CRC界定符;6)ACK场:长度为2位,包含应答间隙和应答界定符;7)帧结尾:由7个位“隐形”位组成,此期间无位填充。

1. 2 RS-232

2 系统硬件描述

CAN总线数据和RS-232串口数据的速率、数据格式都不同,为实现相互传输的功能需求,就需要RAM缓存。硬件结构图如图2所示。

3 软件设计

3. 1 初始化

3.2 RS-232转CAN总线

RS-232传输1字节,而CAN总线传输的是8字节,这要求在通信过程中实现数据匹陪、格式匹配。该模块采用,在串口接收中断中,直接把接收到的串口数据存到8字节的缓存中,计数满八位。则标志位置1,主函数中调用函数send_can1(),将数据发送到CAN总线。从而实现将数据从RS-232传输到CAN总线的功能。流程图如图3所示。

3.3 CAN总线转RS-232

CAN总线数据发送到串口,原理相同,过程相反。CAN总线的数据接收也是在中断中实现,这样实时性好。CAN总线的接收缓存中有数据,则这8个字节的数据依次调用RS-232功能函数void RS232_PUTCHAR(),发送到串口。从而实现将数据从CAN总线传输到RS-232串口的功能。流程图如图4所示。

4 实验检测

为了验证设计的正确性,文中使用Kvaser CanKing和SecureCRT软件来测试。Kvaser CanKing用来接收、发送CAN总线数据,SecureCRT用来接收、发送串口数据,二者都有显示功能。实验结果如图5所示,其证实了设计的正确性。

5 结束语

数据通信在嵌入式系统的功能中占据重要地位,串口通信与CAN总线相互通信都具有各自的重要作用,而两者的交互通信也越来越重要,本文的设计功能明确、结构简单、具有很强的通用性和实用性,并通过了测试验证。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:模拟uuid的故障的解决过程
下一篇:基于LPC2292微控制器和CAN控制器实现车辆行驶监控系统的设计
相关文章

 发表评论

暂时没有评论,来抢沙发吧~