CAN总线与RS_232SPI总线转换模块的设计论文.doc
. 石河子大学信息科学与技术学院毕业论文课题名称:CAN总线与RS-232、SPI总线转换模块的设计学生:肖志昂2007082078庆中2007082010学 院:信息科学与技术学院专业年级:电子信息工程2007级指导教师:栓明讲 师完成日期:二一一年六月八日41 / 49CAN总线与RS-232、SPI总线转换模块的设计摘要 CAN总线因具有高可靠性、实时性等优点,而被广泛用于工业控制、建筑、医学等各个领域。但RS-232、SPI总线在现在很多领域仍然占据较大的比重,许多的机器设备具有RS-232接口或SPI接口,要想实现具有RS-232总线接口或SPI接口的设备的数据在CAN总线上传输,需要转换模块把RS-232和SPI总线上的数据转换成CAN总线格式数据。该模块是基于STC89C52型号单片机、独立CAN总线控制器SJA1000和CAN总线收发器PCA825C250设计的。该模块能够实现CAN总线与RS-232、SPI总线的转换。整个模块成本低并且稳定。本文详细介绍了该模块的软硬件设计。关键词 CAN总线,RS-232,SPI,SJA1000CAN-Bus andRS-232,SPI-BusConversionModuleAbstract:CAN-busforhigh performance, high reliability, real-time, etc., and is widelyused inindustrial control,architecture, medicineand other fields.However, RS-232, SPI bus are still many areas now account for a large proportion of machinery and equipment with many RS-232 interface or SPI interface, in order to achieve a RS-232 bus interface or SPI interface, CAN bus interface device to work, you need to convert the module to RS-232 and SPI bus data into CAN bus communication.The moduleis based on theSTC89C52RCSCMmodel, the independent CANbus controllerSJA1000, CAN bus transceiverdesigned825C250.The module enables CAN turn RS-232, SPI can also be achieved RS-232, SPI to CAN bus conversion. The entire module, low cost, and stability. This paper describes the module's hardware design and software design.Keyword:CAN-bus, RS-232, SPI, SJA1000, PCA82C250目录第一章引言11.1 课题的研究背景与意义11.2 国外发展状况11.3 课题研究的主要容2第二章总线简介与分析32.1 CAN、SPI、RS-232总线简介32.1.1 CAN总线简介32.1.2 SPI总线简介42.1.3 RS-232总线简介62.2 CAN总线特性分析62.2.1 CAN总线的特点与优势62.2.2 CAN总线协议82.2.3 CAN总线报文帧格式92.2.4 CAN总线报文传输结构92.2.5 CAN总线错误处理10第三章元器件选型与特性分析113.1 系统元器件选型分析113.1.1 单片机选型113.1.2 CAN总线控制器芯片选型123.1.3 CAN总线驱动器选型123.2 系统元器件特性分析133.2.1 STC89C52特性分析133.2.2 SJA1000特性分析133.2.3 总线驱动器PCA82C25016第四章 CAN/RS-232总线转换模块设计174.1 硬件设计174.2软件设计20第五章 CAN/SPI总线转换模块设计235.1 硬件设计235.2 软件设计23第六章系统调试25第七章总结27参考文献28致29附录A 硬件原理图、PCB图、实物图30附录B 源程序34第一章 引言1.1 课题的研究背景与意义CAN总线在组网和通信功能上的优点以与它的高性价比,决定了它在许多领域都有广阔的应用前景和发展潜力。大型仪器设备系统复杂,需要对多种信息进行采集、处理、控制、输出等操作。如医疗器械CT断层扫描仪,为保证其工作可靠性,在数据通信上要求功能块间可随意进行数据交换,通信可以以广播方式进行,简单经济的硬件接口,通信线尽量少,抗干扰能力强,可靠性高并能自动进行故障识别和自动恢复。但是,这些要求长时间未能得到很好的解决,直至CAN总线技术出现才提供了一个较好的解决方法。CAN与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其具有良好的性能与其独特的设计,CAN总线越来越受到人们的重视。它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商都采用了CAN总线来实现汽车部控制系统与各检测、执行机构间的数据通信。同时,由于CAN总线本身的特点,其应用围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械与传感器等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。由于CAN总线的优势越来越明显在工业控制等领域的应用也越来越广泛,但RS-232、SPI总线在现在很多领域仍然占据较大的比重,许多设备只具有RS-232接口或SPI接口,拥有CAN总线接口的设备还十分的少,为了能让具有RS-232、SPI接口的设备也能在CAN总线上工作以适应整个技术的发展,需要设计CAN总线与RS-232转换模块1。1.2 国外发展状况为促进CAN以与CAN协议的发展,1992在欧洲成立了CiA(CAN in Automation)。在CiA的努力推广下,CAN技术在汽车电子控制系统、电梯控制系统、安全监控系统、医疗仪器、纺织机械、船舶运输等方面均得到了广泛的应用。现已有400多家公司加入了CiA,CiA已成为全球应用CAN技术的权威。根据国外资料报道,CAN技术已应用于家用电器和智能楼宇以与小区建设中。如安防系统、抄表系统、家电控制等。它投资少,每个节点可以随机访问,通信速度完全满足要求,且在这类应用中数据交换量都很少。适当的网关如CAN与TCP/IP协议的转换,可以使一个居室或一栋大楼的现场CAN信息转变为互联网的形式外传,或反过来通过这类网关把外部网传来的信息转换为CAN的形式,此即实现了所谓的远程控制。随着CAN总线的普与应用,有必要设计CAN总线与RS-232、SPI总线的转换设备,而且这种技术也日趋成熟,已经完全实现商业化生产,在各个领域得到广泛的运用1。1.3 课题研究的主要容课题研究的主要容有:1) CAN总线的联网通信,通过系统的设计实现CAN节点的相互通信。2) 实现CAN总线数据与RS-232总线数据的相互转换。3) 实现CAN总线数据与SPI总线数据的相互转换。第二章 总线简介与分析2.1 CAN、SPI、RS-232总线简介CAN、SPI、RS-232总线有着各自的特点,在不同的场合根据需求选择合适的总线通信是系统联网的前提条件。因此,了解总线的结构特征是进行模块设计的首要任务,通过对总线的多方了解分析其各种通信参数,结合实际的需求分析确定系统总线方案的选型,并对比三种总线的通信特征,为实现总线转换做好前期的准备。2.1.1 CAN总线简介CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型与对可靠性的要求不尽一样,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN通过ISO11898 与ISO11519 进行了标准化,现在欧洲已是汽车网络的标准协议。CAN总线是一种串行数据通信协议,其最高波特率可达1MB/S,因此具有高的传输速率。它是一种有效支持分布式控制或实时控制的串行通信网络,其对通信数据块进行编码,可以多主方式工作,可在各节点之间实现自由通信;采用非破坏性仲裁技术,有效避免了总线冲突;采用短帧结构,数据传输时间短,受干扰的概率低,重新发送的时间短。较之目前许多基于R线构建的分布式控制系统而言,基于CAN总线的分布式控制系统在以下方面具有明显的优越性:1)网络各节点之间的数据通信实时性强。2)缩短了开发周期。3)完成对通信数据的帧处理。4)使网络的节点个数在理论上不受限制。5)可在各节点之间实现自由通信。6)结构简单。综合来看,CAN总线在通信组网方面具有极大的优势,可以减少组网过程中的工作量,大大的提高工作效率2。2.1.2 SPI总线简介串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。SPI用于CPU与各种外围器件进行全双工、同步串行通讯。SPI可以同时发出和接收串行数据。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线。四种引脚的功能如下:SCK:时钟信号,由主设备产生;MOSI:主设备数据输出,从设备数据输入;MISO:主设备数据输入,从设备数据输出;:从设备使能信号,由主设备控制。当SPI工作时,移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。其典型系统框图如图2-1所示。图2-1 SPI系统框图SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。 SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI总线接口时序如图2-2与2-3所示3。图2-2 CPHA=0时SPI总线数据传输时序图2-3 CPHA=1时SPI总线数据传输时序2.1.3 RS-232总线简介RS-232C是一个已制定很久的标准,最初是为远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。RS-232C接口最大传输速率为20Kbps,线缆最长为15米。RS-232C接口通常被用于将电脑信号输入控制,当通信距离较近时,可不需要Modem,通信双方可以直接连接,这种情况下,只需使用少数几根信号线。EIA-RS-232C 对电器特性、逻辑电平和各种信号线功能都作了规定。在TXD和RXD上:逻辑1(MARK)=-3V-15V;逻辑0(SPACE)=+3+15V。以上规定说明了RS-232C标准对逻辑电平的定义。对于数据(信息码),逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平高于+3V;EIA RS-232C 与TTL转换。EIA RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA RS-232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL与EIA双向电平转换2。2.2 CAN总线特性分析2.2.1 CAN总线的特点与优势在上一节中已经对CAN总线做了一个简要的介绍,CAN总线作为一种串行通信协议,有着其它总线协议所不具有的一些特征。下面开始从技术参数方面分析CAN总线规。CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。使网络的节点个数在理论上不受限制。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络的节点个数在理论上不受限制,数据块的标识码由11位或29位二进制数组成,因此可以定义不同的数据块,这种按照数据块编码的方式,还可使不同的节点同时接收到一样的数据,这一点在分布式控制系统中非常有用。CAN总线有如下基本特点: 废除传统的站地址编码,代之以对通信数据块进行编码,可以多主方式工作; 采用非破坏性仲裁技术,当两个节点同时向网络上传送数据,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响继续传输数据,有效避免了总线冲突; 采用短帧结构,每一帧的有效字节数为8个,数据传输时间短,受干扰的概率低,重新发送的时间短; 每帧数据都有CRC校验与其他检错措施,保证了数据传输的高可靠性,适于在高干扰环境下使用;节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其他操作不受影响;可以点对点,一对多与广播集中方式传送和接收数据。 分析以上CAN总线的特点总结得到其主要优点有:1)废除传统的站地址编码,代之以对通信数据块进行编码,可以多主方式工作。这样的方式减小了数据通信过程中寻址的复杂度,可根据报文的ID决定接收或屏蔽该报文,同时这种工作方式下避免了象单片机多机通信情况下的只能有一个主机的缺陷,这样更有利于数据的传输管理。2)具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点。这些特点是串口通信不能相比拟的串口通信受到传输距离的限制,而传输速度也是有限的,继而也就影响到了传输的实时性。抗干扰能力以与经济上的考虑CAN总线也是一个不错的选择。3)采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作。货场的工作环境比较恶劣,尤其是噪声比较大,这在初期的调研中得到或验证,因此系统的设计必须考虑到噪声干扰的因素,而CAN总线的特性恰恰解决了这一问题,它能够适应这种高噪声的恶劣环境。4)具有优先权和仲裁功能,多个控制模块通过CAN 控制器挂到CAN-Bus上,形成多主机局部网络。这一点和前面的第一点是有所联系的,在多主式的通信过程中处理好各个模块的数据传输优先级以与数据的仲裁是十分关键的一步,CAN总线提供了这么好的一个管理“平台”。5)可靠的错误处理和检错机制,发送的信息遭到破坏后,可自动重发。这一特点保证了数据传输的可靠性以与突发错误的处理能力。数据在传输的过程中可能存在着帧信息丢失之类的问题,这就需要一个很好的解决方案来保证数据传输的有效性,CAN总线的管理在数据的传输过程中可以做到很好的错误检测以与通过数据重发来保证有效性。6)节点在错误严重的情况下具有自动退出总线的功能。这样就保证了系统在出错的情况下运行而导致的系统损坏。7)报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。这种报文格式优化了帧信息的结构,不必象串口通信那样在报文中必须包含目的节点以与源节点的地址信息2。2.2.2 CAN总线协议CAN总线协议主要描述设备之间的信息传递方式,从结构上可分成3个层次,分别对应OSI网络模型的最低两层数据链路层和物理层。CAN总线协议层次结构由高到低如表2-1所示。表2-1 CAN总线协议层次结构协议层对应OSI模型说明LLC数据链路层逻辑链路控制子层,用于为链路中的数据传输提供上层控制手段。MAC媒体访问控制子层,用于控制帧结构、仲裁、错误界定等数据传输的具体实现。物理层物理层物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输。LLC层和MAC层也可以看作是CAN总线数据链路层的两个子层。其中LLC层接收MAC层传递的报文,主要完成报文滤波、过载通知以与恢复管理等工作。而MAC层则为数据报文的传输进行具体的控制,包括帧结构控制、总线仲裁、错误检测、出错界定、报文收发控制等工作。物理层定义了信号如何实现传输,因此涉与到位时间、位编码、同步的解释,CAN总线协议并未对物理层部分进行具体的规定4。2.2.3 CAN总线报文帧格式CAN总线报文的帧格式有两种,不同之处为标识符域的长度不同:含有11位标识符的帧称之为标准帧,而含有29位标识符的帧为扩展帧。2.2.4 CAN总线报文传输结构报文传输由以下4个不同的帧类型所表示。1)数据帧:数据帧携带数据从发送器至接收器。数据帧由7个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结尾。数据场的长度可以为0。数据帧(或远程帧)通过帧间空间与前述的各帧分开。2)远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。远程帧由6个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧末尾。通过发送远程帧,作为某数据接收器的站通过其资源节点对不同的数据传送进行初始化设置。3)错误帧:任何单元检测到总线错误就发出错误帧。错误帧由两个不同的场组成。第一个场用作为不同站提供的错误标志(ERROR FLAG)的叠加。第二个场是错误界定符。为了能正确地终止错误帧,“错误被动”的节点要求总线至少有长度为3个位时间的总线空闲(如果“错误被动”的接收器有本地错误的话)。因此,总线的载荷不应为100%。有两种形式的错误标志,主动错误标志(Active error flag)和被动错误标志(Passive error flag)。4)过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。过载帧包括两个位场:过载标志和过载界定符。有两种过载条件都会导致过载标志的传送:(1)接收器的部条件(此接收器对于下一数据帧或远程帧需要有一延时);(2)间歇场期间检测到一“显性”位。由过载条件1而引发的过载帧只允许起始于所期望的间歇场的第一个位时间开始。而由过载条件2引发的过载帧应起始于所检测到“显性”位之后的位。2.2.5 CAN总线错误处理1)错误检测有以下5种不同的错误类型(这5种错误不会相互排斥)。(1)位错误(Bit Error)。单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误。但是在仲裁场(ARBITRATION FIELD)的填充位流期间或应答间隙(ACK SLOT)发送一“隐性”位的情况是例外的。此时,当监视到一“显性”位时,不会发出位错误。当发送器发送一个被动错误标志但检测到“显性”位时,也不视为位错误。(2)填充错误(Struff Error)。如果在使用位填充法进行编码的信息中,出现了第6个连续一样的位电平时,将检测到一个填充错误。(3)CRC错误(CRC Error)。CRC序列包括发送器的CRC计算结果。接收器计算CRC的方法与发送器一样。如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误。(4)形式错误(Form Error)。当一个固定形式的位场含有1个或多个非法位,则检测到一个形式错误。(备注:接收器的帧末尾最后一位期间的显性位不被当作帧错误)(5)应答错误(Acknowledgment Error)。只要在应答间隙(ACK SLOT)期间所监视的位不为“显性”,则发送器会检测到一个应答错误。2)错误信号的发出检测到错误条件的站通过发送错误标志指示错误。对于“错误主动”的节点,错误信息为“主动错误标志”,对于“错误被动”的节点,错误信息为“被动错误标志”。站检测到无论是位错误、填充错误、形式错误,还是应答错误,这个站会在下一位时发出错误标志信息。只要检测到的错误的条件是CRC错误,错误标志的发送开始于ACK界定符之后的位(其他的错误条件除外)5。第三章 元器件选型与特性分析3.1 系统元器件选型分析由于系统的总线已经确定,是针对总线的转换。所以这里系统方案的选型则主要是元器件的选择,选择合适的元器件有利于系统设计的便利性以与稳定性。3.1.1 单片机选型待选的单片机主要有三种:STC89C52,STC12C5410AD以与AT89S52。1)STC89C52STC89C52是一款基于51核的51系列单片机,其指令代码完全兼容传统的8051单片机,与工业标准的MCS-51指令集和输出管脚相兼容。在使用的过程中采用ISP(在系统可编程),无需专用的编程器,可通过串口(P3.0、P3.1)直接下载用户程序,大大的方便了系统程序的调试。另外STC89C52价格低廉,可多次重复擦写使用,具有很高的性价比。2)STC12C5410ADSTC12C5410AD与STC89C52相比,其主要增加了SPI同步通信接口,可以更为方便的实现SPI通信,但是其只有20、28、32三种引脚封装,无读写时序控制引脚。3)AT89S52AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。AT89S52在众多嵌入式控制应用系统中得到广泛应用。但是AT89S52在使用的过程中需要使用的专用编程器下载用户程序,这一点会增加设计的工作量。综合以上三种单片的特性,最终选择STC89C52作为系统的控制芯片,其外部扩展资源比较丰富,与AT89S52相比不需专用的编程器下载用户程序,大大的方便系统程序的调试,低廉的价格使其具有更高的性价比。虽然其不具有SPI同步通信接口,但是可以通过软件模拟实现SPI协议的同步通信。3.1.2 CAN总线控制器芯片选型CAN就是总线型结构的一种适合工业现场自动控制的计算机局域网络。在网络的层次结构中,数据链路层和物理层是保证通信质量至关重要、不可或缺的部分,也是网络协议中最复杂的部分。CAN控制器就是扮演这个角色,它是以一块可编程芯片上的逻辑电路的组合来实现这些功能,对外它提供了与微处理器的物理线路的接口。通过对它的编程,MCU可以设置它的工作方式,控制它的工作状态,进行数据的发送和接收,把应用层建立在它的基础上。目前,一些知名的半导体厂家都生产CAN控制器芯片。其类型一种是独立的,一种是和微处理器做在一起的。前者使用上比较灵活,它可以与多种类型的单片机的各类标准总线进行接口组合。后者在许多特定情况下,使电路设计简化和紧凑,效率提高。在本课题的系统设计中,针对单片机的选型,CAN总线控制器芯片选用独立的控制芯片。SJA1000是一款我们比较熟悉的CAN总线控制器芯片,其在我国市面上容易购买,其具有高的性能,容易掌握,价格也比较便宜。综合考虑,最终选择SJA1000作为CAN总线的控制器芯片5。3.1.3 CAN总线驱动器选型CAN总线驱动器提供了CAN控制器与物理总线之间的接口,是影响系统网络性能的关键因素之一。PCA82C250是一款CAN协议控制器,该器件对总线提供差动发送能力并对CAN控制器提供差动接收能力。其部具有限流电路,可以防止发送输出级对电源、地或负载短路。另外利用PCA82C250还可以方便地在CAN控制器与驱动器之间建立光电隔离,以实现总线上各个节点间的电气隔离。这是全世界使用最广泛的CAN收发器,因此其更易于掌握。TJA1050是PHILIPS公司生产的、用以替代PCA82C250的高速CAN总线驱动器,其除了具有PCA82C250的主要特性以外,在某些方面还做了很大的改善。但是其不提供待机模式。综合考虑系统设计成本以与性能问题,最终选择PCA82C250作为CAN总线驱动器,其具有的功能特性足以为我们使用,而其又具有更高的性价比,同时关于PCA82C250的资料比较齐全,更利于我们掌握。3.2 系统元器件特性分析3.2.1 STC89C52特性分析STC89C52是一款低功耗、高性能CMOS8位微处理器,具有8K在系统可编程FLASH存储器。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上FLASH允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程FLASH,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。3.2.2 SJA1000特性分析SJA1000芯片是目前广泛流行的CAN总线器件之一,它是应用于汽车和一般工业环境的独立CAN总线控制器。经过简单总线连接的SJA1000可完成CAN总线的物理层和数据链路层的所有功能。其特性如下: 图3-1 SJA1000引脚排布 引脚与PCA82C200独立控制器兼容; 电气参数与PCA82C200独立CAN控制器兼容; 具有PeliCAN模式; 有扩展的接收缓冲器64字节,先进先出(FIFO); 支持CAN2.0A和CAN2.0B协议; 支持11位和29为标志码; 通信速率可达1Mbps; 24MHz时钟频率; 可与不同的微处理器接口; 可编程的CAN输出驱动器配置;SJA1000独立的CAN控制器有2个不同的操作模式:BasicCAN模式和PeliCAN模式。BasicCAN模式是上电后默认的操作模式。因此用PCA82C200开发的已有硬件和软件可以直接在SJA1000上使用,而不用作任何修改。PeliCAN模式是新的操作模式,它能够处理所有CAN2.0B规的帧类型。而且它还提供一些增强功能,例如,SJA1000支持一些错误分析功能,支持系统诊断、系统维护和系统优化,而且这个模式里也加入了对一般CPU的支持和系统自身测试的功能。使SJA1000能应用于更宽的领域。图3-2 CAN控制器SJA1000在系统中的位置本设计采用PeliCAN模式,因此只给出PeliCAN模式增强功能。如表3-1所示。表3-1 PeliCAN模式的增强功能CAN2.0B (active)CAN2.0B active 支持带有29位标识符的网络扩展应用发送缓冲器有11位或29位标识符的报文的单报文发送缓冲器增强的验收滤波器两个验收滤波器模式支持11位和29位标识符的滤波可读的错误计数器支持错误分析在原型阶段和在正常操作期间可用于:诊断、系统维护、系统优化可编程的出错警告界限仲裁丢失捕捉中断支持系统优化包括报文延迟时间的分析单次发送使软件命令最小化和允许快速重载发送缓冲器仅听模式SJA1000能够作为一个认可的CAN 监控器操作,可以分析CAN 总线通信或进行自动位速率检测自测试模式支持全部CAN 节点的功能自测试或在一个系统的自接收SJA1000部由接口管理逻辑、发送缓冲区、接收FIFO、比特流处理器、接收滤波器、定位逻辑器、错误管理逻辑、复位模块和振荡电路这几个部分组成。SJA1000引脚功能:SJA1000中共有28个外部引脚,芯片封装形式可以是DIP_28,也可以是SO_28。AD7-AD0(引脚2、1、28-23):这8个引脚为8位地址/数据端。ALE/AS(引脚3):Intel模式下,该引脚为ALE信号输入端。Motorola模式下,该引脚为AS信号输入端。(引脚4):芯片片选端。/E(引脚5):Intel模式下,该引脚为信号输入端,Motorola模式下,该引脚为E信号输入端。(引脚6):Intel模式下,该引脚为信号输入端,Motorola模式下,该引脚为RD/信号输入端。CLKOUT(引脚7):SJA1000的时钟信号输入端。该时钟频率可以由SJA1000的部时钟控制寄存器进行可编程控制,若时钟控制寄存器的Clock Off位为1,则该引脚无效。VSS1(引脚8):逻辑地。XTAL1、XTAL2(引脚9、10):外部晶振接入端。Mode(引脚11):模式选择端。该引脚用于处理器接口的选择,当该引脚接高电平时,SJA1000工作在Intel模式,当该引脚接低电平时,SJA1000工作在Motorola模式。VDD3(引脚12):输出驱动器的电源端。TX0、TX1(引脚13、14):CAN输出驱动器的输出端0和输出端1。VSS3(引脚15):输出驱动器的接地端。(引脚16):中断信号输出端。当产生事件且部中断寄存器对应位被置位时,该引脚产生低电平,通知处理器产生外部中断,处理器可以通过查看中断事件寄存器来了解发生了何种中断。该引脚为集电极开路,因此多个信号可以直接连接在一起产生“线或”。(引脚17):芯片复位端。VDD2(引脚18):输入比较器的电源端。RX0、RX1(引脚19、20):CAN输入比较器的输入端0和输入端1。VSS2(引脚21):输入比较器的接地端。VDD1 (引脚22):电源端5。3.2.3 总线驱动器PCA82C250PCA82C250是PHILIPS公司的CAN总线驱动接口芯片,是CAN控制器与物理总线之间的接口,它最初是为汽车中的高速应用(达1Mbps)而设计的。该器件可以提供对总线的差动发送和接收功能。其主要特性如下: 与IS011898标准完全兼容; 高速率(最高可达1MbpS); 具有抗恶劣环境下的瞬间干扰,保护总线能力; 过热保护; 总线可连接110个节点。PCA82C250驱动电路部具有限流电路,可防止发送输出级对电源、地或负载短路。虽然短路时功耗增加,但不致使输出级损坏。若结温超过大约160,则两个发送器输出端极限电流将减小,由于发送器是功耗的主要部分,因而限制了芯片的温升。PCA82C250采用双线差分驱动,有助于抑制恶劣电气环境下的瞬变干扰。引脚8(RS)用于选定PCA82C250的工作模式。有3种不同的工作模式可供选择:高速、斜率控制和待机6。表3-2 PCA82C250引脚功能属性引脚标识引脚名称缩写功能描述1TXD发送数据输入2GND接地3Vcc电源4RXD接收数据输出5Vref参考电压输出6CANL低电平CAN电压输入/输出7CANH高电平CAN电压输入/输出8Rs斜率电阻输入第四章 CAN/RS-232总线转换模块设计4.1 硬件设计硬件系统主要由MCU、电平转换器MAX232、CAN总线控制器SJA1000以与CAN总线驱动器PCA82C250组成。终端设备COM接口的RS-232电平经电平转换器MAX232转换为TTL电平后接入MCU的串行口,在MCU中将串行数据转换为并行数据后由IO端口发送给CAN总线控制器SJA1000,然后通过CAN总线驱动器PCA82C250接入CAN总线,这就完成了RS-232到CAN的转换。图4-1 CAN/RS-232总线转换模块硬件原理框图1)单片机与SJA1000接口电路设计在整个的硬件系统中,核心在于MCU与SJA1000的接口电路以与总线驱动器PCA82C250与SJA1000连接电路的设计。SJA1000作为PHILIPS公司生产的一款独立的CAN总线控制器,其新增了一种操作模式PeliCAN,在整个系统的设计中我们采用的就是这种模式,它支持很多新特性的CAN2.0B协议,并兼容PCA82C200。单片机与SJA1000的接口电路设计如图4-2:图4-2 单片机与SJA1000接口电路STC89C52实现对SJA1000的初始化,控制SJA1000的数据收发等功能。SJA1000的AD0-AD7接入单片机的P0端口实现数据通信,接入P2.0实现对SJA1000的片选,、ALE分别与单片机的相应引脚连接。单片机可以采用查询或中断的方式访问SJA1000。为了增强系统的稳定性,采用双晶体振荡器,STC89C52采用11.0592 MHz 的晶体振荡器,SJA1000选用16MHz的晶体振荡器。2)SJA1000与PCA82C250接口电路设计PCA82C250是CAN控制器与物理总线之间的接口,器件可以提供对总线的差动发送和接收功能。RS脚接地,PCA82C250处于高速,使用屏蔽电缆来抗干扰,RS脚串接一个电阻(16.5k-140k)后再接地,用于控制上升和下降斜率,从而减小射频干扰。若PCA82C250处于CAN总线的网络终端,总线接口部分需加一个120的匹配电阻5。其与CAN总线控制器SJA1000的连接电路如图4-3:图4-3 SJA1000与PCA82C250接口电路3)单片机与RS-232接口电路设计MAX232芯片构成RS-232的接口电平转换电路,实现单片机串口的TTL电平与RS-232电平的相互转换,还可以为单片机提供下载端口。接口电路如图4-4:图4-4 单片机与RS-232接口电路4)单片机硬件复位电路设计硬件复位采用电平按键复位方式,在RST上加时间大于2个机器周期的高电平实现复位7。电路设计如图4-5:图4-5单片机硬件复位电路CAN/RS-232总线转换模块总的硬件原理图、PCB图与实物图见附录。4.2软件设计主程序分为初始化和循环检测两个主要部分。初始