基于μCOS-II的CAN通讯模块设计

发布者:数字思维最新更新时间:2018-02-09 来源: eefocus关键字:μCOS-II  CAN  通讯模块 手机看文章 扫描二维码
随时随地手机看文章

    在系统越来越复杂,功能越来越强大的今天,嵌入式系统的设计中采用实时多任务操作系统已经成为嵌入式应用设计的主流。μCOS-II是一个开源嵌入式实时操作系统(Real Time Operating System, RTOS),它已经被成功移植到各种CPU上。但是基于μCOS-II的应用软件需要在移植操作系统后自行完成。模块化的应用程序设计可以使得嵌入式设计变得更加方便,产品的开发更加迅速。S3C44B0是三星公司生产的一种ARM7芯片,性能强大,在通用嵌入式设计中运用广泛。CAN总线(Control Area Network)是一种有效支持分布式控制和实时控制的现场总线,由于其高性能和高可靠性,CAN总线的应用范围广布过程工业、机器人和机械工业等领域。论文将μCOS-II移植到S3C44B0上,设计开发了基于μCOS-II的CAN通讯模块,与传统的前后台形式的系统相比较,CAN总线在μCOS- II下运行,实时性更容易得到保证,更容易进行功能扩展。

    1 S3C44BO简介

    S3C44B0是三星公司设计的16/32位RISC处理器,为手持设备等提供一个低成本高性能的方案。S3C44B0提供2.5V ARM7TDMI内核,最高时钟频率66MHz,总线寻址空间达到256M,采用中断矢量表来减少中断延迟,提供30个中断源,支持C语言编程和多任务处理,具有丰富的片内资源:LCD控制器、2路UART、2路DMA、外部存储器控制器、5路带PWM输出的定时器、看门狗、RTC、8路10bit ADC、IIC接口、IIS接口、SIO等等。

    2 SJA1000和82C250简介

    SJA1000是一种独立CAN控制器,它是PHILIPS公司的PCA82C200 CAN控制器的替代产品。SJA1000具有BasiCCAN和PeliCAN两种工作方式,PeliCAN工作方式支持具有很多新特性的CAN2.0B 协议。SJA1000同时支持11位和29位识别码,位速率最快可达1Mbits/s,时钟频率最高为24MHz,支持PeliCAN模式的扩展功能,如支持一些错误分析功能,支持系统诊断、系统维护、系统优化等。

    82C250是PHILIPS公司生产的CAN总线收发器,提供对总线的差动发送和差动接收功能,另外还具有电流限制电路,提供了对总线的进一步保护功能。

    3μCOS-II在S3C44B0上的移植

    μCOS-II (micro-controller OS II)是一种开放式的操作系统内核,它是专为微控制器系统和软件开发而设计的占先式的实时多任务操作系统微内核。μCOS-II是一个源码公开、可移植、可固化、可剪裁、具可剥夺性、可确定性的实时多任务操作系统。它的绝大部分代码是用ANSI C语言编写的,只有和处理器相关的不到200行代码是用汇编语言编写,因此可移植性很好,比较容易移植到各种体系的CPU上面。本文中将μCOS-II移植到S3C44B0上面运行,该移植工作主要是三个文件的修改工作:

    改头文件OS_CPU.H相关内容,包括:数据类型定义、堆栈增长方向、中断相关的一些宏定义等。

    在OS_CPU_C.C中编写任务堆栈初始化函数及系统HOOK函数。

    在OS_CPU_A.ASM中编写四个汇编语言函数:OSSstartHighRdy()、OSCtxSw()、OSINTCtxSw()和OSTickISR()。

    完成上述工作后,μCOS-II就可以运行在S3C44B0处理器上了。

    4 CAN总线智能节点的软硬件结构

    CAN总线是现场总线的一种,它结构简单,通信方式灵活,采用非破坏性仲裁技术,通信采用短帧格式,从而可以形成低成本,高性能,实时性好的通讯系统。

    4.1 CAN总线智能节点的硬件结构

    用S3C44B0和SJA1000来实现CAN总线节点时,SJA1000采用地址数据复用的数据传输方式,而S3C44B0却采用分开的地址总线与数据总线,因此,不能像51系列单片机和SJA-1000那样直接相连,而必须另想办法。将发送的地址和数据都从数据总线上发出,而用IO口和 nGCSx, nOE, nWE等信号来形成ALE信号和读、写、片选信号接到SJA1000,这样就可以完成S3C44B0和SJA1000的连接,在硬件上形成CAN总线节点,同时为了保证信号不互相干扰,采用光耦6N137来进行隔离。另外,S3C44B0的3.3V信号和SJA1000的5V信号之间需要进行电平转换

   18.jpg

    4.2 CAN总线智能节点的软件结构

    采用BasicCAN模式,RX和TX缓冲器各是10个字节长,其中两个ID字节和最多8个数据字节。其中ID字节1是8个ID位,ID字节2是3 个ID位,1个远程发送请求位和4个数据长度代码位。11位的ID能够建立2032种报文类型,足够普通应用的需求。ID位的规定可根据实际需要自行定义。

    发送报文时调用CAN发送函数U8 BCAN_DATA_WRITE(U8 *SendDataBuf),其中*SendDataBuf指向要发的内容。在这个函数里,将报文内容按CAN接受缓冲器规定的格式填入,然后调用命令函数U8 BCAN_CMD_PRG(U8 cmd),其中cmd参数决定命令类型,选用发送数据命令将报文发送出去。

    接收报文时调用CAN接收函数U8 BCAN_DATA_RECEIVE(U8 *RcvDataBuf),其中*RcvDataBuf是报文的存储地址。在这个函数里,读取接收缓冲区里的数据,并存到指定的位置。

    这两个函数只是发送与接收函数,具体的发送和接收需要建立相应的任务或中断,并调用这两个函数来完成。其中发送采用主动方式,当发送任务接到启动发送的指令后调用CAN发送函数进行数据发送,接收采用中断方式,CAN中断的优先级高于时钟中断和其他任务。

    节点通信流程图如图2所示:

    5 基于μCOS-II的CAN总线通讯程序模块的设计

    传统的前后台方式设计的单片机程序是一个无限循环,循环中调用相应函数来完成相应操作是其后台行为,而中断服务程序处    19.jpg



    理异步事件是其前台行为。μCOS-II是一个实时多任务操作系统,是一个基于占先式内核的多任务调度平台。作为一个模块的CAN总线程序,在嵌入 μCOS-II之中,相对于前后台方式而言,CPU的运行时间被μCOS-II依据调度算法按照不同的优先级分配给不同的任务模块,各个任务程序在自己的运行时间内访问CPU,这样CAN总线的实时性更容易得到保证,同时各任务相对独立,相互影响小,也便于对程序的调试,更重要的是如果要实现更为复杂的通讯协议时不用改变原有的程序结构,只需增加扩展部分的程序就可以进行功能扩展。

    本文中CAN总线如上所述采用主动方式发送和采用中断方式接收数据,CAN中断优先级高于其他任务的优先级。本文中数据发送建立一个独立任务,它拥有自己的堆栈空间,可以被其他的任务和中断服务子程序挂起或删除。这个任务分配128个OS_STK的堆栈空间,在μCOS-II中OS_STK被定义为一个字长。

    系统建立了两个任务(不包括统计和空闲任务):起始任务Main_Task和发送任务CANSENDDATA_Task,优先级分别为10,12。在CAN控制器初始化和OS初始化后,建立起始任务Main_Task,OS开始运行,进入起始任务Main_Task,起始任务启动时间节拍,并创建发送任务,然后进入挂起。发送任务进入运行态,当发送数据完成后,发送任务挂起。


    两个任务在各自的延时结束后按照优先级先后进入运行态,若都在挂起状态则系统的空闲任务进入运行。此过程中如果有接收中断发生,则中断服务将挂起正在运行的任务,并调用CAN数据接收函数,完成数据的接收,当此过程结束后恢复现场,继续进行高优先级的任务。图3是CAN通信模块在μCOS-II中运行的系统结构框图:
 

   20.jpg

    本文利用上述思想所设计的CAN总线智能节点与ZLG USBCAN-1型CAN总线开发设备互相通信正常,从图4可以看到数据接收和发送的顺利进行。       

    结束语

    在S3C44B0上运行的μCOS-II中实现CAN总线智能节点,能够克服传统前后台编程方法的弊端,并且提供模块化、可移植性好、高实时性、易扩展的通信模块,能够大大减少产品的开发时间。

    本文作者创新点:

    一: 建立了S3C44B0和SJA1000的连接,使这两种常用芯片得以配合使用。

    二: 建立起基于S3C44B0和μCOS-II的CAN总线智能节点模块,为以后在μCOS-II操作系统中的CAN总线应用打下了基础。

    参考文献
[1] 邬宽明. CAN总线原理与应用系统设计[M]. 北京航空航天大学出版社. 1996.
[2] Jean J. Labrosse 著. 邵贝贝等译. μCOS-II嵌入式实时操作系统[M]. 北京航空航天大学出版社. 2003.
[3]  黄元峰,李育清,姜生元.基于μC/OS的嵌入式系统应用开发研究[J].微计算机信息(嵌入式与SOC),2006年第22卷第2-2期:100-102。


关键字:μCOS-II  CAN  通讯模块 引用地址:基于μCOS-II的CAN通讯模块设计

上一篇:基于ARM的Linux系统移植的方法
下一篇:基于ARM9和μC/OS-II操作系统的SD卡文件系统的设计与

推荐阅读最新更新时间:2024-03-16 15:54

用LPC2119芯片CAN总线和DSl8B20设计的智能超声液位变送器
0 引言 现场总线是用于现场仪表与控制系统和控制室之间的一种全分散、全数字化、智能、双向、互连、多变量、多点、多站的通信网络。CAN(Controller Area Network,控制器局域网)是德国Bosch公司在80年代初为解决现代汽车中大量的控制与测试仪器之间的数据交换而提出的一种串行数据通信协议。CAN总线是国际上应用最广泛的现场总线之一,由于采用了许多新技术以及独特的设计,与一般的通信总线相比,CAN总线的数据通信具有突出的性能,且可靠性、实时性和灵活性强。 近些年来,随着超声技术研究的不断深入,再加上其具有的高精度、无损、非接触等优点,超声的应用变得越来越普及。超声波液位测量有许多优点:检测元件可以不与被测介质接
[单片机]
用LPC2119芯片<font color='red'>CAN</font>总线和DSl8B20设计的智能超声液位变送器
CAN分析仪与USBCAN连接错误原因有哪些呢?
①驱动安装失误 解决方法:检查CAN分析仪状态,将CAN分析仪链接到电脑上,假如驱动安装正确,则USB灯亮绿灯;如果安装错误则亮红灯,根据企业提供的不同接口系列在各个OS操作系统的驱动文件不动,需要安装相对应的正确驱动;根据顾客电脑系统是32/64位操作系统,Windows/Linux/Intime等OS选择相应的驱动文件。 ②USB接口松动 解决方法:重新拔插USB口,再次检查USB状态灯,灯亮表示安装成功,灯灭表示未连接成功。 ③设备型号选择错误 解决方法:来可针对不同的场景需求开发出不同种类的接口CAN卡,用户请根据产品的具体型号在打开设备列表中选择正确相对应的型号。
[测试测量]
<font color='red'>CAN</font>分析仪与USB<font color='red'>CAN</font>连接错误原因有哪些呢?
CAN总线接口电路原理及设计注意事项
  CAN 总线是一种有效支持分布式控制和实时控制的串行通信网络,以其高性能和高可靠性在自动控制领域得到了广泛的应用。为提高系统的驱动能力,增大通信距离,实际应用中多采用 Philips 公司的 82C250 作为CAN控制器与物理总线间的接口,即CAN收发器,以增强对总线的差动发送能力和对CAN控制器的差动接收能力。为进一步增强抗干扰能力,往往在CAN 控制器与收发器之间设置光电隔离电路。典型的CAN总线接口电路原理如图1所示。   图1   典型的CAN总线接口电路原理图 1 接口电路设计中的关键问题 1.1 光电隔离电路   光电隔离电路虽然能增强系统的抗干扰能力,但也会增加CAN总线有效回路信号的传输延迟时
[嵌入式]
WindowsCE.Net下CAN卡的驱动程序设计
摘要:主要讨论在WinCE设计和开发CAN卡通信程序的方法;详细介绍CAN卡底层驱动函数的设计和实现,同时将驱动进行封装,用动态库的方式提供给用户CAN卡通信用的驱动,使用启可以方便地在自己的程序中调用,实现WinCE下的CAN卡通信。 关键词:WinCE.NET CAN 驱动 引言 近年来电力行业为了快速部署变电站,采用了建造整体变电所的方法:在生产基地将变电站的内部设备安装、调试完成,只留下与外界的接口,整体运到变电站所在地后进行安装和简单调试即可投入运行。其内部设备通过CAN总线进行通信,系统原有的监控软件基于DOS系统,维护调试比较困难,因此想要寻求更方便、友好的系统支持。经过比较,嵌入式操作系统市场上风头正劲的Wi
[应用]
STM32 CAN应用-过滤器设置
在使用STM32的CAN控制器进行数据收发,当用到位屏蔽模式的时候,就要设置过滤器了,这个关系到是否能够接收到想要的数据。下面针对几种不同情况对CAN过滤器(Filter)进行设置。 CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; //标示符屏蔽模式 CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; 1、对扩展数据帧进行过滤:(只接收扩展数据帧) CAN_FilterInitStructure.CAN_FilterIdHigh =(EXT_ID 13)
[单片机]
基于P87C591的CAN总线信号采集节点的设计
  介绍了CAN总线和P87C591单片机的特点,给出了基于P87C591单片机的信号采集节点的软、硬件设计,指出了硬件电路设计中应注意的问题,在软件设计中重点介绍了节点初始化、报文发送和报文接收等子程序。   1 引言   在工程机械液压系统状态监测与故障诊断中,传感器信号的调理、采集和信号的特征提取,以及把采集的数据发送给主机(中心处理单元)要由信号采集单元实现。本文介绍了基于P87C591的CAN总线系统信号采集节点的设计。   CAN是1986年2月在SAE (汽车工程人员协会)大会上, 由Rober Bosch公司提出的新总线系统,称之为“汽车串行控制局域网”(Automotive Se.rial Controll
[单片机]
基于P87C591的<font color='red'>CAN</font>总线信号采集节点的设计
CAN总线转换器设计与应用
CAN总线协议的诞生原本就是汽车电子生产厂商的发起,后来CAN协议成为国际标准,CAN总线与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。 同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,例如在工业自动控制、安防/消防网络、煤矿远程通讯及等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。 CAN转换器(CAN-232)可以无缝地联接CAN-bus网络和其它通讯网络,比如RS-232、RS-485串行总线、Ethernet以太网、光纤网路等,已经支持多种标准协议的网络互连。由于PC机无CAN
[嵌入式]
基于CAN总线的航空电缆测试系统分布机研究
0 引言 航空电缆是飞机的神经系统,连接着飞机电气、航电、火控、操纵等各系统,为飞机各部件提供动力电源、控制信号和数据信息。受飞机机身空间的限制,电缆系统布线一般都集中于狭小的机壁内,飞机机壁内几乎遍布导线,因此航空电缆系统要求高可靠、高集成、高轻便;由于导线种类繁多,各类电源线、高低频信号线、数据线混杂在一起,长度可达数百公里,电气环境十分复杂,从而使其潜在故障增多,许多空难事故和飞行器故障都直接或间接与电缆系统故障有关,因此,航空电缆的“健康”是飞机安全运行的重要保障,电缆安全问题尤为重要。但是国内对于航空全机电缆测试技术的研发比较欠缺,远落后于国外已处于常规应用的现状。 根据飞机全机电缆分布距离长(近百米)、点数多(3
[测试测量]
基于<font color='red'>CAN</font>总线的航空电缆测试系统分布机研究
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved