基于PCI总线的CAN卡的设计与实现

发布者:740322lwj最新更新时间:2012-04-14 来源: dzsc关键字:PCI总线  CAN卡  SJA1000 手机看文章 扫描二维码
随时随地手机看文章

    现场总线CAN(Controller Area Network控制器局域网络)以其高性能、高可靠性及独特的设计,越来越受到人们的重视和青睐,不但在汽车行业中应用广泛,而且在工业控制、机器人、医疗器械、传感器等领域发展迅速。为了扩展CAN总线的功能,与计算机相连,可设计具有CAN接口和PC接口的CAN适配卡,用来收集CAN总线上各个节点的信息,转发给PC机,并可将PC机的命令和数据转发给各个节点以及完成对CAN总线上的用户系统的部分监控和管理工作。 

    PCI总线是Intel公司推出的一种先进的高性能32/64位局部总线,可同时支持多组外围设备,不受制于处理器,数据吞吐量大 (33MHz总线频率、32位传输时峰值可高达132MB/s)。目前PCI是处于主流的计算机总线。以往的CAN卡一般都是基于ISA总线的,由于ISA总线传输速率低,CAN卡必须增加中继控制功能,才能够适应CAN的高速传输,导致造价高、体积大、传输速率低,不利于CAN总线的推广应用。由于PCI总线传输速度快,而且支持热插拔、电源管理等功能,不但能满足CAN总线的高速数据传输,性能高、功能强,而且体积小、价格低、使用方便、应用范围广。 

    CAN卡的设计包括硬件设计和软件设计。 

1 硬件设计 

    PCI总线是一种独立于CPU的局部总线,不同于传统的ISA总线。由于PCI总线规范定义了严格的电气特性和时序要求,开发难度比ISA总线的开发难度大。实现PCI接口的方案一般有两种:采用可编程逻辑器件和专用总线接口器件。采用可编程逻辑器件实现PCI接口的最大好处是比较灵活,可把PCI时序模块和功能模块结合在一起,可以利用的器件也比较多(如Altera公司的CPLD器件、Xilinx公司的FPGA器件等),还可以购买由厂家提供的用VHDL、AHDL等硬件描述语言编制的PCI核心设计模块,但其设计难度还是很高,因为PCI总线对负载要求、传输数据的建立时间的要求都比较苛刻,同时还需要器件内部实现用于配置的各类寄存器,以及完成逻辑校验、地址译码等工作的寄存器(大致需要15000个门电路)。此外,还需加入FIFO、用户寄存器组和后端设备接口等部分。设计这种PCI总线接口会导致将大量的人力、物力投入到复杂的逻辑验证和时序分析的工作上,开发周期较长。采用专用接口器件虽然没有采用可编程逻辑器件那么灵活,但能够有效地降低接口设计的难度,缩短开发时间。专用接口器件具有较低的成本和很高的通用性,能够优化数据传输,提供配置空间,具备用于突发传输功能的片内FIFO,提供扩展局部总线等优点,并且许多公司还提供配套的开发工具(例如评估板或驱动程序开发软件),使用很方便,开发周期短。目前市场上常见的有PLX、AMCC、Cypress等公司的PCI桥芯片,各个型号的PCI接口芯片的大致特点如表1所示。 

    PCI设备可分为主模式和从模式。主模式桥芯片可以进行DMA操作,而从模式只能接受读写操作。根据PCI提供的传输数据带宽(最大132MB/s)和CAN总线(最大1Mbps)的要求,加上经济和开发难度与周期上的考虑(主模式桥芯片较昂贵,开发难度较大),又因不需要DMA功能,采用从模式桥芯片足以满足传输数据的需要。此外,选择芯片不仅考虑性能和经济上的要求,而且还需要考虑硬件开发和驱动程序开发的难易。如果不提供足够的芯片说明和应用样例及开发工具,将大大增加开发难度和延长开发周期。因此,采用PLX公司的PCI总线目标接口芯片PCI9052作为CAN卡中的PCI接口芯片,负责与计算机之间的数据通信。[page]

    PCI9052是PLX公司开发的低价格PCI总线从模式接口芯片,低功耗,符合PCI2.1规范,提供的局部总线(Local Bus)可通过编程设置为8/16/32位的(非)复用总线。其主要特点有: 

    (1)直接数据转换模式  PCI9052支持PCI到Local Bus的内存映射和I/O映射的突发读写。 

    (2)ISA接口逻辑  PCI9052支持通过8/16位内存映射或I/O映射从PCI到ISA总线的单周期读、写访问。方便从ISA卡向PCI卡的转换。 

    (3)中断产生器  由Local Bus的两个中断信号可以产生一个PCI中断信号:INTA#。 

    (4)局部总线  PCI9052提供的局部总线不但可编程,而且与PCI总线的时钟相互独立运行,可实现异步操作,总线操作自动实现时序同步。两总线的异步运行方便了高、低速设备的兼容。局部的运行时钟频率范围0~40MHz、TTL电平,可由PCI提供或由用户自行提供;PCI的运行时钟频率范围0~33MHz。 

    (5)串行EEPROM  用于存放PCI BUS和Local Bus的部分配置信息。 

    (6)4个局部设备片选  基址和地址范围可以由串行EEPROM或主控设备进行设置。 

    (7)5个局部地址空间  基址和地址范围及其映射可以由串行EEPROM或主控设备进行设置。 

    (8)Big/Little Endian模式的字节交换  适合不同计算机体系。 

    (9)局部总线等待状态  除了等待信号LRDYi#用于握手之外,PCI9052还有一个内部等待产生器(包括地址到数据周期、数据到数据周期和数据到地址周期的等待)。 

    (10)延迟读模式  PCI9052支持PCI2.1规范的延迟读模式。 

    (11)FIFO  PCI9052包括一个64Byte的写FIFO和一个32Byte的读FIFO,从而支持预取模式、即突发操作。

(12)PCI锁定机制  主控设备可以通过锁定信号占有对PCI9052的唯一访问权。 

    由于CAN总线的迅猛发展,许多芯片厂商开发了很多系列的CAN通信控制器芯片。如表2所示。 

    由于PCI9052可以启动局部总线的读写,CAN卡不再需要微控制器,采用CAN通信控制器即可,本CAN卡采用SJA1000。SJA1000支持BasicCAN和PeliCAN模式,具有FIFO、支持热插拔等功能,不但可以实现CAN总线接口功能,而且芯片可以根据晶振的频率,输出可编程的CLKOUT信号,该信号正好可作为PCI9052的局部总线的总线频率,节省了器件,方便了设计。CAN总线的总线频率可为12MHz、16MHz或24MHz,PCI9052自动实现局部总线与PCI总线的访问同步。CAN总线收发器采用82C250。该芯片是CAN总线控制器和物理总线的接口,可以提供对CAN总线的差动发送和接受能力,具有抗瞬间干扰、保护总线的能力,可以通过调整CAN总线上通讯脉冲的边沿斜率来降低射频干扰。 

    由于PCI设备在计算机中的硬件资源是系统动态分配的,因此在设计出基本的硬件框架后,要进行PCI配置设计。CAN卡的硬件资源为映射SJA1000内部寄存器的内存映射空间和一个中断源。PCI9052提供5个局部地址空间,可以选用其中的一个作为SJA1000的地址空间,分配32个8位地址。同时设置相应的初始化,PCI配置寄存器中的寄存器PCIBAR2设置为0XFFFFFFE0,向系统请求分配内存的数量为32,类型为不可预读,其它寄存器的值可设置为0。设置局部地址空间的范围为0X00000000~0X00000020。PCI9052提供2个局部中断源,利用LINTi1即可,注意的是:LINTi1信号线没有驱动能力,SJA1000的INT引脚也没有驱动能力,因此该信号线必须加上拉电阻,否则该信号线的电平不确定,工作肯定不正常。SJA1000提供电平触发中断信号,因此PCI9052的中断触发模式设置为电平触发。利用PCI9052的局部设备片选CS0#作为SJA1000的片选信号。CS0#片选信号的起始地址和地址范围由CS0 Base Address寄存器设置,值为0X00000002。另外,PCI9052的LRDYi#信号为局部总线数据准备信号,SJA1000的寄存器地址映射成地址,数据传输不存在延迟等待,因此LRDYi#引脚可接地,表示SJA1000的寄存器总是立即可读写。PCI9052寄存器的初始值由串行EEPROM提供,在PCI9052加电后读取。EEPROM必须采用支持连读功能的芯片,本设计采用Microchip的93LC46B。用PLX公司提供的开发工具PlxMon可对93LC46B进行读写。[page] 

    PCI9052的硬件调试可采用PlxMon。利用它可以对PCI设备的配置资源进行检验。利用PLX提供的SDK,可以对PCI9052的局部寄存器、局部总线及EEPROM进行读写,这样可以调试硬件。借助开发工具,不必开发PCI设备的调试软件,可节省很多时间。同时,SDK也为驱动程序的开发提供了程序框架,加快了开发进度。

CAN卡的电路框图如图1所示。 

2 软件设计 

    软件设计包括驱动程序的设计和COM组件程序设计。 

    由于PCI设备的中断、I/O端口、映射内存等资源都是动态分配的,必须编写驱动程序管理硬件,才能供用户编程使用。为了通用性和兼容性,CAN卡驱动程序的开发采用支持Windows XP、Windows2000和Windows98的WDM驱动程序。开发工具采用Visual C++6.0和Win2000 DDK。由于CAN卡上没有微控制器,因此对CAN总线端口的所有操作都是由驱动程序来完成的。这不仅可以由计算机来实现复杂的功能,例如,错误检测、断点续传等,同时节省了硬件,而且有利于CAN卡的升级——只要更换驱动程序即可。驱动程序的功能主要是配置SJA1000的CAN接口、收发CAN总线上的数据、对CAN总线进行实时监测、接收用户程序的收发命令。收发数据和CAN总线错误均采用中断处理,驱动程序可以快速响应,通过事件(Event)内核对象直接通知给用户程序。由于WDM驱动程序运行在系统的内核态,编写非常复杂,限于篇幅,仅给出软件的框图(见图2)。 

    为了方便用户的使用,还应编写相应的API函数或ActiveX控件等其它应用层的程序提供给用户。由于ActiveX控件基于先进的COM技术,具有良好的封装性、使用灵活性等特点,可使用户编程简单、方便,因此在CAN卡的设计中编写了ActiveX控件。ActiveX控件负责与驱动程序的通信,通过控件的事件把CAN卡接收的数据通知给用户程序,利用控件的属性设置CAN通信控制器,按照设置的方法发送用户程序的数据。 

    根据以上的设计,开发了名为Can1000的CAN卡。经使用证明,该卡设计简单明了、性能较高、成本低廉、驱动程序和ActiveX控件使用方便,达到了设计和用户的要求。 

关键字:PCI总线  CAN卡  SJA1000 引用地址:基于PCI总线的CAN卡的设计与实现

上一篇:多USB接口的局域网接入技术的实现
下一篇:DSP接口效率的分析与提高

推荐阅读最新更新时间:2024-05-02 22:00

基于DSP与PC机的PCI总线高速数据传输
TMS320C6713是TI公司在TMS320C6711的基础上推出的C6000系列新一代浮点DSP芯片,它是目前为止C6000系列DSP芯片中性能最高的一种。TMS320C6713可在255MHz的时钟频率下实现1800MIPS/1350MFLOPS的定点和浮点运算,因而可极大地满足通信、雷达、数字电视等高科技领域对信号处理实时性的要求。同时其主机口(HPI)可灵活地和PCI总线控制器相连接。而PC机则可通过PCI总线控制器直接访问TMS320C6713的存储空间和外围设备,从而实现PC机与TMS320C6713之间的高速数据传输。     在TMS320C6713 DSP与PC机实现高速数据传输的方案中,可选用PLX公司的PC
[嵌入式]
CAN总线分布式系统适配和控制单元设计
    1 CAN总线分布式系统的结构       系统结构如图1所示。本系统由上位监控计算机、CAN总线适配卡和控制单元三部分构成。其中上位监控计算机采用IBM-PC兼容机,主要负责对系统数据的接收与管理、控制命令的发送以及各控制单元动态参数和设备状态实时显示。控制单元以单片机为核心,主要负责对现场环境参数和设备状态进行检测,对采集来的数据进行处理,并对SJA1000进行操作和控制。CAN总线适配卡,可使PC机方便地连接到CAN总线上。它内嵌微处理器、CAN总线控制器、CAN总线收发器和双口RAM。双口RAM作为PC机与CAN总线适配卡的数据共享区,通过设备将其映射成PC机的物理内存,实现CAN与PC机的高速数据交换。C
[嵌入式]
基于CPCI总线10/100 Mb/s以太网卡的设计与实现
  0 引 言   基于PCI总线的以太网控制器是现在以致将来网络应用方面的一个主要发展方向。8位ISA网卡目前已被淘汰,市场上常见的是16位ISA接口的10 Mb/s网卡,它的惟一好处就是价格低廉,适合于一些如网吧等要求不高的场合使用。而VESA、EISA网卡速度虽然快,但价格较贵,市场很少见。目前市场上的主流网卡是PCI总线的网卡。CPCI技术是在PCI技术基础之上经过改造而成,基于CPCI以太网卡性能更高。该文就是要设计一种高性能又不增加芯片成本的以太网卡电路。在仔细分析以太网的原理和理解CPCI总线原理的基础上,以Intel 82551为例研究设计了一种高效的以太网卡电路。    1 CPCI的特点   CPC
[嵌入式]
ZLG致远电子基于不同形式接口开发高性能CAN接口
无人化行业迅速发展, CAN -bus在无人配送中发挥着重要的作用。ZLG致远电子针对目前无人行业存在的需求,提供系统的CAN-bus应用解决方案,助力无人化行业进程。 CAN-bus在无人化行业中的应用 随着云计算、 AI 、边缘计算等新兴技术的不断涌现与成熟普及,以电动化、智能化、网络化、共享化为趋势的“新四化”已成为各行业内的普遍共识。 近几年热度较高的 自动驾驶 ,就是以无人智能化为核心的。目前,实现完全地自动驾驶除了相关政策限制,技术难度尤为困难。为此,各行业针对自身业务的应用场景,纷纷效仿实现无人化作业。例如,末端无人物流配送,园区通勤,矿区特种作业,景区游览车,无人农业机,无人清洁车等等。 实现无人化
[汽车电子]
发电机状态监测仪中CAN适配的设计方案
    摘要: 文中介绍了发电机状态监测仪中CAN智能适配卡的功能和硬件组成,针对ISA和哼单片机同时对双口RAM读写数据时的仲裁问题,提出了一种硬件判优的实现方法,并对适配卡的软件设计进行了总体的阐述。     关键词: 适配卡 IDT7132 双口RAM SJA1000 CAN(Controller Area Network)控制局域网络是一种串行通信网络。它采用了许多新技术和独特的设计,因而使其在可靠性、实时性和灵活性方面具有突出的优点。这些卓越的性能使CAN总线得以在全球范围内一直保持高速发展。考虑到CAN总线的成长性及许多单片机中集成有CAN总线控制器,且CAN总线专用控制器IC术易从市场上得到,因
[工业控制]
基于CPCI总线的智能A/D,D/A模块设计
   0 引 言   在工业控制领域,为了实现采集和控制功能,经常会使用到A/D,D/A模块。在实际使用中A/D,D/A模块和主机之间通信方式可以有很多选择。比如RS 232,RS 422,网络等接口方式。在该设计中A/D,D/A模块通过CPCI总线与主机通信,通过A/D接口采集数据,经过伺服控制软件处理,输出模拟量驱动执行机构。   从而实现一个闭环的控制。另外通过对DSP软件的修改,该模块还可以单独实现A/D或者D/A功能。   该设计中A/D,D/A模块具备以下功能:   (1)提供2路16位A/D,输入信号范围±5 V,精度要求小于士16 LSB;   (2)提供2路16位D/A,输出信号范围±5 V,精度要求小
[模拟电子]
基于PCI总线的无线电高度表测试系统
   0 引言   为了适应高科技条件下的现代战争,不仅要不断地提高战斗机的性能,而且对相应检测设备也提出了更高要求。先进测试技术的应用是战斗机维护修理的发展方向,是减少维修时间、提高装备完好率的重要手段。本文所设计的检测设备的技术高低对高度表的日常维护、检测起了决定性的作用。   本文对高度表的组成和工作原理进行分析,确定被测试项目。重点对被测参数进行分析,采用并行的开发模式。选择适合的工控机,设计相应的调理电路。软件用LabWindows/CVI语言,完成编辑、编译、连接、调试、仿真等开发。    1 高度表概述   本文所研究的无线电高度表(以下简称高度表)作为某型导弹纵向弹道控制的关键部件,其性能的好坏将直接影响着
[测试测量]
基于<font color='red'>PCI总线</font>的无线电高度表测试系统
基于cPCI总线的嵌入式遥测前端处理器系统设计
  遥测数据处理系统在航空、航天等军工试验领域有着广泛的应用。在航空飞行试验中.遥测数据处理系统为各类试飞测试数据的实时处理提供了手段和平台,试飞员、试飞指挥员及试飞工程师协同完成新机试飞必不可少的重要设施,是确保现代飞机试飞安全、提高试飞效率、缩短试飞周期、实现综合试飞的重要手段。   遥测数据处理系统中的核心设备——遥测前端处理器,技术上经历了从分立式、智能式到嵌入式的快速发展。我遥测前端处理器的研发经历了从引进、合作研制到完全自行研制的历程。   遥测前端处理器是一套嵌入式实时计算机系统,承担着遥测PCM数据的同步、分路、工程单位转换、数据计算、数据分配等实时处理任务。它和遥测系统管理服务器、工作站等设备通过网络联接
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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