新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > μC/OSII的CAN驱动程序设计

μC/OSII的CAN驱动程序设计

作者:时间:2010-11-25来源:网络收藏

摘要: 是衡量CAN现场总线系统性能的一个重要标准。本文提出一种采用μC/OSII操作系统和ICAN协议,在应用层面上提高系统设计方案,并以分层的方式逐层阐述CAN的设计过程。

本文引用地址:http://www.eepw.com.cn/article/156922.htm

关键词: ; μC/OSII;

CAN Driver Design Based on μC/OSII※
Cheng Jin,Shi Guoliang
(College of Electronic and Information,Soochow University,Suzhou 215006,China)
Abstract: Realtime performance is an important measuring standard for the performance of CAN field bus system. A CAN driver design is proposed to improve the realtime performance of CAN bus system at the application level by using μC/OSII and ICAN protocol. The design process of CAN driver is introduced by a layered approach.
Key words: CAN bus; μC/OSII; realtime performance; driver

引言

  是德国Bosch公司于1983年针对汽车应用而开发的,一种能有效支持分布式控制和实时控制的串行网络,属于现场总线的范畴。其距离与波特率有关,最大距离可达10 km,最大通信波特率可达1 Mbps。CAN总线仲裁采用11位(CAN2.0A协议)和29位(CAN2.0B协议)标志,以及非破坏性仲裁总线结构机制,可以确定数据块的优先级,保证在网络节点冲突时最高优先级节点不需要冲突等待。CAN总线上的任何节点均可在任意时刻,主动向网络上其他节点发送信息而不分主次,从而实现各节点之间的自由通信。目前,CAN总线协议已被国际标准化组织认证,技术比较成熟,已广泛应用于汽车、工业、高速网络和低价位多路连线等领域中。

  μC/OSII是Jean J.Labrosse开发的一种小型嵌入式操作系统。它实质上是基于优先级的可剥夺型内核,系统中的所有任务都有一个唯一的优先级别,适合应用于实时性要求较强的场合。本文采用μC/OSII来设计CAN的驱动程序,以满足系统的实时要求。

1 CAN节点的硬件设计

按此在新窗口浏览图片
图1 CAN节点基本结构

  CAN节点是分布在CAN网络中进行相互通信的基本单元,主要由主控制器、CAN控制器和CAN收发器组成。本设计中,节点的基本结构如图1所示。在CAN网络中,ECU(Electronic Control Unit)是指一个具有完整功能的CAN节点。

  采用NXP公司的LPC2368作为CAN节点的主控制器。LPC2368是一款基于ARM7TDMIS内核的RISC处理器,包含2个兼容CAN2.0B规范的CAN控制器。每个CAN控制器拥有双重接收缓冲器和三态发送缓冲器,具有快速的硬件实现的搜索算法,可以支持大量的CAN标识符。

  LPC2368是一款3.3 V器件,虽然其对应的CAN收发器接口引脚能够承受5 V电压,但为了让CAN节点能够更稳定地运行,这里采用TI公司的3.3 V CAN收发器SN65HVD230D与之配合使用。凭借高输入阻抗特性,SN65HVD230D可以在一条总线上支持多达120个CAN节点,并且能够和5 V的CAN收发器良好地兼容。本文重点介绍CAN驱动程序的设计方法。

2 CAN驱动程序设计总体思想

按此在新窗口浏览图片
图2 驱动程序分层结构

  为了使软件可移植性强、易于维护,采用分层的方法编写CAN驱动程序。驱动程序分层结构如图2所示。图中,双向箭头表示实时操作系统μC/OSII与CAN驱动程序之间的数据交换,单向箭头表示上层软件对下层软件的调用。

3 CAN设备控制层和CAN接口控制层

  CAN设备控制层的主要任务是:初始化主控制器与CAN控制器之间的连接配置,复位CAN控制器,建立主控制器和CAN控制器之间的通信函数。由于LPC2368内部集成了CAN控制器,CPU可以通过内部APB总线接口对CAN控制器的所有寄存器进行访问,所以不再需要编写设备控制驱动层程序,已经完全由硬件实现了。

  CAN接口控制层主要任务是:实现CAN控制器的各种功能,如设置控制模式、发送数据、释放接收缓冲区、配置验收滤波器等。这些操作都是通过读写CAN控制器的内部相关寄存器来实现的。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭