基于S3C2410的CAN总线通信设计与开发

发布者:科技创造者最新更新时间:2013-02-27 来源: 21IC 关键字:S3C2410  CAN  总线通信 手机看文章 扫描二维码
随时随地手机看文章
1 引言

网络化控制系统是控制系统的发展趋势和研究热点,现场总线控制系统作为网络化系统的重要组成部分,近年来在实际的控制系统中得到了广泛的应用。CAN(Con- troller Area Network)总线作为一种容错性强、可靠性高、布线简单且成本低廉的现场总线倍受用户钦睐,在国内CAN总线已经得到了广泛应用。目前国内广泛应用的独立CAN控制器SJA1000因存在如地址、数据总线的分时复用常导致接口效率低下;接收、发送缓冲区的个数太少,导致数据吞吐率不高;帧屏蔽和过滤器的设置不够灵活,不能满足同时需要更多屏蔽和过滤条件的要求等。

ARM芯片S3C2410是一种高集成度,高性价比的嵌入式处理芯片,已成功用于工控设备上。然而其美中不足的是没有集成CAN控制器,使其在工控产品中的应用中受到了一定的阻碍。为了解决这一问题,同时考虑到尽可能降低硬件电路的复杂性,保证CAN总线通讯的稳定性和效率,采用带SPI接口的独立CAN控制器MCP2515来给S3C2410扩展CAN接口。下面以自行开发的人机界面(HMI,Human Machine Interface)中CAN总线通讯接口设计为例进行说明。

2 CAN总线接口硬件设计

下面先简要介绍相关控制器芯片,后对CAN接口硬件设计作详细说明。

2.1 ARM芯片S3C2410和CAN控制器MCP2515简介

S3C2410是三星公司设计的32位RISC嵌入式处理器。该芯片基于ARM920T内核,采用五级流水线和哈佛结构,提供1.1MIPS/MHz的性能。为了减少应用系统设计的成本,S3C2410集成了众多的常用资源,如:LCD控制器、SDRAM控制器、一个触摸屏接口、两个SPI接口等,内核最高工作频率可达266MHz。

独立CAN控制器MCP2515灵活的中断能力、接收帧屏蔽和过滤、帧优先级设定等特性使其能够很好的对信息进行管理,减轻了处理器的负担和软件设计的复杂度。其独特功能如下:

(1) 有标准帧和扩展帧两种数据帧可供选择,每个帧的数据字段长度可为0-8字节,标准帧数据段的前两个字节可单独过滤;
(2) 内含3个发送缓冲器和2个接收缓冲器,并且其优先级可编程设定;
(3) 内含6个29字节的接收过滤器和2个29字节的接收屏蔽器;
(4) 具有Loop-Back(自环检测)模式;支持更高层的协议,如DeviceNet、SAEJ1939;

2.2 硬件接口设计

S3C2410的SPI接口兼容SPI V2.11协议,可支持查询、中断和DMA三种数据传送模式。MCP2515连接到S3C2410的SPI0口,其相互连接关系如图1所示。


图1 PROFIBUS 网络特性

(1) 本接口设计不使用TXnRTS、RXnBF等5个引脚,使用了总中断引脚INT,因此在软件设计的时候不使能发送请求和接收完毕中断对应功能引脚,且在本设计中该引脚也不作其它用途,处理器在响应总中断后,通过SPI接口访问MCP2515内部相应寄存器来确定具体的中断事件,并对其作出处理。
(2) 为了隔离总线上的干扰信号,提高系统的可靠性,CAN控制器与CAN收发器之间采用了光隔。光隔的两边应该采用独立的供电电源,不可与系统的其他部分直接共地。
(3) 在CANH和CANL之间使用了两个等值电阻(R410、R411)和旁路电容(C408)来提高EME(Electro Magnatic Emission)性能,减少该部分对系统其他部分的干扰。
(4) MCP2515在初始上电、复位以及从休眠模式唤醒后最初的128 OSC时钟周期内,OST(振荡启动定时器)保持复位状态。应注意在OST超时前不应对SPI进行操作。
(5) RX是为减少EMI(Electro Magnatic Interference)而设计的。CANH、CANL的转换率与RX上流经的电流成正比。

3 CAN总线接口软件设计

CAN总线软件接口为应用层访问CAN控制器—MCP2515提供了一个便捷的“通道”,该“通道”屏蔽了CAN控制器工作的实现细节,使得应用层面向通信是透明的。该接口通过SPI接口通信来实现对CAN控制器的操作。它们之间的相互关系如图2所示。 [page]


图2 滤池就地控制单元硬件结构图

3.1 CAN接口软件实现

S3C2410的SPI可以工作在四种模式,但是MCP2515的SPI接口只支持其中的两种。因此应该将S3C2410的SPI接口配置为MCP2515支持的模式工作。从图1中可以看出S3C2410的SPI应该配置为正常模式的中断方式,具体配置操作请见参考文献[2]。

S3C2410-SPI的单个字节读、写函数实现如下:

unsigned char ReadSPI( void )
{
SPRDAT0 = 0x00; // 初始化SPI总线
while ( !REDY );
// 判断接收数据是否完成
return ( SPRDAT0 );
// 获取接收到的数据
}
unsigned char WriteSPI( unsigned char data )
{
SPRDAT0 = data; // 写数据到发送缓冲区
if ( DCOL ) return ( -1 );
// 判断是否发生冲突,发生冲突则返回错误标准
else while( !REDY );
// 否则等待数据发送完成
return ( 0 ); // 返回发送成功标准
}

对MCP2515的读写函数原型如下:

void Mcp_Read( unsigned char Addr, unsigned char *ReadData, unsigned char Length );
void Mcp_Write( unsigned char Addr, unsigned char *WriteData, unsigned char Length );
Addr:要读写区域的首地址;
ReadData/WriteData:读取数据存放区、写出数据缓冲区首地址;
Length:要读、写数据的字节数。

其它对MCP2515的操作在此不一一列举,请见参考文献[3]。

3.2 CAN总线数据收发软件设计

本设计采用外部中断1响应MCP2515的总中断,并且配置控制器始终处于唤醒模式,发送器工作在正常模式,使能接收、发送、错误中断。中断方式处理CAN总线数据收发的流程如图3,分别从发送处理、接收处理、错误处理三个部分加以说明。


图3 中断方式实现CAN总线数据收发流程图[page]

(1) 发送处理

在两种情况会下被执行,其一发送中断响应中,如果当前有发送任务,通过发送缓冲区记录标志确定空的发生缓冲区并向其中填发送帧,然后启动发送;其二在接收中断响应中,在接收处理完后如果有发送任务且有发送缓冲区空,会处理发送任务。在两处处理发送主要是考虑有多个发送、接收缓冲区可用,可以提高通信效率。

(2) 接收处理

需要根据ICOD的值来确定当前是那个接收缓冲区的数据准备好,可以读取。接收帧处理过程中首先读取帧的ID值,确定当前帧的数据是那个节点发送来的,并据此把帧中数据字段的数据存放相应的位置。

(3) 错误处理

引起错误处理的原因很多,并且都产生错误中断,需要访问错误标志寄存器来确定具体错误类型,并据此作相应的处理。

此外,图3中更新发送缓冲区使用记录是为了在发送和接收中断响应中可以据此清楚发送缓冲区的使用情况,确定当前是否可以做发送处理。

4 测试与应用

将以上设计方案应用到自主开发的HMI(结构框图如图4,虚线框中为扩展的CAN总线接口框图)实验板上,同时与黄石市科威自控有限公司开发的混合型PLC(EASY-M0808R-A44NB)、通用型PLC(EASY-M2416R)、运动控制器(EASY-KP3-M0506R)进行通信测试,其中HMI作主站,其他设备作从站。测试环境中有电机频繁启停和不间断继电器开闭干扰,其他测试条件和参数见如附表:

附表 CAN接口测试记录表

在测试记录程序中记录了通讯速率为500Kbps,运行到6时31分42秒时出现了一次通信“死机”,随后系统调用自恢复程序重新配置软硬件参数,6时31分43秒重启通信,通信恢复正常。其他测试条件下没有出现“死机”的情况。该测试结果说明采用这种方法设计的CAN接口完全能够满足工业现场网络通讯的要求。


图4 HMI系统结构图

5 结束语

采用ARM芯片S3C2410集成的SPI接口扩展的CAN总线接口,在不改变CAN总线自身的特点的前提下,使得PCB布线简单,增强了系统的可靠性;为扩展接口找到了一个便捷的方法。在自主开发的HMI中采用该设计方案实现CAN总线接口的扩展,并且在实际应用和测试中证明了该方案的正确性和可靠性。(end)
关键字:S3C2410  CAN  总线通信 引用地址:基于S3C2410的CAN总线通信设计与开发

上一篇:百度实现ARM架构服务器全球首次商用
下一篇:基于ARM9-μC/OS-II软硬件平台的SD卡文件系统的设计与实现

推荐阅读最新更新时间:2024-03-16 13:19

DS80C390双CAN总线监控系统的设计及实现
  1 引言   CAN总线的全称是ControllerAreaNetworkBus,简称控制器局部网总线,它是现场总线的一种,是一种有效支持分布式控制或实时控制的串行通信网络。CAN网络的拓扑结构采用两级总线式结构,两级总线之间采用转发器进行连接,这种结构比环型结构信息吞吐率低,并且无源抽头连接,通信介质用双绞线,系统可靠性高。经过二十年的发展,CAN总线凭借其卓越的特性、极高的可靠性和独特的设计,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。CAN总线具有高可靠性、实时性和灵活性,它的特点如下:(1)方便地构成分布式监控系统,可以多主方式工作,而不分主从,通信方式灵活。(2)通信距离最远可达10km,通信速率最高
[工业控制]
CAN总线在汽车车身控制中的应用
引言 20世纪80年代以来,随着集成电路和单片机在汽车上的广泛应用,汽车上的电子控制单元越来越多,例如电子燃油喷射装置、防抱死制动装置(ABS)、安全气囊装置、电控门窗装置和主动悬架等等。在这种情况下,如果仍采用常规的布线方式,即电线一端与开关相接,另一端与用电设备相通,将导致车上电线数目的急剧增加,使得电线的质量占整车质量的4%左右。另外,电控系统的增加虽然提高了轿车的动力性、经济性和舒适性,但随之增加的复杂电路也降低了汽车的可靠性,增加了维修的难度。为此,改革汽车电气技术的呼声日益高涨。因此,一种新的概念——车用控制器局域网络CAN应运而生。 CAN是控制器局域网络(Controller Area Network)的简称
[应用]
基于CAN总线技术的数据采集系统设计分析
海洋环境中,由于测量现场离岸较远,环境恶劣,必须将测量装置与计算机系统分开,构成远程数据采集系统。远程数据采集系统的数据传输方式一般有两种:频率量传输和串行通信。频率量抗干扰能力强,便于远距离传送,但这种远程的频率测量一般仅适用于几十赫兹以下的较低频率范围。在串行通信中,RS-232通信标准数据传输速率慢(通常异步通信速率限制在19.2kbps以下),传送距离短(一般电缆长度为15m),不适于用作远程数据采集系统;RS-449、RS-422及RS-423等通信标准,实时性不强;RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差;且当系统出现多节点同时向总线发送数据时,会导致总线呈现短路,
[单片机]
基于<font color='red'>CAN</font><font color='red'>总线</font>技术的数据采集系统设计分析
基于Profibus-DP现场总线通信接口设计
   O 引言   Profibus是开放的、与制造商无关、无知识产权保护的标准。因此世界上任何人都可以获得该标准并设计各自的软硬件解决方案。Pro-fibus-DP通信接口的开发有两种方案选择:单片机+软件;单片机+Profibus通信芯片ASIC。   方案2中Profibus-DP协议完全由Profibus通信ASIC来实现,单片机主要处理用户程序。因此方案2开发周期相对少很多,本文将采用单片机+Profibus通信ASIC来实现Profibus通信接口的设计。    1 Profibus-DP基本特性   Profibus包括三个兼容系列:Profibus-FMS,Profibus-DP,Profibus-PA。F
[嵌入式]
基于Profibus-DP现场<font color='red'>总线</font><font color='red'>通信</font>接口设计
CANWeb现场总线协议
  1.引言 又迅自动化  依托  交通大学,总结30多年大型电厂控制系统IO模块的设计、生产经验,利用当今最先进的电子技术,结合 CAN总线 、以太网的优点,扬长避短,精心设计出目前国内性价比最好的现场总线网络集成技术CANWeb,  CANWeb特点如下: (1) CANWeb  网络中的  各个节点(CANWeb节点分主站、从站2种)  配置简单,不需要编程,点击鼠标、键盘即可快速、轻松完成; (2)  用户通过  以太网Modbus协议与  主站  高速交换数据,主站再与从站实时交换数据; (3)  用户通过  主站  的以太网Web浏览功能,可轻松完成对  从站  的监控、配置等操作; (4) C
[嵌入式]
基于虚拟仪器的CANopen协议监控面板设计
  虚拟仪器是电子测量技术与计算机技术深层次结合的产物,通过软、硬件的结合来实现传统仪器的各种功能,大大突破了传统仪器在数据处理、显示、传送、存储等方面的限制,使用户可以方便地对仪器进行维护、扩展和升级。用户通过友好的图形界面来操作虚拟仪器的面板就如同操作真实仪器一样方便。CAN协议只定义了物理层和数据链路层,本身并不完整,有些复杂的应用问题需要一个更高层次的协议 应用层协议来实现。CANopen协议就是将CAN网络中通信数据的组建和传输进行标准化,并给用户很大的自由度,允许用户随时添加自己所需要的新功能。   本文将虚拟仪器技术应用于CANopen协议开发,有利于实现分布式工业现场的实时监控、数据采集,改善现场总线网络通信系统
[测试测量]
基于虚拟仪器的<font color='red'>CAN</font>open协议监控面板设计
S3C2410设计的无线数据采集系统
手持终端的功能越来越强大,数据处理能力也越来越强,人们对其无线通信功能的要求也越来越高。为此,各种无线设备进入人们的生活,在此基础之上,大量的无线设备业已进入工业生产领域。在工业或者工厂底层环境中,使用无线技术具有很多优势;利用无线技术可以解决工业生产中线路布局烦琐的困境,也可以避免恶劣环境对线路腐蚀等问题。 1 系统设计 在此,把嵌入式技术与无线电台通信技术相结合,设计一种无线数据采集系统。该系统分为数据采集模块、数据传输/接收模块、数据处理模块,如图1所示。数据采集模块通过将传感器得到的模拟信号转换成数字信号,再用无线芯片发送出去。A/D转换芯片采用MAX132;数据传输芯片采用无线传输/接收芯片IA4421。用单片机配置
[模拟电子]
<font color='red'>S3C2410</font>设计的无线数据采集系统
汽车CAN总线系统的挑战与设计
CAN总线技术已在汽车上广泛应用,随着新能源车型以及自动驾驶技术的推广,总线问题也对汽车的安全带来风险挑战,本文从系统角度对CAN总线的电气、EMC、硬件以及软件等相关设计进行梳理,结合现有总线系统设计经验进行分析与总结。 01、汽车总线技术发展与挑战 汽车CAN总线技术起源于BOSCH公司,为了解决当时汽车电控模块增多带来的布线空间矛盾、信号抗干扰能力差、汽车重量增加等诸多问题而诞生的。CAN总线实现了总线上的信息共享,大大减少了汽车的线束,见图1所示。 图1 汽车CAN系统结构示意图 随着汽车电控模块对高速率通信的需求日益增加,高性能通信系统必须缩短耗时的任务,BOSCH联合其他专家合作开发
[汽车电子]
汽车<font color='red'>CAN</font><font color='red'>总线</font>系统的挑战与设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

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