DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 838|回复: 0
打印 上一主题 下一主题

[接口电路] 基于CAN总线的87C196CA单片机串行通讯的应用

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 14:02:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                      摘要: 本文介绍了基于CAN 总线的由87C196CA 单片机构成的多微控制器系统串行通讯的实现。该系统具有通信速率高、工作可靠、网络连接方便、现场抗干扰能力强等优点。

  关键词: CAN 总线;串行通讯;单片机;现场总线

1  前言

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

2  硬件构成

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



图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 总线技术,使电路设计简化、紧凑、极大地提高了系统的可靠性、实时性,系统抗干扰性能强,成本较低,性能安装比高、安装维护简洁方便,更适于车辆控制、工厂自动化控制、电梯控制、医疗设备等,具有非常广阔的应用前景。?


            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-12 19:59 , 耗时 0.083452 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表