|
|
| | -文章搜索 - 最新文章 - | |
基于LPC2119和μC/OS-II的CAN中继器设计 |
| 发布时间:2005年3月20日 点击次数:526 |
| 来源:单片机与嵌入式系统应用 作者:上海大学 沈跃 王家鼎 |
摘要 基于提高CAN总线组网能力的考虑,提出一种新颖的CAN中继器设计方法;阐述以LPC2119控制器为核心的硬件设计方案;详细分析在μC/OS-II实时操作系统下的软件实现过程;针对中继器的实时性和安全性以及总线与总线之间可能存在的速度不匹配的问题,确立提升紧急任务优先级、建立相关事件标志、合理地对事件与任务进行同步的改进方法,从而有效地解决组网中最远传输距离和最大节电数限制的问题。 关键词 中继器 CAN LPC2119 μC/OS-II CAN总线的直接通信距离只有10 km左右,而且由于收发器驱动能力的限制,总线上最多只能挂110个节点,给系统组网带来一定的困难。CAN中继器就是为了解决这个问题而设计的。由于中继器具有数据转发功能,不仅可以扩大通信距离,还可以增加节点的最大数目。对CAN中继器初始化参数进行设置,可以在不同的网段内采用不同的通信速率,还可以对报文进行过滤,减轻总线负担。 1 CAN中继器的硬件设计 1.1 微控制器LPC2119简介 CAN中继器是以ARM微控制器LPC2119为核心的软硬件系统。LPC2119是Philips公司生产的一款基于支持实时仿真和跟踪的16/32位ARM7TDMISMCU,带有128 KB嵌入的高速Flash存储器。独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30 %,而性能的损失却很小。LPC2119内部集成2个CAN控制器。它的主要特性有:单个总线上的数据传输速率高达1 Mb/s;32位寄存器和RAM访问;兼容CAN 2.0B, ISO 118981规范;全局验收滤波器可以识别所有的11位和29位Rx标识符;验收滤波器为选择的标准标识符提供Full CANstyle自动接收。 1.2 LPC2119内部CAN控制器与SJA1000比较 LPC2119内部集成的CAN控制器与Philips公司的SJA1000 CAN控制器相比较大致相同,只是在验收滤波这一环略有不同,这为习惯SJA1000的开发人员采用LPC2119提供了方便。SJA1000验收滤波器由验收代码寄存器和验收屏蔽寄存器定义,要接收报文的位模式在验收代码寄存器中定义,相应的验收屏蔽寄存器允许定义某些位为“无关”,通过模式寄存器可以选择不同的过滤模式:单过滤模式和双过滤模式。而对LPC2119内部集成的CAN控制器,全局验收过滤器包含一个512×32(2 KB)的RAM,通过软件处理,可在RAM中存放1~5个标识符表格,整个RAM可容纳1024个标准标识符或512的扩展标识符或两种类型混合的标识符。同时有5个地址寄存器指向验收过滤器RAM的表格:Full CAN标准地址,标准单个地址,标准地址范围,扩展单个地址或扩展地址范围。当CAN控制器的接收端已接收到一个完整的标识符时,它将通知验收过滤器,验收过滤器响应这个信号,并读出控制器编号、标识符尺寸,以及来自控制器本身的标识符,然后通过验收过滤器搜索RAM中的表格,以决定接收或放弃这一帧信息。 1.3 CAN中继器硬件结构 中继器的硬件结构框图如图1所示。LPC2119分别通过CAN总线收发器与两路总线相连;总线驱动器采用带隔离的DC/DC模块单独供电,不仅实现了两路CAN接口之间的电器隔离,也实现了中继器与CAN总线的电器隔离。除此之外,还有LED显示和键盘接口。LED用于显示中继器的工作状态,键盘用来修正总线的波特率。最终程序的调试与跟踪通过JTAG调试口完成。
2 系统软件设计 2.1 引入μC/OSII实时操作系统 随着应用的复杂化,采用传统前后台设计方法,会显得过于复杂,实时性得不到保证,而且容易发生死锁。解决这些问题的最好方法就是采用实时操作系统。 μC/OSII完全是占先式的实时内核, 是基于优先级的, 即总是让就绪态中优先级最高的任务先运行, 因此实时性比非占先式的内核要好。 它包含了实时内核、任务管理、时间管理、任务间通信同步(信号量、邮箱、消息队列) 和内存管理等功能; 它的绝大部分代码是用C 语言编写的, 可移植性强, 可以在绝大多数8 位、16 位、32 位以至64 位微处理器、微控制器、数字信号处理器(DSP) 上运行。 CAN中继器对系统的实时性和可靠性要求比较高。采用μC/OSII实时操作系统可以有效地对任务进行调度;对各任务赋予不同的优先级可以保证任务及时响应,而且采用实时操作系统,降低了程序的复杂度,方便程序的开发。 2.2 软件设计中需考虑的问题 (1) 使用代码的容量 (2) 实时性和安全性 2.3 系统设计实现 嵌入式CAN中继器主要实现两路CAN总线数据之间相互转发,并且可以根据实际需要,改变某一路CAN控制器的波特率。采用μC/OSII实时操作系统,整个设计由操作系统和一系列用户应用程序构成。 主函数是程序首先执行的一个函数。该函数永远不会返回,主要实现系统的硬件和操作系统的初始化。硬件包括中断、键盘、显示等初始化;操作系统包括任务控制快和事件控制快的初始化,而且在启动多任务调度之前,必须至少创建一个任务。在此系统中创建了一个启动任务,主要负责时钟的初始化和启动,中断的启动,CAN控制器的初始化及启动及任务的划分等。在交出CPU的使用权之后,只做一些空闲处理。 (1) 任务的划分 表1 任务划分表 (2) 任务的同步与调度
各个任务具有不同的优先级,通过调用系统挂起函数或延时函数,可以启动具有更高优先级的进入就绪态的任务。在嵌入式CAN中继器的设计中,通过对延时参数的设置,系统每隔一定的时钟节拍,就启动接收队列监视任务,定期扫描环形缓冲区。一旦发现读指针与写指针不相等时,就将环形缓冲区中新接收到的数据存入TEMPBUF中,同时发送信号量SendSem。数据转发任务接收到信号量,启动运行,完成数据转发功能。 数据转发任务如下: void CANDATA_ExchangeTask(void *pdata) 同样,其他模块功能——波特率的设置、系统的监控、信息的显示等,也是通过任务间的通信—信号量的传递来实现的,以此来保证时间与任务的同步。 结语 μC/OS-II实时操作系统在嵌入式硬件平台的基础上,用μC/OS-II实时操作系统开发应用程序有其独到之处,用户可以直接利用系统的接口函数编写自己的应用程序,不需另行开发,大大方便了用户编程,缩短了软件的开发周期,提高了开发效率。基于μC/OS-II和LPC2119的CAN中继器,在实验调试过程中,运行状况良好,工作稳定。 参考文献 1 Labrosses Jean J. 嵌入式实时操作系统μC/OSII. 邵贝贝等译. 北京:北京航天航空大学出版社,2003 沈跃 研究生,研究方向为计算机网络控制与嵌入式系统。 |
|
|
|
|
[嵌入式系统] 相关文章: 嵌入式网络监控系统设计方案简介:
摘 要:本文介绍了一种适合于工业场合、基于客户机/服务器模型的嵌入式网络监控系统的设计。服务器采用32位的Freescale ColdFire系列MCF5272为CPU,以mClinux为操作系统,客户机可以是网络上任何装有客户机软件的PC机,系统中的监控界面由客户端设计,可以通过升级客户机软件来满足新的监控任务。该系统的通用性和灵活性强,利于用户的二次开发。 关键词:嵌入式; 客户机/服务器;网络监控;PLC;二次开发 引言 目前,嵌入式网络监控系统以其本身体积小、功能多、支持以太网技术等优点,已成为工控领域中的新热点。网络...... 基于S1C33L11的JPEG图像实时显示和数据传送系统的设计
基于EP7211构建通用嵌入式处理平台
嵌入式多媒体系统的优化权衡
基于SOPC技术的事故现场处理平台设计与实现
VxWorks实时操作系统下MPC8260ATM驱动的实现
基于Fuzzy-PID的陀螺仪温度控制系统设计
一个点到点的邮件系统设计
自上而下直到物理实现的DSP设计流程
可支持电阻温度检测器的高精度接口 |
|
|
|