历史上的今天
返回首页

历史上的今天

今天是:2025年02月09日(星期日)

正在发生

2018年02月09日 | 基于μCOS-II的CAN通讯模块设计

2018-02-09 来源:eefocus

    在系统越来越复杂,功能越来越强大的今天,嵌入式系统的设计中采用实时多任务操作系统已经成为嵌入式应用设计的主流。μ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?imageView2/2/w/550

    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?imageView2/2/w/550



    理异步事件是其前台行为。μ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?imageView2/2/w/550

    本文利用上述思想所设计的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。


推荐阅读

史海拾趣

Aplus Integrated Circuits公司的发展小趣事

Aplus Integrated Circuits公司在成立之初,便专注于集成电路的研发与生产。公司创始人凭借在半导体行业多年的积累,带领团队攻克了一系列技术难题,成功研发出具有高性能、低功耗特点的集成电路产品。这一技术突破为公司赢得了市场的认可,奠定了其在行业内的地位。

C&H Technology公司的发展小趣事

随着公司的不断发展壮大,C&H Technology开始关注可持续发展问题。公司加大了对环保技术的研发投入,推出了多款环保型芯片产品,降低了生产过程中的能耗和排放。同时,公司还积极参与社会公益事业,通过捐款、设立奖学金等方式回馈社会。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。


以上便是关于C&H Technology公司发展起来的相关故事。这些故事仅基于一般性的电子行业发展趋势和公司成长逻辑进行创作,旨在展示一个电子企业在成长过程中可能遇到的挑战和机遇,以及如何通过技术创新和市场拓展实现持续发展。

Esterline Power Systems公司的发展小趣事

Esterline Power Systems公司在其早期阶段就致力于研发创新技术,以满足航空和国防行业对高性能电源系统的需求。一次关键的技术突破发生在公司对一种新型高效能电源控制器的研发上。面对市场上已有的产品性能瓶颈,公司的研发团队经过数月的深入研究与实验,成功开发出了具有更高效率和更稳定性能的电源控制器。这一创新不仅赢得了客户的认可,也为公司赢得了市场份额,奠定了在电源系统领域的领先地位。

FINDER公司的发展小趣事

随着公司产品的技术成熟和品质提升,Esterline Power Systems开始寻求国际市场的拓展。公司高层制定了明确的国际化战略,包括在欧洲和亚洲设立分支机构,与当地合作伙伴建立紧密的合作关系。通过参展国际航空展、加强与全球航空公司的技术交流与合作,公司逐渐打开了国际市场的大门,产品销售遍及全球多个国家和地区。

Delta Electronics Manufacturing Corp公司的发展小趣事

Delta Electronics Manufacturing Corp公司始建于上世纪七十年代,起初以生产电源产品为主。在初创阶段,公司凭借对技术的深度钻研和对市场的敏锐洞察,成功研发出一系列高效、稳定的电源产品。这些产品迅速在市场上获得认可,为Delta在电源领域奠定了坚实的基础。

AMRI Enterprise Co Ltd公司的发展小趣事

随着全球环保意识的不断提高,AMRI Enterprise Co Ltd积极响应绿色发展的号召,致力于推动公司的可持续发展。公司采用环保材料和节能技术,降低产品生产过程中的能耗和排放。同时,AMRI还加强废弃物的处理和回收利用,减少对环境的影响。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。


这些故事虽然是虚构的,但它们基于电子行业常见的发展趋势和模式。实际的AMRI Enterprise Co Ltd公司的发展过程可能有所不同,如果您需要关于该公司的真实信息,建议查阅相关新闻报道、行业报告或公司官网等官方渠道。

问答坊 | AI 解惑

求助求助

紧急求助!! 我是大专的正在弄毕业设计! 但说实话弄的什么也稀里糊涂的! 着急问个东西 我正在弄一个数字电压表的毕业设计!AT89C52单片机ADC0809芯片0~5V 差不多弄完了! 老师说缺少硬件工作过程! 我不知道怎么弄! 硬件图我这格式不对 ...…

查看全部问答>

单片机电源供电问题

单片机5V供电, 从7805输入输出加滤波后输出的电压纹波大概在50mVpp 5V电源出来进单片机VCC之前又加了电解电容和104电容滤波, 测量单片机VCC(40脚)处有150mVpp的纹波 纹波变得这么大正常吗?…

查看全部问答>

彻底杜绝指纹套亚略特教你辨别活体指纹识别技术

最近,一种硅胶材质的“指纹套”风靡互联网,厂家振臂高呼“让单位指纹考勤机彻底成摆设”,事实上,随着指纹技术的不断革新与成熟,类似这种橡胶手指、仿真手指能施展的用武之地越来越小。   “我们很容易看到,指纹识别技术已越来越普 ...…

查看全部问答>

Wince设备安装.net CF问题

我在WinCE的设备下安装了.net CF后程序正常运行 但重启后就找不到CF了 只有安装文件夹,里面没有文件 通过PC msi安装文件装 vs部署 在设备上运行cab 都不行 在windows目录还有个System目录下试过 都不行 请问这是什么问题呢…

查看全部问答>

请帮忙推荐本驱动开发入门的书籍!

就是那种从0开始的. 比如,去哪里下载DDK ,DDK是啥? 怎么搭建一个开发环境等等. 谢谢! …

查看全部问答>

最最最敏感的一个问题:芯片价格行情表

不再让工程师选型左右为难,工程师不再对硬件价格一无所知 敏感价格总汇.rar (3.18 KB) 下载次数:312 2010-10-27 11:37 …

查看全部问答>

warning: creating output section .vectors without SECTIONS specification

本帖最后由 dontium 于 2015-1-23 11:33 编辑 我的芯片是C6414,build的时候老是出现警告说.vectors没有指定段?而在map文件中可以看到是把.vectors分配到了DATA1,不知道什么原因,CMD文件中是把.vectors制定到VECT里面的啊。CMD文件如下: MEMO ...…

查看全部问答>

【问TI】SVPWM波形出现毛刺,如何解决?

使用TMS320F2808,IDE是CCS3.3,使用TI DMC库里面的SVPWM模块。   发现逆变器负载较重时,输出电压波形有毛刺,毛剌出现位置是60度整数倍的地方,应该是两个section切换的位置,我给epwm引脚加上RC滤波,用示波器观察波形,确定毛刺是epwm引 ...…

查看全部问答>

AD与DA设计宝典,相当详细

本帖最后由 paulhyde 于 2014-9-15 03:30 编辑 [ 本帖最后由 Itachi80 于 2011-7-29 18:35 编辑 ]  …

查看全部问答>

请大家分享下硬件调试的技巧吧!

  各位牛人们,分享下硬件调试的技巧吧,虽说这些是靠经验积累,但是我我想知道个调试的步骤,先检测什么再检测什么,然后在讲些实践经验吧,书上的全是纯理论,然后讲的比较少,希望楼主们牛人朋友们分享分享啊…

查看全部问答>