快捷搜索:

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

为了实现对CAN总线和RS-232串口双向通信需求,提出了一种基于C8051F040单片机的数据通信方案,并完成系统设计。分析了CAN总线和RS-232串口的通信特点,介绍了单片机硬件,并对软件的设计思路与流程做了详尽描述,完成功能检测。实验结果表明,该设计达到了要求。

目前工业设备之间的通信很多采用RS-232接口,但由于RS-232通信距离短、接口易损,而且只能进行点到点通信,不能直接组成多点通信网络。而CAN通信速率高、容易实现、且性价比高等诸多特点,本文介绍一种可以实现RS-232与CAN总线通信的方法,以更好地适应现代工业发展的需要。

控制器局域网CAN(Controller Area Network)是德国Bosch公司为解决现代汽车中众多的控制与测试仪器之间的数据交换而应用开发的一种通信协议。在国外,尤其是欧洲,CAN网络已被广泛地应用在汽车上,如BENZ、BMW、PORSCHE、ROLLS、ROYCE、JAGUAR等车。

它是一种串行通信网络,支持分布式实时控制,最大传输速度可达1 Mbids,最大传输距离为10 km。CAN规范已被ISO国际标准组织制订为国际标准,即CAN标准,现在最常用的是2.0标准,分为2.0A和2.0B。其区别仅在通信数据位数,前者是11位的标准帧,后者是29位的扩展帧。CAN协议建立在国际标准组织的开放系统互连参考模型基础上的,主要工作在数据链路层和物理层,用户可在其基础上开发适合系统实际需要的应用层通信协议。而串口RS-232作为标准计算机串行接口,与CAN网的结构、通信协议、传输特性等方面都不相同,所以不同设备间无法进行直接通信。因此实现二者之间的信息数据交互成为问题的关键。

本设计完成了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总线

Silicon Labs CAN的工作位速率可达1M位/秒,实际速率可能受CAN总线上所选择的传输数据的物理层的限制。CAN处理器有32个消息对象,可以被配置为发送或接收数据。输入数据、消息对象及其标识掩码存储在CAN消息RAM中。

标准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所示。

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

CAN总线数据帧由7个不同的位场组成:帧起始(stsrt of frame)、仲裁场(arbitration frame)、控制场(control frame)、数据场(data frame)、CRC场(CRC frame)、应答场(ACK frame)和帧结尾(end of frame)。数据场的长度可以为0。

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

RS-232是PC机与通信工业中应用最广泛的一种串行接口,具有连线简单、通讯距离长等优点。同样也有一些缺点,接口的信号电平值较高,易损坏接口电路的芯片,传输速率较低,传输距离有限等。RS-232被定义为在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯。UART通信可用查询TI和RI或通过中断来控制通信。UART有两种中断源:数据发送完毕时,TI置1;数据完整接受到时,RI置1。TI和RI中任何一个标志位置1,均能引发UART中断。TI和RI中断标志位需软件清0。

2 系统硬件描述

您可能还会对下面的文章感兴趣: