基于CAN总线实现两节点间的通信.docx

上传人:b****4 文档编号:3912498 上传时间:2022-11-26 格式:DOCX 页数:19 大小:397.80KB
下载 相关 举报
基于CAN总线实现两节点间的通信.docx_第1页
第1页 / 共19页
基于CAN总线实现两节点间的通信.docx_第2页
第2页 / 共19页
基于CAN总线实现两节点间的通信.docx_第3页
第3页 / 共19页
基于CAN总线实现两节点间的通信.docx_第4页
第4页 / 共19页
基于CAN总线实现两节点间的通信.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

基于CAN总线实现两节点间的通信.docx

《基于CAN总线实现两节点间的通信.docx》由会员分享,可在线阅读,更多相关《基于CAN总线实现两节点间的通信.docx(19页珍藏版)》请在冰豆网上搜索。

基于CAN总线实现两节点间的通信.docx

基于CAN总线实现两节点间的通信

 

本科生毕业设计

毕业设计题目基于CAN总线实现两节点间的通信

学生姓名

所在学院

专业及班级

指导教师

完成日期

摘要

本次设计主要是基于CAN总线实现两节点间的通信,采用STC89C52单片机为控制核心,MCP2515为CAN控制器,主要是独立控制器局域网络协议控制器。

另外,还需要接入CAN收发器82C250来实现CAN总线的发送和接收功能。

总体目标是将51单片机、CAN控制器MCP2515和CAN收发器82C250连在一起,编写程序,实现点对点通信的收发。

该系统有单片机控制模块,MCP2515控制模块,串口下载模块和电源模块四个主要功能模块。

关键词:

CAN总线通信STC89C52MCP251582C250

SUMMARY

ThisdesignismainlybasedonCANbus,realizingthecommunicationbetweentwonodes.ItusestheSTC89C52single-chipmicrocomputerasthecontrolcore,andMCP2515astheCANcontroller,mainlyindependentcontrollerlocalareanetworkprotocolcontroller.Inaddition,italsoneedstoaccesstheCANtransceiver82c250torealizetheCANbustosendandreceivefunctions.OverallgoalistoMCP251551microcontroller,CANcontrollerandCANtransceiver82C250together,writeaprogramthatrealizesthepoint-to-pointcommunicationtransceiver.

Thesystemwithsingle-chipmicrocomputercontrolmodule,MCP2515controlmodule,serialdownloadmoduleandpowermodulefourmainfunctionmodules.

Keywords:

CANbuscommunicationSTC89C52MCP251582C250

 

前言

现在社会随着计算机硬件、软件及集成电路技术的迅速发展,同时消费类电子产品、计算机外设、汽车和工业应用等的需求不断增加。

高速、高可靠和低成本的通信介质的要求也随之提高。

传统的RS-232、RS-485和CCITTV.24通信标准和通信系统已经远远不能满足工业现场的通信需要。

传统的现场控制技术及现场监控设备正在发生一场新的革命,现场总线是当今自动化领域技术发展的热点之一,它为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

现场总线是用于过程控制现场仪表与控制室之间的一个标准的、开放的、双向的多站数字通信系统。

以现场总线为基础的全数字控制系统将现有的模拟信号电缆用高容量的现场总线网络代替,从而大大减轻现场信号电缆连接的费用,提高信号传输的精密和灵活性,提高信号的传输效率,为工业现场用户带来了巨大的好处。

采用现场总线将使控制系统结构简单,系统安装费用变少并且易于维护;用户也可以自由选择不同厂商、不同品牌的现场设备可以达到最佳的系统集成等一系列的优点,现场总线技术正越来越受到人们的重视。

发展现场总线的初衷是建立开放的控制通信网络,其通信协议理应趋于统一,但近十几年都没有,现场总线发展的种类较多,约有40余种:

如德国西门子公司Siemens的ProfiBus,英国的ERA,Echelon公司的LONWorks,PhenixContact公司的InterBus,RoberBosch公司的CAN,Rosemounr公司的HART,CarloGarazzi公司的Dupline,丹麦ProcessData公司的P-net,以及ASI(ActraturSensorInterface),MODBus,Arcnet,国际标准组织-基金会现场总线FF:

FieldBusFoundation等。

现场总线控制系统打破了传统控制系统的结构形式。

传统模拟控制系统采用的是一对一的物理连接,而现场总线控制系统是把单个分散的测量控制设备变成网络节点,以现场总线为纽带,将每个网络节点连接成可以相互沟通信息、共同完成自控任务的控制系统和网络系统。

CAN已被公认为几种最有前途的现场总线之一。

本文着重介绍了基于CAN总线的节点以及通信系统的设计。

 

第1章CAN现场总线介绍

1.1CAN现场总线发展背景

现今社会汽车产业越来越繁盛,所以需要一种更利于信息数据传输交换的通信协议。

例如汽车中的各种电子控制系统需要一些高的技术支持,而随着汽车的发展,汽车是否安全、是否便利、成本是否低都已成为人们首要考虑的事情。

可是传统的汽车控制技术已经不能满足人们越来越高的要求,也已经不适应汽车的发展方向。

20世纪80年代,德国Bosch公司开始研究用于汽车产业的新的通信协议及控制方法,并第一次提出了CAN总线控制系统。

它的提出是为解决汽车内部的复杂硬信号连接而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线,同轴电缆或光导纤维。

它是一种有效支持分布式控制或实时控制的串行通信网络,以其短报文帧及带有信息优先权及冲突检测的载波监听多路访问的媒介访问控制方式而倍受工业自动化领域中设备互连的厚爱。

目前,其应用范围已不再局限于汽车工业,而向纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。

CAN总线以其独特的设计,实时性强、成本低、抗干扰能力强、可靠性高、纠错能力强等特点在测控领域获得广泛应用,成为一种新型的工业控制现场总线方案。

这一崭新的CAN网络协议使得汽车产业得到了飞速的发展。

CAN(ControllerAreaNetwork)总线是串行通信网络。

传统运用的是基于R线构建分布式控制系统,这种控制系统是基于通信节点的地址编码的,所以其结构复杂,直接导致系统的通信效率不高,而且控制的可靠性能低。

CAN总线通过每个网络节点进行数据通信,每个节点可以互相收发数据,CAN总线协议对通信数据编码,可以不对节点地址编码,使各个节点可以同时接收到相同的数据,增强了数据通信的实时控制及传输性能。

另一点CAN总线使用起来非常方便。

CAN总线的结构十分简单,仅有2根线(CANH和CANL)和外部设备相连,但CAN总线的内部却有非常复杂和智能的通信模块,可以方便快捷准确的进行数据的自由通信。

1.2CAN现场总线应用现状及主要特性

随着汽车电子技术的发展具有高度灵活性、简单的扩展性、优良的抗干扰性和处理错误能力的CAN总线,越来越受到人们的重视,它在汽车领域上得到了广泛的应用。

像现在世界上一些有实力的汽车制造厂商,都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。

现如今CAN总线已发展成为汽车电子系统的主流总线,已形成国际标准的现场总线,并由ISO正式颁布了IS011898CAN高速应用标准和ISO11519CAN低速应用标准,这为CAN总线的标准化、规范化铺平了道路。

在现代分布式测量与控制技术领域中的应用已愈来愈广泛。

CAN总线通信协议的性能和可靠性经过多年的检验,以其高性能,高可靠性及独特的设计,已被应用于越来越多的产业,比如铁路、交通、自动控制、航空航天、航海、机械工业、机器人、医疗器械及安防等领域。

仅仅二十多年的发展,CAN总线便已成为自动化领域技术的潮流。

现如今CAN总线的发展已经颇具规模,如上所说它不仅在汽车领域的应用占据一定优势,在其他工业领域内也占有一席之地。

一切追其原因是因为通信技术的不断进步,对通讯本身的要求又不断提高,这种形势下CAN总线的优势在于其优越的抗干扰能力和性价比。

虽然CAN总线有一定局限,甚至还有许多漏洞,但对CAN总线的改进还在持续,相信在未来的发展日子中,CAN总线通过不断的更新和改进,能够取得更大的进步。

CAN总线的主要特性:

1)CAN是到目前为止为数不多的有国际标准的现场总线,总线协议已被国际标准化组织认证,技术基本成熟,控制的芯片已经商品化,性价比也较高,特别适用于分布式测控系统之间的数通讯。

2)CAN可以点对点、一点对多点(成组)及全局广播集中方式传送和接受数据。

3)CAN总线没有采取传统的站地址编码,不对节点进行地址规定,而是把通信数据块进行编码。

4)CANBUS直接通讯距离最远可达10km(速率5Kbps以下),通讯速率最高可达1Mbps(此时距离最长为40m)。

5)CAN采用非破坏性的总线仲裁技术,即载波侦听多路访问/冲突检测(CSMA/CD)的总线仲裁方式。

6)CANBUS上节点数理论值为2000个,实际可达110个,它主要取决于总线驱动能力的大小;报文标志符可达2032种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受限制。

7)CAN总线协议采用了完善的错误检测与错误处理机制,包括了CRC校验、

错误报文自动重发、错误状态判断、临时错误自动恢复等措施,从而很好的保证了数据通信的可靠性。

8)CAN节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其它操作不受影响。

9)CAN总线采用短帧结构,每一帧的数据段长度最多为8个字节,可以满足通常工业领域中控制命令、工作状态及测试数据的一般要求,并可以保证通信的实时性,这样短的传输时间,受到干扰的概率低。

10)NRZ编码/解码方式,并采用位填充(插入)技术。

11)开发系统廉价,OEM用户容易操作,INTER、PHILIPS等芯片厂家均生产具有CAN接口的80C51芯片。

1.3CAN现场总线协议分层

CAN总线协议主要是用来描述设备之间的信息传递方式,从结构上主要分为3个层次,分别是由对应OSI标准网络模型的最低两层:

数据链路层和物理层组成。

CAN总线协议层次结构有高到低如下表所示。

CAN总线协议分层结构

协议层

对应OSI模型

说明

LLC

数据链路层

逻辑链路控制层,主要为链路中的数据传输提供上层控制手段

MAC

媒体访问控制层,主要为控制仲裁、错误界定等数据传输具体实现

物理层

物理层

作用是在不同节点间根据所有的电气属性进行位的实际传输

LLC层和MAC层也可以看作是CAN总线数据链路层的两个子层。

其中LLC(介质访问控制子层)的主要功能是:

为数据传送和远程数据请求提供服务,确认有LLC接收的报文实际已被接收,完成报文滤波、过载通知和恢复管理等主要工作。

在定义目标处理时,存在许多灵活性。

MAC(逻辑链路控制子层)的功能主要是传送规则,亦即控制帧结构、执行仲裁、错误检测、出错标定和故障界定。

是专门解决广播网中信道分配问题,所以MAC子层也要确定,为开始一次新的发送,总线是否开放或者是否马上开始发送。

MAC子层的另一部分是位定时性。

MAC子层不存在修改的灵活性。

最后物理层的功能是有关全部电气特性在不同节点间的实际传送。

自然,在一个网络中,物理层的所有节点必须是相同的,可是在选择物理层时存在很大的灵活性。

1.4CAN现场总线报文传输

CAN总线上的数据信息都是以报文的形式发送的。

报文的格式并不唯一,而是有几种不同的格式,但是报文的长度却受到电气及内部控制的限制。

CAN总线的报文传输也就是帧的传输,帧是CAN总线传送数据单位。

1帧格式

有2种不同的帧格式,不同之处为标示符域的长度不同;含有11位标识符的帧称之为标准帧,而含有29位标识符的帧称之为扩展帧。

2帧类型

报文传输有以下四种不同类型的帧:

数据帧,远程帧,错误帧,过载帧

其中数据帧的结构如下:

MCP2515是一款独立控制器局域网络协议控制器,完全支持CANV2.0B技术规范,通讯速率为1Mb/s。

该器件能发送和接收标准和扩展数据帧以及远程帧。

两个接收缓冲器,可优先存储报文,三个发送缓冲器,具有优先级设定及发送中止功能。

MCP2515自带的两个验收屏蔽寄存器和六个验收滤波寄存器可以过滤掉不想要的报文,因此减少了主单片机(MCU)的开销,并采用低功耗的CMOS技术。

MCP2515与MCU的连接是通过业界标准串行外设接口来实现的。

MCP2515是一款独立CAN控制器,可简化需要与CAN总线连接的应用。

该器件主要由三个部分组成:

1.CAN模块,由CAN协议引擎、验收滤波寄存器、验收屏蔽寄存器、发送和接收缓冲器组成。

2.用于配置该器件及其运行的控制逻辑和寄存器。

3.SPI协议模块。

(1)CAN模块

CAN模块的功能是处理所有CAN总线上的报文接收和发送。

意思是报文发送时,首先将报文装载到正确的报文缓冲器和控制寄存器中。

通过SPI接口设置控制寄存器中的相应位或使用发送使能引脚均可启动发送操作。

通过读取相应的寄存器我们就可以检查通讯状态和错误。

之后会对在CAN总线上检测到的任何报文进行错误检查,然后与用户定义的滤波器进行匹配,以确定是否将报文移到两个接收缓冲器中的一个。

(2)控制逻辑

通过与其他模块连接,控制逻辑模块用来控制MCP2515的设置和运行,以便传输信息与控制。

所提供的中断(INT)引脚提高了系统的灵活性。

器件上有一个多用中断引脚及各接收缓冲器的专用中断引脚,用于指示有效报文是否被接收并载入接收缓冲器。

所以可以选择使用专用中断引脚。

对于通用中断引脚和状态寄存器也可以用来确定何时接收了有效报文。

除此之外,器件还有三个引脚,主要是用来启动将装载在三个发送缓冲器之一中的报文立即发送出去。

是否使用这些引脚完全是由用户决定;若不使用,也可利用控制寄存器(通过SPI接口访问)来启动报文发送。

(3)SPI协议模块

MCU通过SPI接口与该器件连接。

使用标准的SPI读/写指令以及专门的SPI命令来读/写所有的寄存器。

MCP2515的结构框图如下:

2.2MCP2515的基本特性

(1)完全支持CANV2.0B技术规范,通讯速率为1Mb/s:

-0-8字节长的数据字段

(2)接收缓冲器、验收屏蔽寄存器和验收滤波寄存器:

-六个29位验收滤波寄存器

-二个29位验收屏蔽寄存器

-两个接收缓冲器,可优先存储报文

(3)对头两个数据字节进行滤波

(4)三个发送缓冲器,具有优先级设定及发送中止功能

(5)高速SPI接口(10MHz)

(6)带有可选使能设定的中断输出引脚

(7)单触发模式确保报文发送只尝试一次

(8)“请求发送(Request-to-Send,RTS)”输入引

脚可各自配置为:

-各发送缓冲器的控制引脚,用于请求立即发送

报文

-通用数字输入引脚

(9)带有可编程预分频器的时钟输出引脚:

(10)低功耗的CMOS技术:

-工作电压范围2.7V至5.5V

-5mA典型工作电流

-1μA典型待机电流(休眠模式)

(11)可用起始帧信号(Start-of-Frame,SOF),用于

监控SOF信号:

(12)“缓冲器满”输出引脚可配置为:

-各接收缓冲器的中断引脚

-通用数字输出引脚

MCP2515的引脚:

引脚功能如下图所示:

 

2.3PCA82C250--CAN收发器功能简介

82C250为CAN总线收发器,是CAN控制器和物理总线间的接口,它最初是为汽车中的高速应用(达1Mps)而设计的。

这个器件对总线提供不同的发送能力和对CAN控制器提供不同的接收能力。

这是全世界使用最广泛的CAN收发器。

82C250驱动电路内部具有限流电路,限定的电流值保护接收器输出级,避免阳极和阴极的短路,所以这个特征值主要是防止发射器输出级的损坏。

如果结点温度超过大约160℃,发送器输出端限定的电流值输出被降低,因为发送器被占去主要部分的功率消耗,这将导致降额功耗和较低的片面温度,器件的所有其它部分在使用中将继续工作。

当总线短路的时候,热保护非常的需要。

82C250采用双线差分驱动,有助于抑制汽车等恶劣电气环境下的瞬变干扰。

主要特征

1.与ISO/DIS11891标准完全兼容

2.高速率(最高速可达1Mbps)

3.很强的抗瞬间干扰和保护总线的能力

4.降低射频干扰(RFI--RadioFrequencyInterference)的斜率控制

5.防护总线与电池与地之间发生短路

6.低电流备用模式

7.未上电节点不会影响总线

8.总线至少有110个节点相连接

9.不同的接收器都具有宽共模范围,有很强的抗电磁干扰(EMI)能力。

10.过热保护

功能描述

1脚:

欲发送数据的输入端;

2脚:

电源地端;

3脚:

电源端;

4脚:

接收数据的输出端;

5脚:

参考电压的输出端;

6脚:

低电平CAN总线输入/输出端;

7脚:

高电平CAN总线输入/输出端;

8脚:

总线脉冲斜率控制电阻连接端。

 

CAN节点的通信有三种模式:

高速模式、斜率控制模式、待机模式。

这三种模式的选择是通过PCA82C250端子的接法来实现的。

高速模式下是要求接一个0-1.8kΩ的电阻到地;斜率控制模式下是要求接一个16.5-140kΩ的电阻到地;待机模式下是要求Rs接到高电平,至少保证RS的端电压大于0.75Vcc。

引脚RS用法

Rs提供条件

工作模式

Rs上的电压或电流

>0.75Vcc

待机模式

|

|<10µA

-10µA<

<-200µA

斜率控制模式

0.3Vcc<

<0.6Vcc

<0.3Vcc

高速模式

<-500µA

第3章CAN总线通信节点硬件设计

3.1CAN现场总线通信节点设计方案

CAN总线的硬件电路的节口非常简单,只需要微处理器和CAN控制器及CAN收发器便可构成。

所以CAN总线通信接口通常情况下有2种实现方式:

一,微控制器+独立的CAN控制器+CAN收发器;二,集成CAN控制器的微控制器(如单片机)+CAN收发器。

只要符合CAN总线规范的单元都可以通过CAN接口接入CAN总线。

CAN总线在经过二十多年的发展,已经产生了许多类型的CAN总线协议的芯片,其中有独立的CAN控制器芯片,也有集成CAN控制器的微处理器芯片。

现在已经有许多可以实现CAN总线协议的芯片来供用户选择。

另外,CAN协议是完全公开的,这些都给CAN总线的开发设计带来很大的方便。

独立的CAN控制器有Philips公司的PCA82C200、SJA1000,Intel公司的82526、82527等。

集成CAN控制器的微处理器也有很多,比如Philips公司的P8XC592/598等。

常用的CAN收发器有Philips公司的PCA82C250等。

这些芯片一般都兼容最新的CAN2.0A/B协议。

方案1:

由51单片机、MCP2515CAN控制器和PCA82C250CAN收发器组成的CAN通信节点

采用STC89C52、MCP2515CAN控制器和PCA82C250CAN收发器设计CAN通信节点。

这种方案的设计思路很简单,控制过程也比较方便。

通过STC89C52单片机编程控制MCP2515的初始化及收发数据。

MCP2515负责CAN总线上的数据的处理,PCA82C250收发器负责传递数据。

方案2:

由P8xC591芯片控制的CAN节点通信

Philips公司的P8xC591是集成CAN控制器的单片机,因为CAN控制器是内置于P8xC591芯片中,所以这个方案中的节点只需要P8xC591和82C250CAN收发器。

虽然CAN控制器内置于P8xC591中,但P8xC591还保留MCP2515的一切功能,甚至比MCP2515的功能更加强大,而且这种方案还大大简化了硬件系统电路。

采用两路光耦6N137起到隔离CAN总线的作用。

方案比较:

方案2中,集成CAN控制器的单片机P8xC591因为其内部已经内置了CAN控制器,所以不需要再进行电路设计,这样的话我们就难以深入理解CAN总线的原理。

P8xC591芯片是一种高性能通信芯片,价格又比较高。

在一般的系统控制中,实现简单的控制就可满足用户的需求的话,就常采用单片机和独立的CAN控制器作为CAN节点进行通信,这样成本低,也可以让我们更好的了解CAN总线的通信协议。

除此之外,市场上有大量的单片机,使用独立的CAN控制器MCP2515可以根据控制要求选择适用的单片机,从而更好的达到控制要求。

又根据协议的通用性以及硬件电路的可移植性,还可以方便的移植到其他应用环境中,具有较大的实际应用意义。

82C250器件提供对总线的差动发送能力和对CAN控制器的差动接受能力,完全和“ISO11898”标准兼容。

因此,本设计采用方案1。

3.2智能节点硬件电路设计

一、系统的控制芯片STC89C52

(1)简介:

系统的控制芯片采用STC89C52单片机来控制,因为STC89C52应用比较广泛,并且成本低,操作控制简单,功耗较低,运行可靠性强。

系统本身对处理器处理速度的要求不是很高,所以选择该款单片机。

STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程的Flash存储器。

并使用了经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效,更简洁的解决方案。

具有以下标准功能:

8k字节Flash,512字节RAM,32位I/O口线,3个16位定时器/计数器,4个外部中断,看门狗定时器,内置4KBEEPROM,MAX810复位电路,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口,片内晶振及时钟电路。

另外,空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

(2)STC89C52RC引脚功能说明

VCC(40引脚):

电源电压

VSS(20引脚):

接地

P0端口(P0.0~P0.7,39~32引脚):

P0口是一个漏极开路的8位双向I/O口。

作为输出端口,每个引脚能驱动8个TTL负载,但当对端口P0写入“1”时,就可以作为高阻抗输入。

在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。

P0口内部上拉电阻有效。

P1端口(P1.0~P1.7,1~8引脚):

P1口是一个带内部上拉电阻的8位双向I/O口。

P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。

而且P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)

P2端口(P2.0~P2.7,21~28引脚):

P2口是一个带内部上拉电阻的8位双向I/O端口。

P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。

对端口写入1时,通过内部的上拉电阻把端口拉到高

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1