datasheet

基于CAN总线的嵌入式控制器串行通讯的应用

2018-02-12来源: eefocus 关键字:CAN总线  控制器  串行通讯

    1  引言

    CAN 是国际上应用很广泛的一种现场总线,MCS96 系列单片机是目前在工业界推广应用较广泛的嵌入式控制器,其87C196CA 单片机内核本身带有CAN 控制器,支持标准和扩展的信息帧,即遵循CAN2.0A 和CAN2.0B 协议。由此而构成的CAN 总线支持分布式控制和实时控制,其串行通信方式灵活可靠,传输距离较远。由于CAN 总线具有通信速率高、工作可靠性高、现场抗干扰能力强、网络连接方便和性能价格比高等优点,在汽车发动机控制部件、汽车抗滑系统、工业自动化、机床、电梯控制等领域得到了较为广泛的应用。

 

    2  硬件构成

    2. 1  CAN 总线连接

    基于CAN 总线的两个87C196 单片机网络联接时,分别将单片机的CAN接收、发送两根线通过PCA82C250 CAN总线收发器联接到CAN总线上,构成多微控制器CAN总线连接。通信介质可以是双绞线、同轴电缆或光纤,其总线连接如图1 所示。


      图1  CAN 总线连接

    该网络最高通信速率为1Mbit/s ,当传输速率为5Kbit/s时,最大通信距离可达10Km。在其CAN 总线上可挂接多达110 个网络节点,而网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息。其数据传输和接收可以是点对点、一点对多点或全局广播等方式进行。

    2. 2  87C196CA 单片机

    87C196CA 是集成CAN2.0B总线控制器的高性能16 位微处理器,特别适用于现场实时事件控制和分布式控制。片内的CAN 控制器与Intel 82527独立CAN 控制器在软件上是兼容的,每个CAN 控制器的输入、输出引脚由二根双绞线联接到CAN总线上。CAN 控制器由一个输入引脚(RXCAN) 、一个输出引脚( TXCAN) 、控制和状态寄存器,错误探测和管理逻辑组成。图2 为CAN 控制器方框图。

              图2  CAN 控制器方框图

    2. 3  CAN 总线收发器

    PCA82C250是CAN协议控制器和物理传输线路之间的接口,是影响网络性能的关键因素。它对总线提供差动发送能力,并对CAN控制器提供差动接收能力,其最高传输速率可达1Mbit/s。其主要特点是芯片内部具有限流电路,可以防止输出级对电源、地或负载短路;由于采用差动接收发方式,因此有较强的抗电磁干扰能力;具有低电流节电待机工作模式;该CAN总线收发器至少可以连接110个节点。利用PCA82C250还可以方便地在CAN控制器与驱动器之间建立光电隔离,以实现总线上各节点间的电气隔离。

 

    3  通讯软件

    对于通过CAN 总线连接的单片机之间的通讯软件编程需要定义一系列的控制字,并在两个单片机上进行配置。即首先进行上电初始化,定义CAN控制寄存器,定义位定时寄存器选择CAN 的通讯速率,定义信息体屏蔽寄存器选择接收对象。其次对信息体进行初始化,分别定义两个信息体工作模式、发送字节数、选择CAN2.0A 或CAN2.0B 方式。其程序代码:

    / *CAN 控制器初始化*/

    can_cON = 0x41 ; / *CAN 控制器CCE 位置1 ,

    则可以定义CAN 定器* /

    can_ btime0 = 0x41 ; /* 定义CAN 定时器为

    250 Kb/ s * /

    can_btime1 = 0x67 ;

    can_con = 01 ; /  *允许对CAN 控制器进行软

    件初始化* /

    can_sgmsk = 0x0 ; / * 定义标准CAN 通讯格

    式的屏蔽控制字,所有位都不滤纸*/

    can_msg1con0 = 0x55 ; / * 信息体1 控制器0

    初始化* /

    can_msg1con1 = 0x55 ; / * 信息体1 控制器1

    初始化* /

    can_msg1cfg = 0x88 ; / *定义信息体1 为发

    送,发送8 字节,标准CAN 格式* /

    can_msg1id = 0xc8c8c8c8 ; / * 信息体1 标识

    寄存器初始化标识符为c8c8c8c8 ;

    can_ msg1con0 = ox95 ; / * 信息体1 控制器

    0MSGVAL 位置1 ,标明信息体1 有效* /

    can_msg2con0 = 0x55 ; / * 信息体2 控制器0

    初始化* /

    can_msg2con1 = 0x55 ; / *信息体2 控制器1

    初始化* /

    can_msg2cfg = 0x80 ; /  *定义信息体2 为接

    收,接收8 字节,标准CAN 格式* /

    can_msg2id = 0xc8c8c8c8 ; /  *信息体2 标识

    寄存器初始化标识符为c8c8c8c8  */

    can_ msg2con0 = ox95 ; / * 信息体2 控制器

    0MSGVAL 位置1 ,标明信息体2 有效 */

    can_con = 0x02 ; / * CAN 控制器软件初始化

    完成*/

    /  *发送8 字节数据: * /

    CAN_msg1con1 = 0x5a ; / * CPUUPD 置1 ,使

    软件刷新数据,NEWDA T 置1 使信息置1 使信息

    体有效* /

    can_msg1data0 = 0x00 ; / * 给信息体1 第1 个

 

    数据赋值* /

    can_msg1data1 = 0x11 ; / * 给信息体1 第2 个

    数据赋值3*/

    can_msg1data2 = 0x22 ; / * 给信息体1 第3 个

    数据赋值 */

    can_msg1data3 = ox33 ; / * 给信息体1 第4 个

    数据赋值* /

    can_msg1data4 = 0x44 ; / * 给信息体1 第5 个

    数据赋值* /

    can_msg1data5 = 0x55 ; / * 给信息体1 第6 个

    数据赋值* /

    can_msg1data6 = 0x66 ; / * 给信息体1 第7 个

    数据赋值*/

    can_msg1data7 = ox77 ; /  *给信息体1 第8 个

    数据赋值*/

    / *接收8 字节数据: */

    can_msg2cfg = 0x80 ;

    can_msg2id = oxc8c8c8c8 ;

    can_msg2con1 = 0x55 ;

    can_msg2con0 = 0x99 ;

    4  结束语

    基于CAN 总线的16 位87C196CA 单片机串行通讯,由于运用CAN 总线技术,使电路设计简化、紧凑、极大地提高了系统的可靠性、实时性,系统抗干扰性能强,成本较低,性能安装比高、安装维护简洁方便,更适于车辆控制、工厂自动化控制、电梯控制、医疗设备等,具有非常广阔的应用前景。


关键字:CAN总线  控制器  串行通讯

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2018021237752.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于内核对象的Linux输入子系统触摸屏的驱动设计
下一篇:基于MPC5200B的嵌入式视频处理系统设计

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

CAN总线边沿时间标准是什么?

CAN总线边沿时间会影响采样正确性,而采样错误会造成不断错误帧出现,影响CAN总线通信。那么CAN总线边沿时间标准是什么?边沿时间如何测量呢? 一、CAN测试边沿时间意义 目前在国内汽车电子行业没有明确的标准,也就造成汽车零配件质量良莠不齐,零配件整装到汽车上将会造成CAN总线通信异常,给汽车驾驶带来安全隐患。如下是GMW3122信号边沿标准对CAN总线边沿的规范要求。  表中根据需求不同,波特率不同分为高速CAN、中速CAN。测试的是信号边沿时间,边沿时间是指隐性电平到显性电平时间和显性电平到隐性电平变化的总时间。隐性电平(逻辑值0)到显性电平(逻辑值1)时间为上升沿,显性电平到隐性电平
发表于 2018-11-28
CAN总线边沿时间标准是什么?

新能源汽车CAN总线与功率分析同步测试解决方案

CAN总线是新能源汽车中非常重要的通讯总线,工程师们常常通过CAN总线来读取车上的车速、转速、扭矩等信号,但你是否知道CAN总线也可以用来读取功率分析仪实际测试的功率信号呢?对于工程师来言未来的测试方法一定是趋于整体化、集成化。在新能源汽车中,需要测试的项目十分繁多,这里为大家介绍新能源汽车CAN总线、功率分析同步测试方案。  CAN总线可以读取新能源汽车中所有的CAN信号,再通过软件进行实时分析。而PA功率分析仪是用来测试电信号的,两者的数据并不通用,那如何解决同步测试的问题呢?  一、功率分析仪CAN口输出  ZLG致远电子是国内唯一可以输出CAN总线技术和功率测试技术的企业,在PA功率分析仪的功能升级中使用CAN
发表于 2018-11-02
新能源汽车CAN总线与功率分析同步测试解决方案

技术干货:新能源汽车CAN总线与功率分析同步测试解决方案

CAN总线是新能源汽车中非常重要的通讯总线,工程师们常常通过CAN总线来读取车上的车速、转速、扭矩等信号,但你是否知道CAN总线也可以用来读取功率分析仪实际测试的功率信号呢?     对于工程师来言未来的测试方法一定是趋于整体化、集成化。在新能源汽车中,需要测试的项目十分繁多,这里为大家介绍新能源汽车CAN总线、功率分析同步测试方案。    CAN总线可以读取新能源汽车中所有的CAN信号,再通过软件进行实时分析。而PA功率分析仪是用来测试电信号的,两者的数据并不通用,那如何解决同步测试的问题呢? 一、功率分析仪CAN口输出 ZLG致远电子
发表于 2018-11-01
技术干货:新能源汽车CAN总线与功率分析同步测试解决方案

基于C8051F040单片机的CAN总线通信

;      for(i=0;i<4;i++)        rdata[i].tempval=CAN0DAT;//接收数据    isnewdata=1; }  最后现象:单片机发送成功,PC端能成功接收发送的数据。而单片机接收CAN总线数据时异常。TJA1050芯片的RXD引脚能检测到电压变化,而单片机Status Register寄存器中RxOk位为‘1’,但没有产生接收中断,接收消息对象中的数据也未改变。    其中0x02为发送消息对象,0x04为接收消息对象。    CAN
发表于 2018-09-09

CAN总线:汽车电子的核心部分

汽车电子产业正在南京悄然兴起。十四所与南汽合资成立了南京天擎汽车电子公司;北方信息产业集团也将汽车电子作为未来发展的战略重点,这两家企业都把汽车电子的核心部分——CAN总线作为发展方向。据介绍,CAN总线是把汽车上各种各样电子部件的数据相连接的传输系统。汽车电子一般占到整车成本的20%—30%,而在高档轿车上,这一比例更提高到了70%左右。目前,国内汽车所使用的汽车电子基本依赖进口,市场份额达数千亿元。我市的十四所等企业凭借原有的电子研发优势,高起点进入汽车电子研发制造领域,正将我市的汽车零部件产业链带向技术的高端。这一步走在了国内同行的前面。MG名爵汽车将装备南京自主研发的汽车电子产品十四所是南京市汽车电子产业的“探路
发表于 2018-09-05
CAN总线:汽车电子的核心部分

STM32的CAN总线学习总结

1、首先通读手册中关于CAN的文档,必须精读。STM32F10xxx 参考手册Rev7V3.pdf需要精读的部分为 RCC 和 CAN 两个章节。为什么需要精读 RCC 呢?因为我们将学习 CAN 的波特率的设置,将要使用到 RCC 部分的设置,因此推荐大家先复习下这部分中的几个时钟。 关于STM32的can总线简单介绍bxCAN是基本扩展CAN(Basic Extended CAN)的缩写,它支持CAN协议2.0A和2.0B。它的设计目标是,以最小的CPU负荷来高效处理大量收到的报文。它也支持报文发送的优先级
发表于 2018-09-02

小广播

何立民专栏

单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
pt type="text/javascript" src="//v3.jiathis.com/code/jia.js?uid=2113614" charset="utf-8">