《can总线与rs-232、spi总线转换模块的设计》论文_第1页
《can总线与rs-232、spi总线转换模块的设计》论文_第2页
《can总线与rs-232、spi总线转换模块的设计》论文_第3页
《can总线与rs-232、spi总线转换模块的设计》论文_第4页
《can总线与rs-232、spi总线转换模块的设计》论文_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

石河子大学信息科学与技术学院毕业论文课题名称CAN总线与RS232、SPI总线转换模块的设计学生姓名学院信息科学与技术学院专业年级电子信息工程指导教师完成日期CAN总线与RS232、SPI总线转换模块的设计摘要CAN总线因具有高可靠性、实时性等优点,而被广泛用于工业控制、建筑、医学等各个领域。但RS232、SPI总线在现在很多领域仍然占据较大的比重,许多的机器设备具有RS232接口或SPI接口,要想实现具有RS232总线接口或SPI接口的设备的数据在CAN总线上传输,需要转换模块把RS232和SPI总线上的数据转换成CAN总线格式数据。该模块是基于STC89C52型号单片机、独立CAN总线控制器SJA1000和CAN总线收发器PCA825C250设计的。该模块能够实现CAN总线与RS232、SPI总线的转换。整个模块成本低并且稳定。本文详细介绍了该模块的软硬件设计。关键词CAN总线,RS232,SPI,SJA1000CANBUSANDRS232,SPIBUSCONVERSIONMODULEABSTRACTCANBUSFORHIGHPERFORMANCE,HIGHRELIABILITY,REALTIME,ETC,ANDISWIDELYUSEDININDUSTRIALCONTROL,ARCHITECTURE,MEDICINEANDOTHERFIELDSHOWEVER,RS232,SPIBUSARESTILLMANYAREASNOWACCOUNTFORALARGEPROPORTIONOFMACHINERYANDEQUIPMENTWITHMANYRS232INTERFACEORSPIINTERFACE,INORDERTOACHIEVEARS232BUSINTERFACEORSPIINTERFACE,CANBUSINTERFACEDEVICETOWORK,YOUNEEDTOCONVERTTHEMODULETORS232ANDSPIBUSDATAINTOCANBUSCOMMUNICATIONTHEMODULEISBASEDONTHESTC89C52RCSCMMODEL,THEINDEPENDENTCANBUSCONTROLLERSJA1000,CANBUSTRANSCEIVERDESIGNED825C250THEMODULEENABLESCANTURNRS232,SPICANALSOBEACHIEVEDRS232,SPITOCANBUSCONVERSIONTHEENTIREMODULE,LOWCOST,ANDSTABILITYTHISPAPERDESCRIBESTHEMODULESHARDWAREDESIGNANDSOFTWAREDESIGNKEYWORDCANBUS,RS232,SPI,SJA1000,PCA82C250目录第一章引言111课题的研究背景及意义112国内外发展状况113课题研究的主要内容2第二章总线简介及分析321CAN、SPI、RS232总线简介3211CAN总线简介3212SPI总线简介4213RS232总线简介622CAN总线特性分析6221CAN总线的特点及优势6222CAN总线协议8223CAN总线报文帧格式9224CAN总线报文传输结构9225CAN总线错误处理10第三章元器件选型及特性分析1131系统元器件选型分析11311单片机选型11312CAN总线控制器芯片选型12313CAN总线驱动器选型1232系统元器件特性分析13321STC89C52特性分析13322SJA1000特性分析13323总线驱动器PCA82C25016第四章CAN/RS232总线转换模块设计1741硬件设计1742软件设计20第五章CAN/SPI总线转换模块设计2351硬件设计2352软件设计23第六章系统调试25第七章总结27参考文献28致谢29附录A硬件原理图、PCB图、实物图30附录B源程序34第一章引言11课题的研究背景及意义CAN总线在组网和通信功能上的优点以及它的高性价比,决定了它在许多领域都有广阔的应用前景和发展潜力。大型仪器设备系统复杂,需要对多种信息进行采集、处理、控制、输出等操作。如医疗器械CT断层扫描仪,为保证其工作可靠性,在数据通信上要求功能块间可随意进行数据交换,通信可以以广播方式进行,简单经济的硬件接口,通信线尽量少,抗干扰能力强,可靠性高并能自动进行故障识别和自动恢复。但是,这些要求长时间未能得到很好的解决,直至CAN总线技术出现才提供了一个较好的解决方法。CAN与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其具有良好的性能及其独特的设计,CAN总线越来越受到人们的重视。它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商都采用了CAN总线来实现汽车内部控制系统与各检测、执行机构间的数据通信。同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。由于CAN总线的优势越来越明显在工业控制等领域的应用也越来越广泛,但RS232、SPI总线在现在很多领域仍然占据较大的比重,许多设备只具有RS232接口或SPI接口,拥有CAN总线接口的设备还十分的少,为了能让具有RS232、SPI接口的设备也能在CAN总线上工作以适应整个技术的发展,需要设计CAN总线与RS232转换模块1。12国内外发展状况为促进CAN以及CAN协议的发展,1992在欧洲成立了CIACANINAUTOMATION。在CIA的努力推广下,CAN技术在汽车电子控制系统、电梯控制系统、安全监控系统、医疗仪器、纺织机械、船舶运输等方面均得到了广泛的应用。现已有400多家公司加入了CIA,CIA已成为全球应用CAN技术的权威。根据国内外资料报道,CAN技术已应用于家用电器和智能楼宇以及小区建设中。如安防系统、抄表系统、家电控制等。它投资少,每个节点可以随机访问,通信速度完全满足要求,且在这类应用中数据交换量都很少。适当的网关如CAN与TCP/IP协议的转换,可以使一个居室或一栋大楼的现场CAN信息转变为互联网的形式外传,或反过来通过这类网关把外部网传来的信息转换为CAN的形式,此即实现了所谓的远程控制。随着CAN总线的普及应用,有必要设计CAN总线与RS232、SPI总线的转换设备,而且这种技术也日趋成熟,已经完全实现商业化生产,在各个领域得到广泛的运用1。13课题研究的主要内容课题研究的主要内容有1)CAN总线的联网通信,通过系统的设计实现CAN节点的相互通信。2)实现CAN总线数据与RS232总线数据的相互转换。3)实现CAN总线数据与SPI总线数据的相互转换。第二章总线简介及分析21CAN、SPI、RS232总线简介CAN、SPI、RS232总线有着各自的特点,在不同的场合根据需求选择合适的总线通信是系统联网的前提条件。因此,了解总线的结构特征是进行模块设计的首要任务,通过对总线的多方了解分析其各种通信参数,结合实际的需求分析确定系统总线方案的选型,并对比三种总线的通信特征,为实现总线转换做好前期的准备。211CAN总线简介CAN是CONTROLLERAREANETWORK的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986年德国电气商博世公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898及ISO11519进行了标准化,现在欧洲已是汽车网络的标准协议。CAN总线是一种串行数据通信协议,其最高波特率可达1MB/S,因此具有高的传输速率。它是一种有效支持分布式控制或实时控制的串行通信网络,其对通信数据块进行编码,可以多主方式工作,可在各节点之间实现自由通信;采用非破坏性仲裁技术,有效避免了总线冲突;采用短帧结构,数据传输时间短,受干扰的概率低,重新发送的时间短。较之目前许多基于R线构建的分布式控制系统而言,基于CAN总线的分布式控制系统在以下方面具有明显的优越性1)网络各节点之间的数据通信实时性强。2)缩短了开发周期。3)完成对通信数据的帧处理。4)使网络内的节点个数在理论上不受限制。5)可在各节点之间实现自由通信。6)结构简单。综合来看,CAN总线在通信组网方面具有极大的优势,可以减少组网过程中的工作量,大大的提高工作效率2。212SPI总线简介串行外围设备接口SPI(SERIALPERIPHERALINTERFACE)总线技术是MOTOROLA公司推出的一种同步串行接口,MOTOROLA公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。SPI用于CPU与各种外围器件进行全双工、同步串行通讯。SPI可以同时发出和接收串行数据。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是串行时钟线(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线。四种CS引脚的功能如下SCK时钟信号,由主设备产生;MOSI主设备数据输出,从设备数据输入;MISO主设备数据输入,从设备数据输出;从设备使能信号,由主设备控制。CS当SPI工作时,移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。其典型系统框图如图21所示。图21SPI系统框图SPI主要特点有可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL0,串行同步时钟的空闲状态为低电平;如果CPOL1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI总线接口时序如图22及23所示3。图22CPHA0时SPI总线数据传输时序图23CPHA1时SPI总线数据传输时序213RS232总线简介RS232C是一个已制定很久的标准,最初是为远程通信连接数据终端设备DTEDATATERMINALEQUIPMENT与数据通信设备DCE(DATACOMMUNICATIONEQUIPMENT而制定的。RS232C接口最大传输速率为20KBPS,线缆最长为15米。RS232C接口通常被用于将电脑信号输入控制,当通信距离较近时,可不需要MODEM,通信双方可以直接连接,这种情况下,只需使用少数几根信号线。EIARS232C对电器特性、逻辑电平和各种信号线功能都作了规定。在TXD和RXD上逻辑1MARK3V15V;逻辑0SPACE315V。以上规定说明了RS232C标准对逻辑电平的定义。对于数据(信息码),逻辑“1”(传号)的电平低于3V,逻辑“0”(空号)的电平高于3V;EIARS232C与TTL转换。EIARS232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIARS232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL与EIA双向电平转换2。22CAN总线特性分析221CAN总线的特点及优势在上一节中已经对CAN总线做了一个简要的介绍,CAN总线作为一种串行通信协议,有着其它总线协议所不具有的一些特征。下面开始从技术参数方面分析CAN总线规范。CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。使网络内的节点个数在理论上不受限制。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码由11位或29位二进制数组成,因此可以定义不同的数据块,这种按照数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。CAN总线有如下基本特点废除传统的站地址编码,代之以对通信数据块进行编码,可以多主方式工作;采用非破坏性仲裁技术,当两个节点同时向网络上传送数据,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响继续传输数据,有效避免了总线冲突;采用短帧结构,每一帧的有效字节数为8个,数据传输时间短,受干扰的概率低,重新发送的时间短;每帧数据都有CRC校验及其他检错措施,保证了数据传输的高可靠性,适于在高干扰环境下使用;节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其他操作不受影响;可以点对点,一对多及广播集中方式传送和接收数据。分析以上CAN总线的特点总结得到其主要优点有1)废除传统的站地址编码,代之以对通信数据块进行编码,可以多主方式工作。这样的方式减小了数据通信过程中寻址的复杂度,可根据报文的ID决定接收或屏蔽该报文,同时这种工作方式下避免了象单片机多机通信情况下的只能有一个主机的缺陷,这样更有利于数据的传输管理。2)具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点。这些特点是串口通信不能相比拟的串口通信受到传输距离的限制,而传输速度也是有限的,继而也就影响到了传输的实时性。抗干扰能力以及经济上的考虑CAN总线也是一个不错的选择。3)采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作。货场的工作环境比较恶劣,尤其是噪声比较大,这在初期的调研中得到或验证,因此系统的设计必须考虑到噪声干扰的因素,而CAN总线的特性恰恰解决了这一问题,它能够适应这种高噪声的恶劣环境。4)具有优先权和仲裁功能,多个控制模块通过CAN控制器挂到CANBUS上,形成多主机局部网络。这一点和前面的第一点是有所联系的,在多主式的通信过程中处理好各个模块的数据传输优先级以及数据的仲裁是十分关键的一步,CAN总线提供了这么好的一个管理“平台”。5)可靠的错误处理和检错机制,发送的信息遭到破坏后,可自动重发。这一特点保证了数据传输的可靠性以及突发错误的处理能力。数据在传输的过程中可能存在着帧信息丢失之类的问题,这就需要一个很好的解决方案来保证数据传输的有效性,CAN总线的管理在数据的传输过程中可以做到很好的错误检测以及通过数据重发来保证有效性。6)节点在错误严重的情况下具有自动退出总线的功能。这样就保证了系统在出错的情况下运行而导致的系统损坏。7)报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。这种报文格式优化了帧信息的结构,不必象串口通信那样在报文中必须包含目的节点以及源节点的地址信息2。222CAN总线协议CAN总线协议主要描述设备之间的信息传递方式,从结构上可分成3个层次,分别对应OSI网络模型的最低两层数据链路层和物理层。CAN总线协议层次结构由高到低如表21所示。表21CAN总线协议层次结构协议层对应OSI模型说明LLC逻辑链路控制子层,用于为链路中的数据传输提供上层控制手段。MAC数据链路层媒体访问控制子层,用于控制帧结构、仲裁、错误界定等数据传输的具体实现。物理层物理层物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输。LLC层和MAC层也可以看作是CAN总线数据链路层的两个子层。其中LLC层接收MAC层传递的报文,主要完成报文滤波、过载通知以及恢复管理等工作。而MAC层则为数据报文的传输进行具体的控制,包括帧结构控制、总线仲裁、错误检测、出错界定、报文收发控制等工作。物理层定义了信号如何实现传输,因此涉及到位时间、位编码、同步的解释,CAN总线协议并未对物理层部分进行具体的规定4。223CAN总线报文帧格式CAN总线报文的帧格式有两种,不同之处为标识符域的长度不同含有11位标识符的帧称之为标准帧,而含有29位标识符的帧为扩展帧。224CAN总线报文传输结构报文传输由以下4个不同的帧类型所表示。1)数据帧数据帧携带数据从发送器至接收器。数据帧由7个不同的位场组成帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结尾。数据场的长度可以为0。数据帧(或远程帧)通过帧间空间与前述的各帧分开。2)远程帧总线单元发出远程帧,请求发送具有同一识别符的数据帧。远程帧由6个不同的位场组成帧起始、仲裁场、控制场、CRC场、应答场、帧末尾。通过发送远程帧,作为某数据接收器的站通过其资源节点对不同的数据传送进行初始化设置。3)错误帧任何单元检测到总线错误就发出错误帧。错误帧由两个不同的场组成。第一个场用作为不同站提供的错误标志(ERRORFLAG)的叠加。第二个场是错误界定符。为了能正确地终止错误帧,“错误被动”的节点要求总线至少有长度为3个位时间的总线空闲(如果“错误被动”的接收器有本地错误的话)。因此,总线的载荷不应为100。有两种形式的错误标志,主动错误标志(ACTIVEERRORFLAG)和被动错误标志(PASSIVEERRORFLAG)。4)过载帧过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。过载帧包括两个位场过载标志和过载界定符。有两种过载条件都会导致过载标志的传送(1)接收器的内部条件(此接收器对于下一数据帧或远程帧需要有一延时);(2)间歇场期间检测到一“显性”位。由过载条件1而引发的过载帧只允许起始于所期望的间歇场的第一个位时间开始。而由过载条件2引发的过载帧应起始于所检测到“显性”位之后的位。225CAN总线错误处理1)错误检测有以下5种不同的错误类型(这5种错误不会相互排斥)。(1)位错误(BITERROR)。单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误。但是在仲裁场(ARBITRATIONFIELD)的填充位流期间或应答间隙(ACKSLOT)发送一“隐性”位的情况是例外的。此时,当监视到一“显性”位时,不会发出位错误。当发送器发送一个被动错误标志但检测到“显性”位时,也不视为位错误。(2)填充错误(STRUFFERROR)。如果在使用位填充法进行编码的信息中,出现了第6个连续相同的位电平时,将检测到一个填充错误。(3)CRC错误(CRCERROR)。CRC序列包括发送器的CRC计算结果。接收器计算CRC的方法与发送器相同。如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误。(4)形式错误(FORMERROR)。当一个固定形式的位场含有1个或多个非法位,则检测到一个形式错误。备注接收器的帧末尾最后一位期间的显性位不被当作帧错误(5)应答错误(ACKNOWLEDGMENTERROR)。只要在应答间隙(ACKSLOT)期间所监视的位不为“显性”,则发送器会检测到一个应答错误。2)错误信号的发出检测到错误条件的站通过发送错误标志指示错误。对于“错误主动”的节点,错误信息为“主动错误标志”,对于“错误被动”的节点,错误信息为“被动错误标志”。站检测到无论是位错误、填充错误、形式错误,还是应答错误,这个站会在下一位时发出错误标志信息。只要检测到的错误的条件是CRC错误,错误标志的发送开始于ACK界定符之后的位(其他的错误条件除外)5。第三章元器件选型及特性分析31系统元器件选型分析由于系统的总线已经确定,是针对总线的转换。所以这里系统方案的选型则主要是元器件的选择,选择合适的元器件有利于系统设计的便利性以及稳定性。311单片机选型待选的单片机主要有三种STC89C52,STC12C5410AD以及AT89S52。1)STC89C52STC89C52是一款基于51内核的51系列单片机,其指令代码完全兼容传统的8051单片机,与工业标准的MCS51指令集和输出管脚相兼容。在使用的过程中采用ISP(在系统可编程),无需专用的编程器,可通过串口(P30、P31)直接下载用户程序,大大的方便了系统程序的调试。另外STC89C52价格低廉,可多次重复擦写使用,具有很高的性价比。2)STC12C5410ADSTC12C5410AD与STC89C52相比,其主要增加了SPI同步通信接口,可以更为方便的实现SPI通信,但是其只有20、28、32三种引脚封装,无读写时序控制引脚。3)AT89S52AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程FLASH存储器。使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上FLASH允许程序存储器在系统可编程,亦适于常规编程器。AT89S52在众多嵌入式控制应用系统中得到广泛应用。但是AT89S52在使用的过程中需要使用的专用编程器下载用户程序,这一点会增加设计的工作量。综合以上三种单片的特性,最终选择STC89C52作为系统的控制芯片,其外部扩展资源比较丰富,与AT89S52相比不需专用的编程器下载用户程序,大大的方便系统程序的调试,低廉的价格使其具有更高的性价比。虽然其不具有SPI同步通信接口,但是可以通过软件模拟实现SPI协议的同步通信。312CAN总线控制器芯片选型CAN就是总线型结构的一种适合工业现场自动控制的计算机局域网络。在网络的层次结构中,数据链路层和物理层是保证通信质量至关重要、不可或缺的部分,也是网络协议中最复杂的部分。CAN控制器就是扮演这个角色,它是以一块可编程芯片上的逻辑电路的组合来实现这些功能,对外它提供了与微处理器的物理线路的接口。通过对它的编程,MCU可以设置它的工作方式,控制它的工作状态,进行数据的发送和接收,把应用层建立在它的基础上。目前,一些知名的半导体厂家都生产CAN控制器芯片。其类型一种是独立的,一种是和微处理器做在一起的。前者使用上比较灵活,它可以与多种类型的单片机的各类标准总线进行接口组合。后者在许多特定情况下,使电路设计简化和紧凑,效率提高。在本课题的系统设计中,针对单片机的选型,CAN总线控制器芯片选用独立的控制芯片。SJA1000是一款我们比较熟悉的CAN总线控制器芯片,其在我国市面上容易购买,其具有高的性能,容易掌握,价格也比较便宜。综合考虑,最终选择SJA1000作为CAN总线的控制器芯片5。313CAN总线驱动器选型CAN总线驱动器提供了CAN控制器与物理总线之间的接口,是影响系统网络性能的关键因素之一。PCA82C250是一款CAN协议控制器,该器件对总线提供差动发送能力并对CAN控制器提供差动接收能力。其内部具有限流电路,可以防止发送输出级对电源、地或负载短路。另外利用PCA82C250还可以方便地在CAN控制器与驱动器之间建立光电隔离,以实现总线上各个节点间的电气隔离。这是全世界使用最广泛的CAN收发器,因此其更易于掌握。TJA1050是PHILIPS公司生产的、用以替代PCA82C250的高速CAN总线驱动器,其除了具有PCA82C250的主要特性以外,在某些方面还做了很大的改善。但是其不提供待机模式。综合考虑系统设计成本以及性能问题,最终选择PCA82C250作为CAN总线驱动器,其具有的功能特性足以为我们使用,而其又具有更高的性价比,同时关于PCA82C250的资料比较齐全,更利于我们掌握。32系统元器件特性分析321STC89C52特性分析STC89C52是一款低功耗、高性能CMOS8位微处理器,具有8K在系统可编程FLASH存储器。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上FLASH允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程FLASH,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。322SJA1000特性分析SJA1000芯片是目前广泛流行的CAN总线器件之一,它是应用于汽车和一般工业环境的独立CAN总线控制器。经过简单总线连接的SJA1000可完成CAN总线的物理层和数据链路层的所有功能。其特性如下引脚与PCA82C200独立控制器兼容;电气参数与PCA82C200独立CAN控制器兼容;具有PELICAN模式;有扩展的接收缓冲器64字节,先进先出(FIFO);支持CAN20A和CAN20B协议;支持11位和29为标志码;通信速率可达1MBPS;24MHZ时钟频率;可与不同的微处理器接口;可编程的CAN输出驱动器配置;图31SJA1000引脚排布SJA1000独立的CAN控制器有2个不同的操作模式BASICCAN模式和PELICAN模式。BASICCAN模式是上电后默认的操作模式。因此用PCA82C200开发的已有硬件和软件可以直接在SJA1000上使用,而不用作任何修改。PELICAN模式是新的操作模式,它能够处理所有CAN20B规范的帧类型。而且它还提供一些增强功能,例如,SJA1000支持一些错误分析功能,支持系统诊断、系统维护和系统优化,而且这个模式里也加入了对一般CPU的支持和系统自身测试的功能。使SJA1000能应用于更宽的领域。图32CAN控制器SJA1000在系统中的位置本设计采用PELICAN模式,因此只给出PELICAN模式增强功能。如表31所示。表31PELICAN模式的增强功能CAN20BACTIVECAN20BACTIVE支持带有29位标识符的网络扩展应用发送缓冲器有11位或29位标识符的报文的单报文发送缓冲器增强的验收滤波器两个验收滤波器模式支持11位和29位标识符的滤波可读的错误计数器可编程的出错警告界限支持错误分析在原型阶段和在正常操作期间可用于诊断、系统维护、系统优化仲裁丢失捕捉中断支持系统优化包括报文延迟时间的分析单次发送使软件命令最小化和允许快速重载发送缓冲器仅听模式SJA1000能够作为一个认可的CAN监控器操作,可以分析CAN总线通信或进行自动位速率检测自测试模式支持全部CAN节点的功能自测试或在一个系统内的自接收SJA1000内部由接口管理逻辑、发送缓冲区、接收FIFO、比特流处理器、接收滤波器、定位逻辑器、错误管理逻辑、复位模块和振荡电路这几个部分组成。SJA1000引脚功能SJA1000中共有28个外部引脚,芯片封装形式可以是DIP_28,也可以是SO_28。AD7AD0(引脚2、1、2823)这8个引脚为8位地址/数据端。ALE/AS(引脚3)INTEL模式下,该引脚为ALE信号输入端。MOTOROLA模式下,该引脚为AS信号输入端。(引脚4)芯片片选端。CS/E(引脚5)INTEL模式下,该引脚为信号输入端,MOTOROLA模式下,RDRD该引脚为E信号输入端。(引脚6)INTEL模式下,该引脚为信号输入端,MOTOROLA模式下,WW该引脚为RD/信号输入端。RCLKOUT(引脚7)SJA1000的时钟信号输入端。该时钟频率可以由SJA1000的内部时钟控制寄存器进行可编程控制,若时钟控制寄存器的CLOCKOFF位为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)中断信号输出端。当产生事件且内部中断寄存器对应位被INT置位时,该引脚产生低电平,通知处理器产生外部中断,处理器可以通过查看中断事件寄存器来了解发生了何种中断。该引脚为集电极开路,因此多个信号可以直接连接在一起产生“线或”。INT(引脚17)芯片复位端。RSTVDD2(引脚18)输入比较器的电源端。RX0、RX1(引脚19、20)CAN输入比较器的输入端0和输入端1。VSS2(引脚21)输入比较器的接地端。VDD1(引脚22)电源端5。323总线驱动器PCA82C250PCA82C250是PHILIPS公司的CAN总线驱动接口芯片,是CAN控制器与物理总线之间的接口,它最初是为汽车中的高速应用达1MBPS而设计的。该器件可以提供对总线的差动发送和接收功能。其主要特性如下与IS011898标准完全兼容;高速率最高可达1MBPS;具有抗恶劣环境下的瞬间干扰,保护总线能力;过热保护;总线可连接110个节点。PCA82C250驱动电路内部具有限流电路,可防止发送输出级对电源、地或负载短路。虽然短路时功耗增加,但不致使输出级损坏。若结温超过大约160,则两个发送器输出端极限电流将减小,由于发送器是功耗的主要部分,因而限制了芯片的温升。PCA82C250采用双线差分驱动,有助于抑制恶劣电气环境下的瞬变干扰。引脚8RS用于选定PCA82C250的工作模式。有3种不同的工作模式可供选择高速、斜率控制和待机6。表32PCA82C250引脚功能属性引脚标识引脚名称缩写功能描述1TXD发送数据输入2GND接地3VCC电源4RXD接收数据输出5VREF参考电压输出6CANL低电平CAN电压输入/输出7CANH高电平CAN电压输入/输出8RS斜率电阻输入第四章CAN/RS232总线转换模块设计41硬件设计硬件系统主要由MCU、电平转换器MAX232、CAN总线控制器SJA1000以及CAN总线驱动器PCA82C250组成。终端设备COM接口的RS232电平经电平转换器MAX232转换为TTL电平后接入MCU的串行口,在MCU中将串行数据转换为并行数据后由IO端口发送给CAN总线控制器SJA1000,然后通过CAN总线驱动器PCA82C250接入CAN总线,这就完成了RS232到CAN的转换。RXDTWALE07P2CS1VFNHOUIM3J85图41CAN/RS232总线转换模块硬件原理框图1)单片机与SJA1000接口电路设计在整个的硬件系统中,核心在于MCU与SJA1000的接口电路以及总线驱动器PCA82C250与SJA1000连接电路的设计。SJA1000作为PHILIPS公司生产的一款独立的CAN总线控制器,其新增了一种操作模式PELICAN,在整个系统的设计中我们采用的就是这种模式,它支持很多新特性的CAN20B协议,并兼容PCA82C200。单片机与SJA1000的接口电路设计如图42AD023145678CSRWLEINTOUX9MVDSJP/G图42单片机与SJA1000接口电路STC89C52实现对SJA1000的初始化,控制SJA1000的数据收发等功能。SJA1000的AD0AD7接入单片机的P0端口实现数据通信,接入P20实现CS对SJA1000的片选,、ALE分别与单片机的相应引脚连接。单RDWINT片机可以采用查询或中断的方式访问SJA1000。为了增强系统的稳定性,采用双晶体振荡器,STC89C52采用110592MHZ的晶体振荡器,SJA1000选用16MHZ的晶体振荡器。2)SJA1000与PCA82C250接口电路设计PCA82C250是CAN控制器与物理总线之间的接口,器件可以提供对总线的差动发送和接收功能。RS脚接地,PCA82C250处于高速,使用屏蔽电缆来抗干扰,RS脚串接一个电阻(165K140K)后再接地,用于控制上升和下降斜率,从而减小射频干扰。若PCA82C250处于CAN总线的网络终端,总线接口部分需加一个120的匹配电阻5。其与CAN总线控制器SJA1000的连接电路如图4347KR10AD23568CSWLEINTOUX9MVDSJFHGPEARN图43SJA1000与PCA82C250接口电路3)单片机与RS232接口电路设计MAX232芯片构成RS232的接口电平转换电路,实现单片机串口的TTL电平与RS232电平的相互转换,还可以为单片机提供下载端口。接口电路如图44OCTU/图44单片机与RS232接口电路4)单片机硬件复位电路设计硬件复位采用电平按键复位方式,在RST上加时间大于2个机器周期的高电平实现复位7。电路设计如图45VC10KR89EST234SWDPTUF7图45单片机硬件复位电路CAN/RS232总线转换模块总的硬件原理图、PCB图及实物图见附录。42软件设计主程序分为初始化和循环检测两个主要部分。初始化部分完成对RS232串口和CAN总线的初始化,并开启串口中断。循环检测部分通过调用CAN总线接收函数CAN_RECEIVE和RS232接收函数RS232_RECEIVE检测缓冲区内是否收到数据,如果CAN总线有数据接收则调用RS232发送函数PUT_CHAR。RS232总线有数据接收则会调用CAN总线发送函数CAN_TRANS转发数据。串口数据采用中断接收,串口数据的发送和CAN总线数据的收发都采用查询的方式。此外,由于CAN总线的速率与RS232接口的速率并不相同,因此还需在单片机的片外数据存储器RAM定义两个数组,其中一个用于接收RS232总线的数据,另一个用于接收来自CAN总线的数据,作为双方转换的数据缓冲区8。1)程序初始化程序初始化包括两部分CAN节点初始化和单片机串口初始化。(1)CAN节点初始化独立CAN控制器SJA1000必须先复位,而且是低电平复位,在每次开始工作时给SJA1000的复位引脚一个复位电平,使其进入复位模式。CAN控制器SJA1000的初始化包括设置工作方式、接收滤波方式、接收屏蔽寄存器、接收代码寄存器、波特率参数和中断允许寄存器。初始化设置完成后,SJA1000则进入工作状态。SJA1000寄存器初始化,首先要将其模式寄存器MOD复位模式位置为1,再通过时钟分频寄存器CDR选择PELICAN工作模式,同时关闭时钟输出CLOCKOUT;通过中断允许寄存器IER开启发送中断、溢出中断和错误警告中断;向接收屏蔽寄存器AMR和接收代码ACR寄存器赋初值;通过总线定时寄存器0BTR0和总线定时寄存器1BTR1设置波特率;为输出控制寄存器OCR赋初值;通过接收缓冲器起始地址寄存器RBSA来设置接收缓冲器FIFO的起始地址;清除发送错误计数寄存器TXERR;清除错误代码捕捉寄存器ECC,最后再次选择方式寄存器MOD,设置单滤波,并返回工作状态。(2)单片机串口初始化通过对工作方式控制寄存器(TMOD)和串口控制寄存器(SCON的设置来选择定时器和工作方式及串行通信的波特率,并把中断允许寄存器(IE)中的ES和EA置位选择用中断的方式来接收和发送串口数据9。2)RS232报文的接收和发送在程序的开始定义一个CANBUFF数组和COMBUFF数组分别用来存放CAN总线和RS232总线接收的数据,定义四个指针分别指向这两个数组的接收和发送。进入循环,首先调用CAN_RECEIVE函数,通过访问SJA1000的状态寄存器来判别CAN控制器的状态。当SJA1000的接收缓存区有有效报文时则将缓存区的数据接收到RBUFFER数组里函数并返回1,当监测到函数返回值为1,把RBUFFER数组的数赋值给CANBUFF数组,将指向CANBUFF的接收指针CANRXP加上RBUFFER数组中数据的个数。由于CANRXP的改变导致了指向CANBUFF数组的发送指针CANTXP不相等,就说明有CANBUFF数组有CAN数据进来,这时候就调用PUT_CHAR函数把数据通过串口发送出去。串口数据的接收采用中断的方式,当有数据通过串口传送进来时,程序就开始CAN控制器接收缓存区有有效数据CAN节点初始化将数据接收到单片机并通过PUT_CHAR函数发送到串口上Y串口有数据接收将数据从SBUFF中读出并通过CAN_TRANS发到总线上图46CAN/RS232总线转换模块软件主程序流程图会进入串口中断服务程序,进入中断服务程序首先关串口中断,然后把RI为清零,把SBUF中的数据写到COMBUFF数组中接收指针COMRXP加1,退出服务程序之前再把串口中断打开。3)CAN报文的接收和发送当有数据从CAN总线传送进来,首先根据报文的第一个字节帧信息来判断是标准帧还是扩展帧,标准帧有两个标识码而扩展帧有四个标识码,帧信息的最后四位代表该报文数据字节的个数,字节数不得超过8个,当超过8个时也当8个进行处理。报文的标识码必须和初始化设定好的的接收代码寄存器和接收屏蔽寄存器的值相比较,符合条件的报文允许进入SJA1000的接收缓存区,不符合条件的不接收。当有报文进入接收缓存区时,中断寄存器和状态寄存器相应位都置1,通过判断寄存器状态来判断SJA1000是否存在有效报文,如果有有效报文则调用CAN_RECEIVE函数接收数据。如果检测到COMBUFF数组两个指针不相等,就说明串口有数据发送过来,COMBUFF数组里有待发送数据,首先判断要发送的是什么帧格式,以及发送的数据有几个字节,然后从数组里截取这个报文然后通过CAN_TRANS这个函数把待发数据写到SJA1000的数据发送缓存区里,然后通过置位发送请求位,当总线闲时把数据通过CAN总线驱动器PCA82C250发送到CAN总线上。这样就完成了数据格式的转换10。第五章CAN/SPI总线转换模块设计CAN/SPI总线转换模块的设计与CAN/RSRS232转换模块的设计基本相似,在CAN总线收发部分以及单片机最小系统的硬件设计是相同的,所以不做详细介绍,如有需要可参考上一小节CAN/RSRS232转换模块的设计。51硬件设计P14567RXDTWALE02CSVFNHOUIKM3口J8图51CAN/SPI总线转换模块硬件原理框图由于系统采用的单片机STC89C52自身不带SPI接口,所以我们采用普通的IO接口模拟SPI接口进行数据的通信。该模块的硬件原理图、PCB图及实物图见附录。52软件设计程序可分为初始化、CAN数据收发和SPI总线数据收发。选用单片机是STC89C52,这款单片机本身不具有SPI接口,然而我们需要把从CAN总线接收来的数据通过SPI总线发送出去,我们采取用单片机的端口引脚来模拟SPI总线的方法来弥补。1)程序初始化程序初始化包括CAN总线的初始化、SPI总线的初始化。CAN控制器SJA1000的初始化包括设置工作方式、接收滤波方式、接收屏蔽寄存器和接收代码寄存器、波特率参数和中断允许寄存器。初始化设置完成后,SJA1000则进入工作状态,开始工作,独立CAN控制器SJA1000必须先复位,而且是低电平复位,在每次开始工作时给SJA1000的复位引脚一个复位电平低电平,使其进入复位模式。SPI总线的初始化要根据硬件电路图,把SCK、MOSI、MISO、CS和单片机的端口引脚对应起来。2)CAN总线数据的接收和SPI总线的发送我们采取查询的方式来CAN总线数据的接收和SPI总线的发送实现,当SJA1000的数据接收缓存区有有效报文时,就通过调用CAN_RECEIVE函数把数据接收缓存区的数据接收进来,然后将从CAN总线接收来的数据再通过SPI总线发送出去,由于SPI总线发送是通过MOSI在SCK上升沿时一位一位的传送出去的,所以进入SPI发送程序里首先把SCK清零,然后把要发送的数据和0X80相与并把结果发到MOSI上,SCK置位,SCK在一次上升沿到来时把MOSI的数据位发送到对方的接收缓存寄存器了,接着要发送的数据左移一位,这样循环八次一个字节就发送出去了,而且这个字节的数据是从高位从低位一次传送的。3)SPI数据的接收和CAN总线数据的发送SPI总线与无线收发器NRF24L01模块相连,NRF24L01有一个INT引脚,当有数据往单片机发送时,此引脚被清零。当监测到INT引脚为低电平时,说明有数据通过SPI总线发送到单片机,此时调用SPI接收函数,SPI总线在SCK的下降沿到来时从MISO接收一位,所以进入SPI接收函数时先把SCK置位,然后把SCK清零,在SCK下降沿到来时就把数据接收到MISO上了,先把变量赋值0X00并与MISO相与然后把变量向左移动一位,这样循环八次一个字节的数据就接收完了3。当SPI总线有数据接收进来,就调用CAN_TRANS函数把SPI接收的数据传送到开始SJA1000接收缓存区存在有效报文从SJA1000的接收缓存区接收数据并通过SPI总线发送出去SPI总线是否有数据接收通过CAN_TRANS函数把数据发送到CAN总线上。YYNN图52CAN/SPI总线转换模块软件主程序流程图CAN总线上。第六章系统调试在前面的小节中已详细的介绍了系统模块的设计,接下来介绍模块的调试过程中遇到的问题,以及问题的解决过程和方法。总线的转化主要涉及的是数据的通信过程,因此传输中的帧格式定义是相当重要的,在调试的过程中应该注意。模块的调试过程中微小的疏忽都可能导致数据传输丢帧或接接收错误。在设计以及调试的过程中遇到了很多问题,正是通过不断的解决这些问题设计才能向前开展,才最终调试成功。遇到的主要问题主要有1)在确定模块代码正确的前提下,代码写入单片机后发现SJA1000不工作。检查电路后,发现单片机的复位引脚和SJA1000的复位引脚接在同一个硬件复位电路上了,而单片机是高电平复位,SJA1000是低电平复位,那么SJA1000相当于没有复位,所以其不能正常工作。我们把SJA1000复位引脚接到单片机P20引脚,在程序开头给P20引脚给10MS低电平进行软件置位。这样每次工作前先对SJA1000进行软件复位,使其能正常工作。2)在调试CAN/SPI转换模块过程中,发现能通过SPI总线向无线模块(我们使用基于SPI的无线模块测试该模块)能发送数据,但从无线模块接收的数据都是0XFF。能接收到0XFF说明单片机检测到了无线模块INT的引脚有信号置位,但数据没能正确通过MISO进入单片机,我们发现MISO接到了P16口,而单片机的P1口的默认值为高电平,与无线模块的要求电平相反,不能正确的接收数据。图61CAN/RS232模块调试图62CAN/SPI模块调试我们考虑将MISO接到P21引脚,再调试时发现能模块可以正确的接收数据。3)调试CAN/SPI转换模块过程中,为了测试接收数据的正确性把无线模块发过来的数据通过串口调试助手进行显示,发现数据会丢失。在测试过程中通过串口调试助手通过CAN/RS232转换模块向CAN总线上发送数据,然后经过CAN/SPI转换模块送入SPI总线上通过无线模块发送到另一个无线接收模块,然后通过串口调试

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论