基于ARM处理器的CAN节点设计

发布者:创新之星最新更新时间:2012-04-16 来源: 21ic 关键字:ARM处理器  CAN节点  LPC2104 手机看文章 扫描二维码
随时随地手机看文章

引言

随着信息技术的飞速发展,基于ARM在嵌入式系统方面的优势和CAN总线的广泛应用,目前越来越多的ARM处理器内部自带了CAN控制器,极大的方便了开发人员对CAN总线的开发。本课题是基于ARM2104的微处理器CAN总线系统节点开发,采用CAN总线可以将节点控制器直接安装在现场,数据经处理后发送到总线上,实现了信息的全数字方式传输,提高了传输的抗干扰能力,增加了信息的传输量。

总体设计方案

本课题中所设计的是CAN总线系统节点,系统节点结构图如图1。

图1  系统节点结构图

CAN总线系统应用要求:CAN总线接口的扩展、点对点通信。

CAN节点的设计主要是CAN通信控制器与微处理器之间、CAN总线收发器与物理总线之间的电路的设计。微控制器主要负责CAN控制器的初始化,进行与CAN控制器的数据传递,并按照预定的程序进行处理;CAN的通信协议主要由CAN控制器完成,CAN控制器主要负责将数据以CAN报文的形式传递,并进行系统的诊断、测试以及处理CAN总线上的错误等;而CAN总线收发器是CAN控制器和CAN总线之间的接口,完成物理电平的转换,功能是增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰(RFI)。

通常一个完整的CAN节点应该包括三个部分:微控制器、CAN控制器、CAN收发器。目前广泛流行的CAN总线器件有两大类:一类是独立的CAN控器,另一类是带有在片CAN的微控制器。

CAN节点硬件电路设计

对于CAN节点硬件电路的的各接口电路的设计有:CAN接口电路、CPU模块、外围电路(复位电路和JATG接口电路)。其中CPU及电源电路如下图2所示:
 

图2  CPU及电源模块

图2  CPU及电源模块

LPC2104要使用两组电源,I/O供电电源为3.3V应用系统。首先,电源DW1将电源整流,经过C1、C3滤波,然后通过78M05将电源稳压至5V,再使用LDO芯片(低差压电源芯片)稳压输出3.3V及1.8V电压。LD0芯片采用S-1131B33UC和S-1131B18UC,其特点为输出电流大、精度高、稳定性高、功耗低。

设计中的CPU芯片与控制器SJA1000的配脚图如图3所示。

图3  模拟总线硬件图

图3  模拟总线硬件图[page]
 

CAN节点的软件设计

CAN节点的软件设计主要包括ARM处理器的编程和SJA1000驱动程序的设计。在硬件电路确定以后,系统控制的主要功能将依赖于软件来实现。系统能否正常可靠的工作,除了硬件的合理设计以外,与功能完善的软件设计是分不开的。

软件程序流程图如下图4所示:
 

图4  主程序流程图

配置软件包使用的GPIO必须在文件config.h中进行,其程序清单如列表1所示,其中程序清单(1)设置地址总线的宽度,只能为8、16、和24三个值之一。清单(2)设置信号AD0对应GPIO,其中0对应P0.0,1对应P0.1,以此类推。地址/数据总线的其它信号以这个信号为基准,顺序定义。清单(3)信号ALE对应GPIO,其中0对应P0.0,1对应P0.1,以此类推。清单(4)信号WR对应GPIO,其中0对应P0.0,1对应P0.1,以此类推。

程序清单列表1 配置总线使用的GPIO

#define ADDR_N_BIT 16 (1)

#define AD0_PIN_NUM 8 (2)

#define ALE_PIN_NUM 0 (3)

#define WR_PIN_NUM 1 (4)

#define RD_PIN_NUM 4 (5)

#include“exbus.h” (6)

本系统CAN控制器采用SJA1000,SJA1000控制器在微控制器正常通讯前,都必须先在相应地址寄存器中加载,确定接收标识码、总线接收波特率以及输出控制等,这就是CAN控制器的初始化。系统所用的CAN总线控制器SJA1000和CAN2.0A以及CAN2.0B两个版本的协议同时兼容。本系统设计以CAN2.0A的Basic CAN为协议标准进行设计。

测试之前编写的程序前首先要确定SJA1000的片选地址,确定与其他外部存储器无冲突。其次,微处理器对SJA1000的控制访问是以外部存储器的方式,来访问SJA1000的内部寄存器,所以应该正确定义微处理器访问SJA1000时,SJA1000内部寄存器的访问地址。

整个流程进行测试之后,SJA1000有8个不同的中断,这些中断可使主控制器立即作用在CAN控制器的某些状态上。一旦CAN产生中断,SJA1000就将中断输出(管脚16)设为低电平,直到主控制器通过读SJA1000的中断寄存器对中断采取相应措施,在主控制器响应后中断,或接收INFO里有更多有效数据,SJA1000立刻将中断输出再次设为低电平。采用中断接收的方式来接收数据,LPC2104的P0.16设置为外部中断INT,整个数据接收模块由数据接收函数void ReceiveData(uint8 *Rt)、中断处理函数CANException(void)构成。当SJA1000接收到CAN总线数据,通过接收中断使得LPC2104产生外部中断INT而使其进入中断处理函数,进而对接收到的数据进行处理。

可想,在CAN节点的软件设计的整个流程中,当硬件电路确定以后,系统控制的主要功能将依赖于软件来实现,并且能够正常可靠的工作。

结论

以ARM芯片作为主控制器,CAN总线作为数据传输方式来进行通讯的嵌入式系统得到了越来越广泛的应用。同时CAN通讯的可靠性也成为影响系统性能的关键部分之一。

本文以LPC2104为例,给出了一类微处理器与CAN控制器SJA1000之间的较为通用的硬件连接方法,对CAN总线节点进行了可靠性设计,采用CAN总线可以将节点控制器直接安装在现场,数据经处理后发送到总线上,实现了信息的全数字方式传输,提高了传输的抗干扰能力,增加了信息的传输量。

该设计现已在工厂车间中的车身控制系统中得到了应用,且运行可靠。

关键字:ARM处理器  CAN节点  LPC2104 引用地址:基于ARM处理器的CAN节点设计

上一篇:基于ARM的嵌入式Linux开发平台构建
下一篇:基于ARM单片机的小车显示系统设计

推荐阅读最新更新时间:2024-03-16 12:58

上海通用汽车如何一分钟找到CAN总线的问题节点
    上一篇《一分钟找到CAN总线的问题节点》引起了诸多CAN应用者的共鸣,上海通用汽车用这个功能,进行焊接机器人的日常维护,监测机器人CAN通信的信号质量,及时更换有隐患的节点。如图1所示。因为焊接机器人工作在比较严酷的电磁环境中,其CAN通信好坏直接影响汽车生产的效率和品质。所以快速找到问题节点并且予以更换是非常重要的。     CANScope分析仪广州致远电子股份有限公司研发的一款综合性的CAN总线开发与测试的专业工具,集海量存储示波器、网络分析仪、误码率分析仪、协议分析仪及可靠性测试工具于一身,并把各种仪器有机的整合和关联;重新定义CAN总线的开发测试方法,可对CAN网络通信正确性、可靠性、合理性进行多角度全方位的评估;
[嵌入式]
基于ARM处理器CAN-Ethernet通信模块实现
近20 年来工业测控系统发展的趋势是:分散控制和集中管理、标准化和开放性。工业测控系统从传统的集中测量控制系统转向网络化的集散控制系统。随着现场总线技术高速发展和标准化程度不断提高,以现场总线技术为基础的开放型集散测控系统—现场总线测控系统得到了广泛的应用。同时,以太网的应用也迅速向工业测控系统渗透,在工业自动化应用中异军突起。 这种趋势的出现与计算机技术、信息技术、网络通信技术的高速发展相关。现代工业系统信息交换的需求也已经从管理层内部迅速覆盖到控制、现场设备等各个层次,连接上层网络和现场总线的通信设备成为工厂自动化系统中的关键设备之一。CAN-Ethernet通信模块,是一种直接连接以太网和CAN现场总线的设备,有效解决了控制
[网络通信]
ARM处理器模式切换(含MRS,MSR指令)
1.1.1 ARM处理器模式切换(含MRS,MSR指令) 除了用户模式和系统模式,其余模式下都有一个私有SPSR保存状态寄存器,用来保存切换到该模式之前的执行状态,之所以用户模式和系统模式没有SPSR是因为,通常CPU大部分时间执行在用户模式下,当产生异常或系统调用时会分别切换进入另外几种模式,保存用户模式下的状态,当切换回原先模式时,直接回复SPSR的值到CPSR就可以了,因此,用户模式和系统模式下不需要SPSR,其详细操作查看下节异常处理。 以上几种模式通过CPSR里的M 位进行区分,如图3-1所示: 图3-1 CPSR控制位 通过向模式位M 里写入相应的数据切换到不同的模式,在对CPSR,SPSR寄存器进行操作不能使
[单片机]
<font color='red'>ARM处理器</font>模式切换(含MRS,MSR指令)
基于ARM处理器的MVB 2类设备研究
  1引 言   列车需要传输大量的设备控制和旅客服务信息,随着这些信息的数量和种类不断地增长,迫切需要一种大容量,高速度的信息传输系统。为此,国际电工委员会(IEC)制定了一项用于规范车载设备数据通信的标准——IEC61375(列车通信网标准),即TCN标准,该标准于1999年6月成为国际标准。目前国际上主要的TCN产品供应商是德国西门子和瑞士Duagon公司,国内的株洲电力机车研究所和大连北车集团电力牵引研究所等单位进行了大量的TCN相关研究工作并取得了丰硕的科研成果。   TCN标准推荐在机车上层使用绞线式列车总线WTB,在下层使用多功能车辆总线MVB。MVB总线和机车中的各种电气设备相连,这些设备按性能可以分为5类,
[单片机]
基于<font color='red'>ARM处理器</font>的MVB 2类设备研究
关于arm处理器 内存编址模式 与 字节对齐方式
在x86+Linux上写的程序,在PC机上运行得很好。可是使用ARM的gcc进行交叉编译,再送到DaVinci目标板上运行的时候,出现了Bus error。 出现的位置如下(其中Debug的内容是我在程序中添加的调试信息): root@211.69.193.189:~# arm_v5t_le-gcc -g shit.c root@211.69.193.189:~# ./a.out Debug: malloc space for the actual data: temp_buf = 0x13118 Debug: in my_recvn() Debug: nleft = 52 Bus error 打开调试器进行调试: root@211
[单片机]
ARM处理器中的寄存器基本知识详解
ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄器包括: ● 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。 ● 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。 ARM微处理器支持7种运行模式,分别为: ● usr(用户模式):ARM处理器正常程序执行模式。 ● fiq(快速中断模式):用于高速数据传输或通道处理 ● irq(外部中断模式):用于通用的中断处理 ● svc(管理模式):操作系统使用的保护模式 ● abt (数据访问终止模式): 当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。 ● sys(系统模式): 运行具有特权
[单片机]
<font color='red'>ARM处理器</font>中的寄存器基本知识详解
DCS控制器中采用ARM处理器的冗余设计
在自动化的许多领域,有效性的要求越来越高,因而对自动化系统的容错水平的要求也变得越来越高,尤其在设备停机代价非常大的场合。为了满足这些严格的要求,在DCS系统中通常采用冗余技术,这样才能够满足这些领域所需要的安全性、可靠性和有效性的标准。 在DCS控制系统中,分布处理单元是系统关键的部分。当前这些分布处理单元的控制器往往是基于86系列CPU建构的,这种架构目前被广泛采用。但是由于86系列分布处理单元的特点,导致现在的控制器处理单元存在很多的缺点,如放热量大等。而且在封闭的环境中,这些问题始终很难解决。随着很多低功耗技术的发展和低功耗控制器的出现,分布处理单元的CPU可以有更多的选择,尤其是低功耗的控制器产生很少的热量,且可以使系统
[工业控制]
ARM学习中LPC2104的Boot与Remap详解
开场白 最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。其中,比较困扰和麻烦的两个名词术语就是“Boot”与“Remap”。同时,在网上也经常见到有网友就这两个技术名词提出疑问。好在当今网络是如此发达,使得我们可以很快就得到许多老师和老鸟的解答。经过这一段时间的阅读与实践,算是将这个概念基本给理出了个头绪,借此机会,以自己的理解总结一下,贴到BBS上来,与广大网友们分享,如有不当之处,板砖且慢,因为我贴此文的目的是抛“砖”引“玉”,不是引“砖”!Bow!   两个专业名词—非易失性存储器和易失性存储器   非易失性存储器:指掉电后在相当长时间内依然能有效保存数据的存储器。如EEPRO
[单片机]
ARM学习中<font color='red'>LPC2104</font>的Boot与Remap详解
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

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