基于LPC2119和μC/OSII的CAN中继器设计

[09-12 17:54:58]   来源:http://www.88dzw.com  单片机学习   阅读:8781

文章摘要:基于LPC2119和μC/OSII的CAN中继器设计 作者:沈跃 王家鼎 引 言CAN总线的直接通信距离只有10 km左右,而且由于收发器驱动能力的限制,总线上最多只能挂110个节点,给系统组网带来一定的困难。CAN中继器就是为了解决这个问题而设计的。由于中继器具有数据转发功能,不仅可以扩大通信距离,还可以增加节点的最大数目。对CAN中继器初始化参数进行设置,可以在不同的网段内采用不同的通信速率,还可以对报文进行过滤,减轻总线负担。1 CAN中继器的硬件设计1.1 微控制器LPC2119简介CAN中继器是以ARM微控制器LPC2119为核心的软硬件系统。LPC2119是Philips公

基于LPC2119和μC/OSII的CAN中继器设计,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com
基于LPC2119和μC/OSII的CAN中继器设计 作者:沈跃 王家鼎

引 言

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) 使用代码的容量

在前/后台系统的设计中,对存储器容量的需求仅仅取决于应用程序代码,而使用RTOS的情况则很不一样。RTOS 内核本身需要额外的代码空间。

总代码量=应用程序代码+内核代码

每个任务都是独立运行的,必须给每个任务提供单独的栈空间(RAM)。在决定分配给每个任务多少栈空间时,应该尽可能使之接近实际的需求量。栈空间的大小不仅要计算任务本身的需求(局部变量、函数调用等) ,还需要计算最多中断嵌套层数(保存寄存器、中断服务程序中的局部变量等)。内核的另一个应该具有的特性是,每个任务所需的栈空间大小可以分别定义。所有内核都需要额外的栈空间,以保证内部变量、数据结构、队列等。如果内核支持中断用栈分离,则总的RAM需求量的表达式为:RAM总需求=应用程序RAM 需求+内核数据区RAM需求+各任务栈需求的总和+最多中断嵌套栈需求。

[1] [2]  下一页


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习

《基于LPC2119和μC/OSII的CAN中继器设计》相关文章

分类导航
最新更新
热门排行