在S3C44B0上的μCOS-II中实现CAN总线智能节点

发布时间:2023-02-03  

在系统越来越复杂,功能越来越强大的今天,嵌入式系统的设计中采用实时多任务操作系统已经成为嵌入式应用设计的主流。μ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信号之间需要进行电平转换。

在S3C44B0上的μCOS-II中实现CAN总线智能节点


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总线通讯程序模块的设计

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

在S3C44B0上的μCOS-II中实现CAN总线智能节点

理异步事件是其前台行为。μ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中运行的系统结构框图:
 

在S3C44B0上的μCOS-II中实现CAN总线智能节点

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


结束语

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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    ARM Linux S3C2440 之时钟分析;S3c2440 时钟 & 电源管理时钟由三部分组成:  Clock control ,USB control, 和 Power control......
    雷卯车载信息娱乐系统保护器件和方案;车载信息娱乐系统主要由三个部分组成:车辆接口处理器、应用处理器以及远程信息处理器。 车辆接口处理器: 主要负责电源管理 、网络、启动Appl i ca t i......
    。 由图1可知系统由三部分组成CAN网络,智能控制器和Internet。CAN网络就是通过CAN总线把家庭安防、远程抄表、环境调节、娱乐功能和家电控制等节点模块组成家庭局域网,以实......
    要时(例如马路转角有车辆驶出,或前方车辆突然紧急刹车,变换车道的情况发生)车内信号装置会以闪烁、语音提醒或座椅、方向盘振动等方式提醒驾驶员注意,采取必要安全措施,如图9所示。 DSRC系统结构主要由三部分组成......
    博联提供设备远程维护解决方案,通过物通博联穿透云·设备维护快线实现PLC远程上下载程序,节约成本并提高效率 物通博联设备维护快线由三部分组成:云端设备管理、现场端、工程师端 云端设备管理 每台......
    规范描述。 CAN2.0协议规范没有描述 CAN总线协议的应用层,所以,其应用层需要另行构建。 2.2 CAN总线节点 CAN总线节点由微处理器系统、CAN控制器、CAN总线收发器三部分组成CAN总线节点组成......
    更加复杂的系统级设计。 总之,STM32微控制器是一种非常实用的嵌入式处理器,它具有高性能、低功耗、低成本等优点,广泛应用于各种嵌入式系统中。 STM32微控制器的命名规则 STM32微控制器的命名规则通常由三部分组成......
    装置(节点)连接。 五、LVDS通讯技术 LVDS,为低电压差分信号(Low Voltage Differential Signaling),是一种低压差分高速信号标准。 LVDS 信号传输一般由三部分组成......
    pid调节器各部分的作用分别是什么;  pid调节器各部分的作用分别是什么   PID调节器主要由三部分组成,分别是比例(P)、积分(I)和微分(D)。   比例(P)部分:比例......
    式演进到域集中式EE架构,如下图1-3 图1-3 域控制器的组成 域控制器是每辆车的核心,它主要由域处理器、操作系统和应用软件以及算法三部分组成,依托于它的强大功能,将原本需要多颗ECU实现......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>