基于51单片机的CAN总线技术及其应用

发布者:点亮未来最新更新时间:2015-01-19 来源: e-works关键字:单片机  CAN  总线技术 手机看文章 扫描二维码
随时随地手机看文章

引言

    1986年德国最大的工业企业之一Rober Bosch公司首次提出了应用于汽车内各种传感器和执行器之间相互通信的CAN总线(Controller AreaNetwork)技术以来,以其可靠性、实时性和灵活性强的特点,得到了诸多汽车开发商的青睐。本文介绍了CAN总线的通信协议,分析了CAN总线控制器SJA1000和驱动器PCA82C250的内部结构和工作原理,主要阐述了CAN总线技术在智能小区门禁控制系统中的应用。

1 CAN总线的特点

    1.1 CAN总线的位数值表示与通信距离

    CAN总线协议是建立在国际标准组织的开放系统OSI 7层互连参考模型基础之上的。其模型结构只有3层,即只取OSI底层的物理层、数据链层和应用层,保证了节点间无差错的数据传输。

    CAN总线上用“显性”(Dominant)和“隐性”(Recessive)两个互补的逻辑值表示“0”和“1”。如图1所示,VCNA-H和VCAN-L为CAN总线收发器与总线之间的两接口引脚,信号是以两线之间的“差分”电压形式出现。在隐性状态,VCNA—H和VCAN—L被固定在平均电压电平附近,Vdiff近似于0。显性位以大于最小阀值的差分电压表示。CAN总线的通信距离最远可达10Km(位速率为5 kbps),通信速率最快可达1Mbps(此时最长通信距离为40m)。

 点击放大图片

    图1 CAN总线的位数值传输方式

    1.2报文传输

    CAN技术的报文传输为多主方式工作,网络上任意节点均可在任意时刻主动地向网络上其它节点发送信息,而不分主从。CAN节点只需通过对报文的标示符滤波即可实现点对点、一点对多点及全局广播等几种方式发送、接收数据。

    CAN总线的数据传输(报文传输)采用帧格式。按帧格式的不同,分为含有11位标识符的标准帧和含有29位标识符的扩展帧。CAN总线的帧类型分为数据帧、远程帧、错误帧和过载帧。

    1.3仲裁(Arbitration)

    只要总线空闲,任何单元都可以开始发送报文。如果两个或两个以上节点同时开始传送报文,那么就会有总线访问冲突。通过使用标识符的逐位仲裁可以解决这个冲突。仲裁的机制确保了报文和时间均不损失。当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧。在仲裁期间,每一个发送器都对总线进行监测,如果发送和接收电平相同,则该节点可以继续发送报文。比如发送的是一“隐性”电平,而监视到的是一“显性”电平,那么这个节点就失去了仲裁,必须退出发送状态。

2 CAN总线控制器和驱动器

    2.1 CAN总线控制器SJA1000的内部结构

    CAN总线控制器主要保证数据链路层和物理层的通信质量。SJA1000是一种独立的CAN总线控制器。SJA1000的内部结构如图2所示。

 点击放大图片

    图2 SJA1000内部结构图

    各功能模块的作用如下:

    接口管理逻辑(IML)负责解释来自CPU的命令,控制CAN寄存器的寻址,向主控制器(CPU)提供中断信息和状态信息。发送缓冲器(TXB)是CPU和位流处理器(BSP)之间的接口,负责存储发送到CAN总线上的一条完整的报文。发送缓冲器的长度为13个字节,由CPU写入、位流处理器读出。[page]

    接收缓冲器(RXB、长度为13个字节)是验收滤波器和CPU之间的接口,用来存储从CAN总线上接收并被确认的信息。作为接收FIFO(RXFIFO,长度为64字节)的一个窗口,接收缓冲器可被CPU访问。CPU在接收FIFO的支持下,可以在处理一条报文的同时接收其他报文。

    验收滤波器(ACF)将一条接收到的报文标识码与验收滤波器中的预设值相比较,以决定是否接收这条报文。在纯粹的接收测试中,所有的报文都保存在接收FIFO中,但只有验收滤波通过且无差错的报文,才能被保存在接收缓冲器中。

    位流处理器(BSP)是一个控制发送缓冲器、接收FIFO和CAN总线之间数据流的程序装置。它还执行总线上的错误检测、仲载、总线填充和错误处理。位时序逻辑(BTL)监视串行的CAN总线和位时序。它在信息开头“弱势支配”的总线传输时,同步CAN总线位流(硬同步),接收报文时再次同步下一次传送(软同步)。

    错误管理逻辑(EML)负责限制传输层模块的错误。它接收来自位流处理器的出错报告,然后把有关错误统计告诉位流处理器和接口管理逻辑(IML)。

    2.2 SJA1000的内部寄存器

    SJA1000有两种工作模式,即BasicCAN模式和PeliCAN模式。在这两种模式中,SJA1000寄存器从数量、地址分配到功能等方面都有所区别。SJA1000在复位状态下的默认模式为BasicCAN模式。CAN控制器在两种模式中又都有两种状态模式,分别称为操作模式和复位模式。处在这两种不同状态的模式中,对寄存器的访问操作功能是不同的。SJA1000的控制寄存器、命令寄存器、状态寄存器、发送缓冲器(均为8位)等各种寄存器分配在0~31地址单元中。设置各寄存器中的参数可实现不同的操作功能。

    2.3 CAN总线驱动器PCA82C250

    总线驱动器PCA82C250是CAN控制器与物理总线之间的接口。该器件对总线提供了差动发送能力,同时对CAN控制器提供了差动接收能力。它可以用高达1Mbps的位速率在两条有差动电压的总线上传输数据,总线可连接110个节点。总线驱动器PCA82C250的功能参如图3所示。

 点击放大图片

    图3 PCA82C250的功能框图

    图3中,引脚8(Rs)用于选定PCA82C250的工作模式。PCA82C250的工作模式有3种,即高速模式、斜率控制模式和待机模式。对于高速工作模式,发送器的输出级晶体管尽可能快速启动和关闭。在这种模式下,不采取任何措施限制上升和下降的斜率。采用斜率控制模式(Slope Control),可降低射频干扰。

3 CAN总线技术应用设计

    3.1硬件电路设计

    利用CAN总线技术实现了智能小区单元门禁控制器和小区保安部门之间数据的快速、准确传递,提高了小区智能化管理水平。图4为小区单元门禁控制器的CAN总线通信部分电路。值得注意的是控制器AT89S52为高电平复位,而SJA1000为低电平复位。为了增强CAN总线各节点的抗干扰能力,SJA1000的TX0、RX0和PCA82C250之间设置光电耦合器TLP521—2(即图4中的U3),实现了CAN总线上各用户之间的电气隔离。同时,两根总线与地之间分别接了一个防雷击管P6KE6.8,当两输入端与地之间出现瞬变干扰时,通过防雷击管的放电可起到一定的保护作用。

    另外,PCA82C250的CANH和CANL之间接120Q阻抗匹配电阻是非常必要,否则会影响总线的数据传输距离和传输质量。

    3.2 CAN总线的软件设计

    CAN总线技术的软件设计主要包括:CAN总线控制器的初始化、报文发送和报文接收。SJA1000总线控制器的初始化对CAN总线的正常工作非常重要。SJA1000的初始化只有在复位模式下才能进行,初始化的关键是设置SJA1000内部寄存器的参数。其包括:设置工作方式、设置接收滤波方式,设置接收屏蔽寄存器(AMR)和接收代码寄存器(ACR)、设置波特率参数和中断允许寄存器(IER)等。在完成SJA1000的初始化设置以后,返回工作状态,进行报文的发送和接收通信。图5为SJA1000的初始化程序流程图。

 点击放大图片

    图4 CAN总线硬件电路设计

 点击放大图片

    图5 SJA1000初始化程序流程

    发送报文子程序负责完成报文的发送。发送时用户只需将待发送的报文按特定格式组合成一帧报文,送入SJA1000发送缓存区中,然后启动SJA1000的发送位,即可发送报文。以查询方式发送报文的程序流程如图6所示。[page]

    接收报文子程序负责完成报文的接收以及其他情况处理。接收子程序比发送子程序要复杂一些,因为在处理接收报文的过程中,同时要对总线关闭、错误报警、接收溢出等情况进行处理。图7为以查询方式接收报文的程序流程图。

 点击放大图片

    图6发送报文程序流程图

 点击放大图片

    图7接收报文程序流程图

4结论

    CAN总线技术是较实用的现场总线技术,该总线以CAN总线控制器和驱动器为硬件基础,采用了开放式仲裁机制和“隐性”、“显性”位信号差分通信方式,保证了报文传输的可靠性、准确性、快速性和实时性。正因为如此,国外很多公司生产的控制芯片内置CAN总线控制器(如:Philips公司生产的P8xC591、Atmel公司生产的AT90CAN128等器件),方便了用户的使用,缩短了开发周期。

关键字:单片机  CAN  总线技术 引用地址:基于51单片机的CAN总线技术及其应用

上一篇:51单片机串口控制继电器
下一篇:针对CAN总线传输距离问题的两种解决方案

推荐阅读最新更新时间:2024-03-16 13:51

25-基于单片机的多路彩灯设计
具体仿真功能: ①开始/停止按键控制流水灯的启动和停止; ②自动/手动按键用于切换自动模式与手动模式; ③手动按键用于切换手动模式下的流水灯模式。 设计介绍 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 ST
[单片机]
25-基于<font color='red'>单片机</font>的多路彩灯设计
基于单片机的wifi模块原理图分析
本文介绍由单片机STM32F103控制无线数字传输芯片nRF24L01的WIFI模块的设计原理,通过无线方式进行数据双向远程传输,两端采用全双工方式通信,该系统具有成本低,功耗低,软件设计简单以及通信可靠等优点。 nRF24L01引脚功能及描述 nRF24L01nRF24L01的封装及引脚排列如图所示。各引脚功能如下: nRF24L01引脚示意图 CE:使能发射或接收; CSN,SCK,MOSI,MISO:SPI引脚端,微处理器可通过此引脚配置nRF24L01; IRQ:中断标志位; VDD:电源输入端; nRF24L01模块 nRF24L01模块有八个引脚需要连接到STM32,在这里由于用到了SPI1的四个引脚,直接与PA
[单片机]
基于<font color='red'>单片机</font>的wifi模块原理图分析
DS18B20单片机C51温度计实践
18B20温度计,正负温度显示。最大99摄氏度。用万能板手工焊接。调试成功,正常显示。共阳数码管由三极管驱动。 下面是C51程序,您一看就懂了: #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char uchar code table ={ 0x14,0xf5,0x19,0x51, //0 1 2 3 0xf0,0x52,0x12,0x75, // 4 5 6 7 0x10,0x50,0x30,0x92, // 8 9 a b 0x1e,0x
[单片机]
AVR单片机串口操作程序
#include #include #include #include #include #define FOSC 8000000 //mcu工作时钟频率 typedef unsigned int uint16; typedef unsigned char uchar8; uchar8 DoubleIRData ={0x64,0x00,0x20,0x04,0x40,0x00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //双红外发射数据 取PD2作为驱动远程红外发射 //uchar8 SingleIRData ={0x60,0x00,0x04,0x00,0x
[单片机]
单片机温控风扇Proteus仿真与源程序设计
硬件构成:单片机+最小系统+数码管显示模块+74HC573数码管驱动模块+温度采集模块+风扇驱动模块+按键模块 1.采用DS18B20温度传感器测温,74HC573驱动数码管,数码管显示温度和风扇的档位; 2.三个按键:设置、加、减。按一下设置可以设置上限,再按下设置下限,均可以按键加减调整; 3.利用PWM调速,当温度低于下限时,风扇不转动,当温度处于上、下限之间时1档转动(风扇50%转速转动),当温度超过上限时,全速转动。 仿真原理图如下 制作出来的实物图如下: 温控风扇元件清单 1) 7*9万用板 2) 风扇 3) STC89C51单片机 4) 74hc573 5) 40脚IC座 6) 20脚IC座 7
[单片机]
<font color='red'>单片机</font>温控风扇Proteus仿真与源程序设计
常用电机微控制器之比较
    摘要: 在介绍几种典型电机微控制器8XC196MC、TMS320C240和ADMC311结构的基础上,着重对这些芯片如何实现PWM控制等交流电机控制系统所必需的性能进行了分析比较,以便为交流感应电机(ACIM)、步进电机(SM)等电机控制系统的数字设计提供参考。     关键词: DSP 微控制器 电机控制 PWM 电机控制是微控制器的一个重要应用领域。近几十年来,随着微电子工艺水平的提高,电机微控制水平有了飞速的发展。世界上著名的集成电路芯片制造商纷纷推出各自的产品,使得电机微控制器种类不断增多,功能日益增强。常见的有Intel公司的8CX196MC/MD/MH、TI公司的TMS320C24x系列
[应用]
51单片机汇编:多路延时开关
要求:51单片机,8个按键、8个发光二极管。 ;一个键按下则对应灯亮,3秒后灭,每个键控制一个灯。 ;题目要求的电路,非常简单,用 P1 连接按键、P2 连接 LED 即可。 ;用定时器,定时 7.5 ms,中断 400 遍,即为 3 秒钟。 ;针对每个灯,都要有一个计时单元,用来控制亮灯 3 秒钟的时间。 ;用汇编语言编写程序如下: KEY EQU 30H K_L EQU 31H K_T EQU 32H ORG 0000H AJMP START ORG 000BH ;T0中断入口地址 JMP T0_INT START: MOV TH0, #40 ;定时
[单片机]
51<font color='red'>单片机</font>汇编:多路延时开关
PIC16C55单片机控制多用电子钟
本电子钟采用PIC16C55单片机控制,适于温室的定时恒温或自来水的定时定压控制等。PIC16C55单片机工作电压为2.5~6.25V,功耗低、驱动能力强。本电子钟可以控制一路负载在24小时内的3次开/关;一个双限触发的定时输出口,既可接传统的功率保持型继电器,也可接脉冲继电器。本机用四位LED数码管扫描式显示,还有消隐(省电)工作方式,使用起来非常灵活、方便。   一、 工作原理    电子钟电路见图1。RB7口是定时指示端,在定时开期间输出高电平,驱动V1发光,该口也可经缓冲作定时输出口;RB6是双限触发控制的定时输出口,其工作方式是:在RB7高电平期间,若RB1为高电平,则RB6输出高电平;若RB0为高电平,
[单片机]
PIC16C55<font color='red'>单片机</font>控制多用电子钟
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved