版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连海事大学毕业论文基于NMEA2000的罗经复示器设计基于NMEA2000的罗经复示器设计1基于NMEA2000的罗经复示器设计第1章绪论经济的迅速发展,科学技术的不断进步促使社会中各行各业都在不断地发展壮大,特别是各种高、新、尖、精的技术应用,而所有的一切都离不开控制系统[1]。如何能够使控制系统趋向小型化、功能多样化、支持GM10,成为了实际应用中的重要课题。CAN通信就是在这样的背景下应运而生。尤其是20世纪60年代末,随着现代工业生产自动化水平的日益提高及微电子技术的飞速发展,对工业控制器的要求也越来越高。CAN[Control(Controller)AreaNetwork]是一种有效支持分布式控制或实时控制的串行通信网络,最初由德国Bosch公司80年代用于汽车内部测试和控制仪器之间的数据通信。目前CAN总线规范已被国际标准化组织ISO制订为国际标准ISO11898,并得到了Motorola,Intel,Philips等大半导体器件生产厂家的支持,迅速推出各种集成有CAN协议的产品[2]。目前CAN总线主要用于汽车自动化领域,如发动机自动点火、注油、复杂的加速刹车控制(ASC)、抗锁定刹车系统(ABS)和抗滑系统等。BENZ、BMW等著名汽车上已经采用CAN来满足上述功能。在工业过程控制领域,CAN也得到了广泛的应用。NMEA2000是国家航海电子联合会(NMEA)在J1939基础上提出的航海应用中控制单元间进行数据交换的通讯协议[3]。带NMEA2000选项的CANoe可以应用在从设计到实现的整个开发过程中。在设计阶段创建的模型可以在以其他形式不断的重复利用。例如,可以利用模型校验实现,随后在最终测试阶段作为功能测试。用户不需要熟悉NMEA2000协议,只需集中注意力在创建仿真模型的实现或者数据分析。它可以显著的提高开发进程的质量,提高数据分析的效率。由于海上的环境复杂,对仪器的要求较高,且船上的空间宝贵,因此虽然CAN通信已经应用于陆上的很多设备中,技术已经较为成熟,但仍然未应用于船舶通信中。现在船舶控制仍然采用DCS系统。因此,FCS系统能应用于船舶控制已经在业界达成了广泛的共识。1.1课题研究的背景及意义此设计题目是针对船舶的罗经的模拟通信进行CAN协议的转换,实现CAN通信。在设计伊始,为了更加明晰船舶罗经的工作原理,我用了一周的时间专程去了锦州航星集团,在有关技术人员的指导下,对船用控制仪器仪表有了一个大致的了解,对船舶控制所涉及到的原理有了概念式的认识,对船舶罗经的工作原理有了比较深入的掌握,并把所设计的有关内容做了整体的记录,参观过程中通过技术人员的指导和结合自身的实际情况,对本次设计按照如下步骤进行:首先:依照AT89C51的特点,添加看门狗元件X5045,构成单片机最小系统,实现上电复位控制、电源电压监控、看门狗定时器的功能。其次:进行SJA1000控制器和82C250收发器的整体设计,实现上位机与现场微处理器之间的数据通信。再次:选择显示电路的芯片元件。由于ZLG7290能够承担显示部分的动态显示程序,减轻了单片机工作的负担,且使用简单,电路可靠,因此本次设计使用ZLG7290构成的矩阵键盘和四数码管集成的7SEG-MPX4-CC元件构成显示电路。以上是理论知识的体现而更重要的是在设计中培养自己运用所学的知识解决实际问题的能力和创新精神,增强工程观,在设计过程中主要立足于应用所学基本理论和专业知识,大胆地运用新理论、新技术去分析解决实际问题,以便更好地适应工作的需要。所有的设计查阅资料是必不可少的,而资料的获取应以实际为准,作为一名初次设计者,设计之前应具备一定的设计能力,但是由于缺乏经验,知识体系的不够完善等因素,在设计过程中也有缺陷。因此设计的电路无法直接应用于实际电路中,应稍加改动。了解整个设计的目的、内容和基本要求进行设计的资料准备。资料准备主要通过查阅(包括上网查问)文献资料和参加生产实习两条渠道进行。此设计充分吸收专业理论知识,考虑自己毕业设计的选题方向,有目的、有计划地查阅与选题方向有关的文献资料,特别是在参加生产实习的过程中有意识地搜集生产过程及新技术、新设备、改革新成果的应用等方面资料,这也是为毕业设计课题收集资料的最重要的途径。选定题目后,应再有针对性地查阅一些资料,最后对所有收集的资料进行整理。并对其进行完善,对于一个完整的设计而言,文字与图纸并存。文字的详细叙述使内容丰富,而图纸则一目了然。最后由于设计者的水平有限,以及对电气技术日新月异的发展掌握不够,加之国外电气技术和产品的大量引进,我国对电气设计设备技术标准、规范还在不断地改进和完善,所以设计难免有不足,希望老师给予批评指正,使本设计更加完善。1.2本章小结本次设计不仅仅在于完成本人的毕业设计,对于中国船舶控制行业未来的主流控制趋势也有很好的前瞻性,为相关从业人员提供很好的范例。对此题目的设计除了注重实际应用外,还应考虑可靠性、经济性和控制的稳定性。如线路保护、接地保护、变压器保护等保护的有关问题及其设备元件的选择。3第2章总体方案CAN[Control(Controller)AreaNetwork]是控制(器)局域网的简称[4]。CAN是一种有效支持分布式控制或实时控制的串行通信网络,最初由德国Bosch公司80年代用于汽车内部测试和控制仪器之间的数据通信。目前CAN总线规范已被国际标准化组织ISO制订为国际标准ISO11898,并得到了Motorola,Intel,Philips等大半导体器件生产厂家的支持,迅速推出各种集成有CAN协议的产品。目前CAN总线主要用于汽车自动化领域,如发动机自动点火、注油、复杂的加速刹车控制(ASC)、抗锁定刹车系统(ABS)和抗滑系统等。BENZ、BMW等著名汽车上已经采用CAN来满足上述功能。在工业过程控制领域,CAN也得到了广泛的应用。2.1CAN协议解析CAN协议可分为:目标层、传送层、物理层。其中目标层和传送层包括了ISO/OSI定义的数据链路的所有功能[5]。目标层的功能包括:确认要发送的信息;位应用层提供接口。传送层功能包括:数据帧组织:总线仲裁:检错、错误报告、错误处理。CAN总线以报文为单位进行信息交换,报文中含有标示符(ID),它既描述了数据的含义又表明了报文的优先权。CAN总线上的各个协点都可主动发送数据。当同时有两个或两个以上的节点发送报文时,CAN控制器采用ID进行仲裁。ID控制节点对总线的访问。发送具有最高优先权报文的节点获得总线的使用权,其他节点自动停止发送,总线空闲后,这些节点将自动重发报文。2.2CAN主要技术特点CAN网络上的节点不分主从,任一节点均可在任意时刻主动地向网络上其他节点发送信息,通信方式灵活,利用这一特点可方便地构成多机备份系统[6]。CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据,无需专门的"调度"。CAN的直接通信距离最远可达10km(速率5kbps以下);通信速率最高可达21Mbps(此时通信距离最长为40m)。CAN上的节点数主要决定于总线驱动电路,目前可达110个;报文标识符可达2032种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受限制。2.3总体设计CAN总线接口电路主要包括:单片机最小系统、控制器接口、总线收发器、看门狗电路和显示电路等。采用Philips公司生产的SJA1000控制器和与其配套的82C250CAN收发器。按照CAN总线物理层协议选择总线介质,设计布线方案,连接成CAN网络。双绞屏蔽线可设两套,在两套介质上同时进行信息传输,接收方只用一个介质。在冗余和非冗余段的连接临界点处进行总线切换。硬件电路的设计主要是CAN通信控制器与微处理器之间和CAN总线收发器与物理总线之间的接口电路的设计。CAN通信控制器是CAN总线接口电路的核心,主要完成CAN的通信协议,而CAN总线收发器的主要功能是增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰(RFI),实现热防护等。看门狗电路主要是实现对电路的监控和复位作用。目前广泛流行的CAN总线器件有两大类:一类是独立的CAN控制器,如82C200、SJA1000及Intel82526/82527等,另一类是带有在片CAN的微控制器,如P8XC582及16位微控制器87C196CA/CB等。本课题选取PHILIPS公司的SJA1000CAN控制器以及82C250总线收发器,主要是考虑到SJA1000支持CAN2.0A/B规约。而82C250可以支持110个CAN节点,并且国内市场上PHILIPS的产品型号比较多,购买比较方便。在本次设计中,总体设计如下图:图2.1总体设计图2.4本章小结本章对CAN总线进行了简单的介绍,同时抛出了本次设计的总体思想,对以后的设计具有指导意义。6第3章单片机最小系统部分3.1最小系统介绍单片机最小系统就是能使单片机工作的最少的器件构成的系统。最小系统虽然简单,但是却是大多数控制系统所必不可少的关键部分。对于MCS-51单片机,其内部已经包含了一定数量的程序存储器和数据存储器,在外部只要增加时钟电路和复位电路即可构成单片机最小系统。下面对51单片机最小系统需要的时钟电路和复位电路做一下详细的说明。时钟电路单片机系统中的各个部分是在一个统一的时钟脉冲控制下有序地进行工作,时钟电路是单片机系统最基本、最重要的电路。MCS-51单片机内部有一个高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端,如果引脚XTAL1和XTAL2两端跨接上晶体振荡器(晶振)或陶瓷振荡器就构成了稳定的自激振荡电路,该振荡电路的输出可直接送入内部时序电路。MCS-51单片机的时钟可由两种方式产生,即内部时钟方式和外部时钟方式。实际应用中,并不是对51单片机外接晶振、电容和电阻等元件,而是使用集成元件与MCU进行连接,既节约空间又增加了电路的可靠性。本次设计中,使用可靠性高、使用范围广、易于在公开市场上采购到的X5045集成元件。3.2X5045元件介绍X5045P把四种常用的功能:上电复位、看门狗定时器、电源电压监控和块锁(BlockLockTM)保护的串行EEPROM存储器组成在一个封装之内。这种组合降低了系统成本、减少了电路板空间和增加了可靠性。其引脚及其功能如下:CS/WDI:片选输入/看门狗复位输入;SO:串行输出;WP:写保护输入;Vss:地;Vcc:电源;RESET:复位输出;SCK:同步时钟输入;SI:串行输入。X5045P芯片功能包括以下4种:(1)上电复位控制。在对X5045P通电时,ERSET引脚输出有效的复位信号,并保持至少200ms,使CPU有效复位。(2)电源电压监控。当检测到电源电压低于内部门槛电压VTRIP时,RESET输出复位信号,直至电源电压高于VTRIP并保持至少200ms,复位信号才被撤消。VTRIP的出厂值根据芯片型号不同共有5个级别的电压范围。对于需要电源电压精确监控的应用,用户可以搭建编程电路,对芯片内VTRIP电压进行微调。(3)看门狗定时器。芯片内部状态寄存器的WD1、WD0是看门狗定时设置位,通过状态寄存器写指令WRSR修改这2个标志位,就能在3种定时间隔中进行选择或关闭定时器。对看门狗的复位由CS输入电平的下降沿完成。(4)串行E2PROM。芯片内含512字节存储单元,10万次可靠写,数据保持时间100年。XICOR设计了3种保护方式防止误写。包括:WP写保护引脚,当引脚被拉低时,内部存储单元状态寄存器都禁止写入;存储区域写保护模式,通过对状态寄存器的BL1、BL0位的设置,可以选择对不同的存储区域进行写保护;在进行任何写操作前都必须打开写使能开关,而且在上电初始化写操作完成时,写使能开关自动关闭。显然,在几方面的保护之下,产生误写的可能性极小。对X5045P的操作是通过4根口线CS、SCK、SI和SO进行同步串行通信来完成的。SCK是外部输入的同步时钟信号。在对芯片定改指令或数据时,时钟前沿将SI引脚信号输入;在读邮数据时,时钟后沿将数据位输出到SO引脚上。数据的输入/输出都是高位在先。3.3电路设计X5045P在本设计中做为复位、监控电路使用,简化了电路的连接,同时增加了电路的可靠性,是系统中不可缺少的部分。对X5045的操作是通过4根口线CS、SCK、SI和SO进行同步串行通信来完成的。SCK是外部输入的同步时钟信号。在对芯片定改指令或数据时,时钟前沿将SI引脚信号输入;在读数据时,时钟后沿将数据位输出到SO引脚上。数据的输入/输出都是高位在先。在设计中,/CS脚和单片机P2.7、SI、SCK、SO、/WP、RST分别与单片机的引脚P1.3、P1.0、P1.4、P1.1和RST连接。对于不用到的引脚,可以直接和地相连。电路设计如下:图3.1单片机最小系统电路103.4本章小结本章介绍了单片机最小系统,用于监测系统是否工作于正常状态,及时对运行出错的状态进行复位,保证系统平稳有序地工作。11第4章显示部分4.1ZLG7290ZLG7290是一种I2C接口键盘及LED驱动管理器件,提供数据译码和循环、移位、段寻址等控制。它可采样64个按键或传感器,单片即可完成LED显示、键盘接口的全部功能。ZLG7290的从地址为70H,器件内部通过I2C总线访问的寄存器地址范围为00H~17H,每个寄存器都可按字节直接读写,并支持自动增址功能和地址翻转功能其特点如下:1、I2C串行接口提供键盘中断信号方便与处理器接口2、可驱动8位共阴数码管或64只独立LED和64个按键3、可控扫描位数可控任一个数码管闪烁4、提供数据译码和循环移位段寻址等控制5、每个功能键可检测任一键的连击次数6、无需外接元件即直接驱LED可扩展驱动电流和驱动电压7、提供工业级器件多种封装形式PDIP24SO244.2显示电路ZLG7290提供两种控制方式。寄存器映象控制和命令解释控制。寄存器映象控制是指直接访问底层寄存器,除通信缓冲区外的寄存器实现基本控制功能,请参考寄存器详解部分命令解释控制是指通过解释命令缓冲区CmdBuf0CmdBuf1中的指令间接访问底层寄存器实现扩展控制功能如实现寄存器的位操作对显示缓存循环移位对操作数译码等操作。ZLG7290集成了LED显示驱动和矩阵键盘的按键功能,可以同时驱动8个LED和64个矩阵按键,采用总线方式连接键盘和4LED封装器件,ZLG7290的SDA、SCL、/INT和/RES分别接单片机的P1.7、P1.6、P3.3和P1.5。电路设计如下:图4.1ZLG7290显示电路图4.2四位一体数码管电路部分4.3本章小结本章对显示部分的电路进行了设计,使用了ZLG7290对四位一体数码管进行显示控制,减轻了单片机的负担。第5章控制电路部分5.1SJA1000SJA1000是一种独立控制器,用于移动目标和一般工业环境中的区域网络控制(CAN)。它是PHILIPS半导体PCA82C200CAN控制器(BasicCAN)的替代产品。而且,它增加了一种新的工作模式(PeliCAN)。特点.和PCA82C200独立CAN控制器引脚兼容.和PCA82C200独立CAN控制器电气兼容.PCA82C200模式(即默认的BasicCAN模式).扩展的接收缓冲器(64字节、先进先出FIFO).和CAN2.0B协议兼容(PCA82C200模式中的无源扩展帧).同时支持11位和29位识别码.位速率可达1Mbits/s.PeliCAN模式扩展功能:.可读/写访问的错误计数器.可编程的错误报警限制.最近一次错误代码寄存器.对每一个CAN总线错误的中断.具体控制位控制的仲裁丢失中断.单次发送(无重发).只听模式(无确认、无活动的出错标志).支持热插拔(软件位速率检测).验收滤波器扩展(4字节代码,4字节屏蔽).自身信息接收(自接收请求).24MHz时钟频率.对不同微处理器的接口.可编程的CAN输出驱动器配置5.2控制电路设计SJA1000是PHILIP公司生产的独立CAN控制器,是用于实现CAN信号对数字信号转换、CAN信号的收发、CAN信号的接收、校验和重发等功能的控制器件。同时还提供了通讯接口用于和微机芯片进行通信,通过串行通信实现CAN信号的微机处理程序[8]。SJA1000的调用是通过微机访问其内部寄存器,操作寄存器标志位实现的。SJA1000的AD0~AD7、ALE、/CS、/RD、/WR、MODE、/INT、/RST分别接单片机的PO口、/ALE、P2.6、P3.7、P3.6、P2.5、P3.2和P1.2。SJA1000与微机的电路图如下所示:图5.1四位一体数码管电路部分5.3本章小结本章介绍CAN控制电路,这部分是CAN通信的核心部分,是本次设计的重点所在,对本次设计的成败与否起到关键作用。第6章收发部分6.182C25082C250是CAN协议控制器和物理总线的接口,这个器件对总线提供不同的发送能力和对CAN控制器提供不同的接收能力。它主要用于汽车里的高速应用(高达1Mbaud)。这个器件对总线提供不同的发送能力和对CAN控制器提供不同的接收能力,完全和ISO11898标准兼容。限定的电流值保护接收器输出级,避免阳极和阴极的短路,尽管在默认的条件下功率消耗是增加的,这个特征值将防止发送器输出级的毁坏。如果节点温度超过大约160摄氏度,发送器限定的电流值输出被降低。因为发送器占去大部分的功率消耗,这将导致降额功耗和较低的片内温度。IC中的其它部分在使用中将保持不变,当总线短路的时候,热保护非常需要这个。CANH和CANL线也被保护,防止在自动运作过程中电流的瞬变。三种操作模式高速模式在这个模式中,适合执行最大的位速率和最大的总线长度高速模式,通常用于普通的工业应用。譬如基于CAN的系统DeviceNetTM这种模式的总线输出信号。用尽可能快的速度切换,因此,一般使用屏蔽的总线电缆来防止可能的扰动。例如汽车无线电装置对总线信号的扰动。高速模式通过VRs<0.3<Vcc来选择将Rs控制输入直接连接到微控制器的输出口或者地电平或者一个高电平有效的复位信号。高速模式中收发器有效的循环延迟时间可以低至最大145ns。当Tamb>85时是155ns。斜率控制模式在一些应用中,由于考虑到系统的成本等问题,而使用非屏蔽的总线电缆。然而使用非屏蔽电缆意味着收发器要满足额外的要求,譬如电磁兼容性EMC问题。如果使用非屏蔽总线电缆PCA82C250/251的总线,信号转换速度应被特意降低。转换速度可以通过连接在控制引脚Rs上的串连阻抗值Rext来调整。根据CAN的位定时要求转换速度下降,将增加总线节点的循环延迟。因此在给定的位速率下,总线长度减少或者说在给定的总线长度下位速率降低,斜率控制模式中总线输出的转换速度大致和流出引脚Rs的电流成比例。如果斜率控制电阻Rext连接到地则VOL.max的值是0V。准备模式这个模式是在需要将功率消耗,譬如是暂时性的减到最低时使用。当VRs>0.75Vcc时进入准备模式。系统的功耗在准备模式可被彻底减低。这个模式基本上用于电池供电的应用。例如汽车停车的时候要进入准备模式,收发器的控制输入Rs上要加一个逻辑高电平,这可以通过直接将一个输出端口引脚连接到Rs或通过任何合适的斜率控制电阻Rext来实现。准备模式中发送器的功能和接收器的输入偏置网络都关断以减少功率消耗。参考电压输出和基本的接收器功能仍然活动,但以非常低的功耗工作。如果在总线上传输一个报文,系统可被重新激活,在检测到3μs长的显性总线电平后,收发器将通过RxD向协议控制器输出一个唤醒中断信号,在检测到RxD的下降沿后控制器把Rs引脚置为逻辑低电平。这样收发器就可以切换到普通传输模式。由于在准备模式中工作速度缓慢,收发器要回到普通接收速度,则需要取决于逻辑的延迟时间Rs的下降沿。在总线速度很高的情况下,收发器在准备模式,例如因为Rs引脚仍然为高,不可能正确地接收报文。另外一个应用是将Rs输入连接到一个高电平有效的复位信号。6.2收发电路设计在CAN接口电路的设计中,控制器SJA1000和收发器82C250是设计的关键部分。其中SJA1000负责对信号的发送、接收控制和校验重发等功能;82C250则负责连接CAN控制器和CAN通信的物理连接,同时负责对CAN信号地址分析,做出是否接收的判断,是发送CAN信号的中转站,也具有一定的判断能力,收发电路由两部分组成:光隔和收发部分。图6.1光隔电路图6.2收发电路6.3本章小结对CAN收发电路进行了说明和设计,实现CAN控制电路和外界物理CAN线路的连接。第7章详细设计7.1各部分原理CAN总线接口电路主要包括:单片机、控制器接口、总线收发器和看门狗电路等。采用Philips公司生产的SJA1000控制器和与其配套的82C250CAN收发器。按照CAN总线物理层协议选择总线介质,设计布线方案,连接成CAN网络。双绞屏蔽线可设两套,在两套介质上同时进行信息传输,接收方只用一个介质。在冗余和非冗余段的连接临界点处进行总线切换。硬件电路的设计主要是CAN通信控制器与微处理器之间和CAN总线收发器与物理总线之间的接口电路的设计。CAN通信控制器是CAN总线接口电路的核心,主要完成CAN的通信协议,而CAN总线收发器的主要功能是增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰(RFI),实现热防护等。看门狗电路主要是实现对电路的监控和复位作用。在本电路原理中,控制单元以单片机AT89C51为核心,选用器件SJA1000作为CAN控制器,并选用芯片82C250和6N137、X5045P作为CAN控制器接口和光耦合隔离、复位电路。在实际中,应注意以下几个问题1.SJA1000的中断请求信号INT在中断允许且有中断发生时,由高电来此跳变到低电平,所以INT和AT0C51的INT0直接相连。片选信号CS和单片机引脚P2.7相连,当CS接到低电平时,SJA1000被选中,CPU可对SJA1000进行读/写操作。为了增强CAN总线节点的抗干扰能力。SJA1000的TX1脚悬空,RX1引脚的电位必须维持在约0.5VCC上,否则,将不能形成CAN协议要求的电平逻辑。2.SJA1000的TxD和RxD并不是直接与82C250的TxD和RxD相连而是通过高速光耦合6N137后与82C250相连,这样就可以很好的实现了总线上个CAN节点的电气隔离,不过应该特别说明一点的是光耦部分电路所采用的两个电源Vcc和Vdd必须完的时钟信号接至AT89C51的时钟电路输入端,作为AT89C51的外部时钟输入,解决了时钟同步问题。4.82C250是CAN总线收发器,是CAN控制器SJA1000正常工作与CAN总线的接口器件,是对CAN总线以差分方式发送,TXD和RXD引脚分别发送经过驱动后的发送和接收信号。其引脚RS用于选择82C250的工作模式(高速、斜率或等待)。RS脚接地,82C250工作于高速方式,RS脚串接一个电阻R后再接地,若82C250处于CAN总线的网络终端,总线接口部分必须加一个120Ω的匹配电阻,以保护82C250免受过激的冲击忽略掉它们,会使数据通信的抗干扰性及可靠性大大降低。本设计中,82C250的CANH和CANL引脚与地之间并联了两个30pf的小电容可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力。5.另外在两根CAN总线接入端与地之间分别反接了一个保护二极管。当CAN总线有较高的负电压时,通过二极管的短路可起到一定的过压保护作用,82C250的Rs脚上接一个斜率电阻。电阻大小可以根据总线通信速度适当调整一般在16—140KΩ之间。6.另外,在本系统中应用到的芯片X5045P具有电源监控、看门狗等功能,还同时输出高低电平的复位信号,分别输出到AT89C51和SJA1000的复位端,以满足本次设计的要求。原理图和PCB图参见附录2。7.2本章小结详细介绍了硬件设计的原理,同时附上制作好的PCB图,以便制作出实际的产品用于实际应用中。第8章CAN实现程序以下是对本次设计功能实现的软件编程,在KEIL的软环境下实现。需要在头文件目录中加入ZLG7290和IIC总线的C程序和头文件。本次设计的目的旨在实现船舶罗经信号的CAN信号转换和通信,显示部分用ZLG7290进行动态数码管显示,其循环程序在ZLG7290内部循环运行,减轻单片机的负担,同时动态显示有利于节约电源,对于船舶供电量有限的场所十分重要。对本次设计的电路和程序稍加改动就可以应用到实际工控中,完成更加复杂的功能。程序如下:8.1显示部分检测#include<reg51.h>#include<zlg7290.h>#include<viic_c51.h>#defineucharunsignedcharvoidmain(void){RES=0;delayMS(1000);RES=1;delayMS(1000);ZLG7290_SendCmd(0x60,0x01);ZLG7290_SendCmd(0x61,0x02);ZLG7290_SendCmd(0x62,0x03);ZLG7290_SendCmd(0x63,0x04);RES=1;}经过检测,系统的显示部分能够正常工作,说明系统能够正常显示。8.2通讯自检测//PeliCan编程#include<reg51.h>#include<absacc.h>#include<SJA1000.h>#include<namesbit.h>#include<zlg7290.h>#defineucharunsignedcharucharAD[8];//全局接收数组//**********89S51初始化*************//voidInit_MCU(void){P0=0xFF;P1=0xFF;P2=0xFF;P3=0xFF;}//**********SJA1000初始化***********//voidInit_SJA1000(void){A14=0;//片选SJA1000WR=0;//写使能SJA1000A12=0;//82C250工作于斜率模式RST=0;//SJA1000复位模式CMR=0x1E;//自收发,清除数据溢出,释放接受缓存器,撤销发送请求,发送当前信息IER=0x03;//发送和接受均采用中断方式//发送信息格式设置//////////////////////////////////////////TBSR0=0x08;//标准帧、数据发送、数据长度:8TBSR1=0xFF;//识别码1TBSR2=0xFF;//识别码2//////////////////////////////////////////BTR0=0xC1;//总线定时寄存器0:同步跳转宽度为4tscl,波特率设定BTR1=0xA5;//总线定时寄存器1:三倍总线采样,波特率设定OCR=0x1A;//输出管脚TX0=TXD输入信号,TX1输出高阻CDR=0xC8;//PeliCAN模式、无接收比较,只有RX0被激活,CLKOUT引脚被禁用//delayMS(1000);RST=1;//SJA1000工作模式//delayMS(1000);MODR=0x04;//自检测,节点没有活动时使用自收发命令CMR=0x10;//自收发MODE=1;//INTEL模式//delayMS(1000);//验收代码寄存器ACR0=0xFF;ACR1=0xFF;ACR2=0xFF;ACR3=0xFF;//验收屏蔽寄存器AMR0=0xFF;AMR1=0xFF;AMR2=0xFF;AMR3=0xFF;}//////////////////////////////////////////**********中断处理程序***********///voidinter0_can_xd(void)interrupt0{ucharstate;EA=0;IE0=0;//由于是中断INT0是电平触发方式,所以需要软件将INT0的中断请求标志IE0清零if(IR&0x01)//检测,RXD程序{RD=0;//读使能SJA1000AD[0]=RBSR3;AD[1]=RBSR4;AD[2]=RBSR5;AD[3]=RBSR6;AD[4]=RBSR7;AD[5]=RBSR8;AD[6]=RBSR9;AD[7]=RBSR10;CMR=0x14;//释放接收缓冲器,置位自接收请求state=ALC;//释放仲裁随时捕捉寄存器(读该寄存器即可)state=ECC;//释放错误代码捕捉寄存器(读该寄存器即可)RD=1;//关闭SJA1000的读使能}EA=1;}charcodedx516[3]_at_0x003b;//学林仿真器运行C程序时独有标志voidmain(void){Init_MCU();Init_SJA1000();RES=0;//复位ZLG7290IP=0x01;//发送/接收中断0优于显示中断1EX0=1;//外部中断0允许IT0=1;//外部中断0下降沿方式EA=1;//中断总控允许//delayMS(1000);//编制发送数据TBSR5=0x00;TBSR6=0x01;TBSR7=0x02;TBSR8=0x03;TBSR9=0x04;TBSR10=0x05;TBSR11=0x06;TBSR12=0x07;WR=1;//关闭SJA1000的写使能,防止误写//delayMS(1000);CMR=0x11;//置位发送请求,自收发模式//扩展帧格式发送、标准帧格式接收RES=1;//置位ZLG7290ZLG7290_SendCmd(0x60,AD[0]);ZLG7290_SendCmd(0x61,AD[1]);ZLG7290_SendCmd(0x62,AD[2]);ZLG7290_SendCmd(0x63,AD[3]);RES=0;//复位ZLG7290,清显示}经过检测,系统可以实现自收发功能,说明系统能够正常收发,可以进行通讯。系统的单向通讯程序和双向通讯程序参见附录3。8.3本章小结本章给出了CAN通讯的检测和通讯程序,为实现了CAN通讯提供了程序支持。总结船舶罗经复示器是船舶中的重要组成部分,对航向有重要的指导作用,从而确保船舶能够安全经济地航行。本设计对船舶罗经信号的传输方式进行了研究,提出了一种高效、抗干扰、传输线路复用率高的通信方式。并通过硬件和软件的设计实现了这一通信方式。由于CAN通信方式具有可以减少线束的数量,进行大量数据的高速通信,有效支持分布式控制或实时的串行通信网络,网络各节点之间的数据通信实时性强,出错率低等优点,本次设计中所使用的通信方式就采用CAN通信方式。本次设计采用单片机为中央处理器,飞利浦独立CAN控制器SJA1000作为CAN信号控制器,82C250作为CAN信号的收发器,同时与CAN物理网络进行连接。设计流程分为两大部分:硬件设计和软件编程根据挑选的器件,设计出能实现CAN通信方式的原理图,然后生成PCB板,经过合理性分析和错误检测后,制作电路板,焊接器件。经过检测,硬件部分各部分工作都正常。至此,硬件设计结束。根据硬件的连接方式编写程序,开始编写的是各部分的测试程序,用以检测硬件电路是否能正常工作。检测工作结束后,就开始进行通信程序的编写,经过测试,能够实现自收发功能,即说明通信部分能够实现自通信和双向通信。船舶罗经是船舶的重要航海仪器,对船舶航行具有重要的指导意义。因此如何克服船舶航行过程中恶劣环境的干扰,实现快速准确地进行传输成为当今世界船舶领域的重要课题之一。CAN通信能够克服这些干扰,而且可以减少线束的数量,进行大量数据的高速通信,有效支持实时通信网络,因此CAN通信必然会取代现有的船舶通信方式,成为船舶通信的主流方式。参考文献[1]百度文库./view/1757ead0b14e852458fb578f.html[2]党杰、刘锦泉.基于CAN总线的通信设计与应用.控制工程,2005年1期[3]刘成勇、许昌如.基于NMEA2000协议的船舶集成网络系统研究.武汉理工大学学报,2010年5期[4]刘正权、许维胜.关于CAN控制器SJA1000新特性的一些应用.电子技术(上海),2000年第11期[5]张素文.基于PCI总线的CAN通信卡设计与实现.龙源期刊,2012年第5期[6]刘正权、许维胜.关于CAN控制器SJA1000新特性的一些应用.电子技术(上海),2000年第11期[7]李友善.基于ZLG7290的显示电路设计.龙源期刊,2011年第24期[8]杨自厚.CAN通信的嵌入式应用.机电工程,2012年第12期[9]D.B.Charter.Determinationofriskofcollisionusingtwentiethcenturytechniques.Navigation(JournalofTheInstituteof[10]DavidA.Pattersib.ComputerOrganizationandDesign:TheHardware/SoftwareInterface,2009[11]S.J.Chang.Keelung.DevelopmentandAnalysisofAISApplicationsasanEfficientToolforVesselTrafficService.IEEE27致谢在本次毕业设计中,我得到了各方面的大力支持。在锦州航星集团,技术人员和工人师傅们对我的问题不厌其详地进行了解答,使我对船舶控制所涉及的方面有了系统的认识,对船舶控制系统所涉及到的各方面的原理有了感性的认识,为我本次毕业设计打下了扫盲式的基础。在大连海事大学,很多老师都对我很关心,对我提出的问题进行引导性地解答,为我在迷茫中指明了方向。特别感谢我本次毕业设计的导师颜德文教授。颜教授一直对我进行鼓励,并对我遇到的困难进行引导性地解答,使我不仅仅克服了一个又一个难关,更重要的是我在解决困难的过程中学会了如何自己解决难题的方法,感谢颜教授,授人以渔的教育方式。同时还要感谢杨承恩教授对我的关心、赵国库老师对我的建设性的指导、李辉老师为我过程控制系统的学习打下的结实基础、谭克俊老师和徐慧朴老师在分别教授我模拟电路和MATLAB中所付出的一切……感谢所有教授过我的老师,感谢他们!感谢他们的辛勤耕耘。同时我还要感谢我的父母,感谢他们对我的养育之恩,是他们的辛勤和期盼才有了我的今天,这一点到什么时候都不能够忘记,到什么时候都要报答!1附录1单向收发程序:发送程序://PeliCan编程#include<reg51.h>#include<absacc.h>#include<SJA1000.h>#include<namesbit.h>#include<zlg7290.h>#defineucharunsignedchar//**********89S51初始化*************//voidInit_MCU(void){P0=0xFF;P1=0xFF;P2=0xFF;P3=0xFF;}//**********SJA1000初始化***********//voidInit_SJA1000(void){A14=0;//片选SJA1000WR=0;//写使能SJA1000A12=0;//82C250工作于斜率模式RST=0;//SJA1000复位模式CMR=0x0E;//双向收发,清除数据溢出,释放接受缓存器,撤销发送请求IER=0x01;//SJA1000中断方式接收//发送信息格式设置//////////////////////////////////////////TBSR0=0x08;//标准帧、数据发送、数据长度:8TBSR1=0xFF;//识别码1TBSR2=0xFF;//识别码2TBSR3=0xFF;//识别码3TBSR4=0xFF;//识别码4//////////////////////////////////////////BTR0=0x01;//总线定时寄存器0:同步跳转宽度为1tscl,波特率设定BTR1=0x25;//总线定时寄存器1:单倍总线采样,波特率设定OCR=0x1A;//输出管脚TX0=TXD输入信号,TX1输出高阻CDR=0xC8;//PeliCAN模式、无接收比较,只有RX0被激活,CLKOUT引脚被禁用delayMS(1000);RST=1;//SJA1000工作模式delayMS(1000);MODR=0x00;//双向收发,正常工作模式CMR=0x00;//双向收发,正常工作模式MODE=1;//INTEL模式delayMS(1000);//验收代码寄存器ACR0=0xFF;ACR1=0xFF;ACR2=0xFF;ACR3=0xFF;//验收屏蔽寄存器AMR0=0xFF;AMR1=0xFF;AMR2=0xFF;AMR3=0xFF;}///////////////////////////////////////charcodedx516[3]_at_0x003b;//学林仿真器运行C程序时独有标志voidmain(void){ucharAD;Init_MCU();Init_SJA1000();delayMS(1000);//TBSR3=0x00;//TBSR4=0x01;TBSR5=0x02;TBSR6=0x03;TBSR7=0x04;TBSR8=0x05;TBSR9=0x06;TBSR10=0x07;TBSR11=0x08;TBSR12=0x09;WR=1;//关闭SJA1000的写使能,防止误写delayMS(1000);CMR=0x01;//置位发送请求,双向收发//扩展帧格式发送、标准帧格式接收delayMS(1000);AD=0x00;RES=0;//ZLG7290复位delayMS(1000);RES=1;//ZLG7290置位ZLG7290_SendCmd(0x61,AD);}接收程序://PeliCan编程#include<reg51.h>#include<absacc.h>#include<SJA1000.h>#include<namesbit.h>#include<zlg7290.h>#defineucharunsignedcharucharAD[8];//全局接收数组//**********89S51初始化*************//voidInit_MCU(void){P0=0xFF;P1=0xFF;P2=0xFF;P3=0xFF;}//**********SJA1000初始化***********//voidInit_SJA1000(void){A14=0;//片选SJA1000WR=0;//写使能SJA1000A12=0;//82C250工作于斜率模式RST=0;//SJA1000复位模式CMR=0x0E;//双向收发,清除数据溢出,释放接受缓存器,撤销发送请求IER=0x01;//SJA1000中断接收//发送信息格式设置//////////////////////////////////////////TBSR0=0x08;//标准帧、数据发送、数据长度:8TBSR1=0xFF;//识别码1TBSR2=0xFF;//识别码2//////////////////////////////////////////BTR0=0xC1;//总线定时寄存器0:同步跳转宽度为4tscl,波特率设定BTR1=0xA5;//总线定时寄存器1:三倍总线采样,波特率设定OCR=0x1A;//输出管脚TX0=TXD输入信号,TX1输出高阻CDR=0xC8;//PeliCAN模式、无接收比较,只有RX0被激活,CLKOUT引脚被禁用delayMS(1000);RST=1;//SJA1000工作模式delayMS(1000);MODR=0x00;//双向收发,正常工作模式CMR=0x00;//双向收发,正常工作模式MODE=1;//INTEL模式delayMS(1000);//验收代码寄存器ACR0=0xFF;ACR1=0xFF;ACR2=0xFF;ACR3=0xFF;//验收屏蔽寄存器AMR0=0xFF;AMR1=0xFF;AMR2=0xFF;AMR3=0xFF;WR=1;//写关闭SJA1000}//////////////////////////////////////////**********中断处理程序***********///voidinter0_can_xd(void)interrupt0{//ucharstate;EA=0;IE0=0;//由于是中断INT0是电平触发方式,所以需要软件将INT0的中断请求标志IE0清零RD=0;//读使能SJA1000delayMS(1000);AD[0]=RBSR3;AD[1]=RBSR4;AD[2]=RBSR5;AD[3]=RBSR6;AD[4]=RBSR7;AD[5]=RBSR8;AD[6]=RBSR9;AD[7]=RBSR10;delayMS(1000);CMR=0x04;//释放接收缓冲器//state=ALC;//释放仲裁随时捕捉寄存器(读该寄存器即可)//state=ECC;//释放错误代码捕捉寄存器(读该寄存器即可)RD=1;//关闭SJA1000的读使能EA=1;delayMS(1000);}charcodedx516[3]_at_0x003b;//学林仿真器运行C程序时独有标志voidmain(void){Init_MCU();Init_SJA1000();RES=0;//复位ZLG7290EX0=1;//外部中断0允许IT0=1;//外部中断0下降沿方式EA=1;//中断总控允许delayMS(1000);RES=1;//置位ZLG7290while(1){RES=1;//置位ZLG7290//AD[0]=0x05;//AD[1]=0x06;//AD[2]=0x07;//AD[3]=0x08;ZLG7290_SendCmd(0x60,AD[0]);ZLG7290_SendCmd(0x61,AD[1]);ZLG7290_SendCmd(0x62,AD[2]);ZLG7290_SendCmd(0x63,AD[3]);//RES=0;//复位ZLG7290,清显示}//RES=0;//复位ZLG7290,清显示}双向收发程序://PeliCan编程#include<reg51.h>#include<absacc.h>#include<VIIC_C51.h>#include<zlg7290.h>#defineucharunsignedcharuchardataRXD_flag;//全局接收中断标志位ucharxdata*RX_buffer;//全局定义接收缓存数组//7290hardware与硬件有关的定义//ZLG7290端口定义sbitSDA=P1^7;/*模拟I2C数据传送位*/sbitSCL=P1^6;/*模拟I2C时钟控制位*/#defineZLG72900x70//ZLG7290的IIC地址#defineSubCmdBuf0x07//命令缓冲区子地址#defineSubDpRam0x10//显存子地址//根据硬件配置ZLG7290的中断信号引脚INTsbitKeyInt=P3^3;//中断信号uchari;//显示缓冲区指针//MCU端口定义sbitP10=P1^0;//X5045控制端sbitP11=P1^1;//MCU复位端sbitP14=P1^4;//SJA1000复位端sbitP12=P1^2;//X5045时钟输入端sbitP15=P1^5;//ZLG7290复位端sbitP16=P1^6;//SCLsbitP17=P1^7;//SDAsbitP26=P2^6;//SJA1000片选//CAN定义#defineMODRDBYTE[0x0000]//MOD模式寄存器#defineCMRDBYTE[0x0001]//命令控制器#defineSRDBYTE[0x0002]//状态前寄存器#defineIRDBYTE[0x0003]//中断寄存器#defineIERDBYTE[0x0004]//中断使能寄存器#defineBTR0DBYTE[0x0006]//总线定时寄存器0#defineBTR1DBYTE[0x0007]//总线定时寄存器1#defineOCRDBYTE[0x0008]//输出控制寄存器#defineALCDBYTE[0x000B]//仲裁丢失捕捉寄存器#defineECCDBYTE[0x000C]//误码捕捉寄存器#defineACR0DBYTE[0x0010]//验收代码寄存器#defineACR1DBYTE[0x0011]#defineACR2DBYTE[0x0012]#defineACR3DBYTE[0x0013]#defineAMR0DBYTE[0X0014]//验收屏蔽寄存器#defineAMR1DBYTE[0X0015]#defineAMR2DBYTE[0X0016]#defineAMR3DBYTE[0X0017]#defineTBSR0DBYTE[0x0020]//发送缓冲器各位#defineTBSR1DBYTE[0x0021]#defineTBSR2DBYTE[0x0022]#defineTBSR3DBYTE[0x0023]#defineTBSR4DBYTE[0x0024]#defineTBSR5DBYTE[0x0025]#defineTBSR6DBYTE[0x0026]#defineTBSR7DBYTE[0x0027]#defineRBSR0DBYTE[0x0030]//接收缓冲器各位#defineRBSR1DBYTE[0x0031]#defineRBSR2DBYTE[0x0032]#defineRBSR3DBYTE[0x0033]#defineRBSR4DBYTE[0x0034]#defineRBSR5DBYTE[0x0035]#defineRBSR6DBYTE[0x0036]#defineRBSR7DBYTE[0x0037]#defineCDRDBYTE[0x001F]//时钟分频寄存器//CAN定义结束//**********SJA1000初始化***********//voidInit_SJA1000(void){ucharstate;ucharACRR[4]={0XAA,0XFF,0X22,0X11};//接收代码寄存器ucharAMRR[4]={0xff,0xff,0xff,0xff};//接收屏蔽寄存器do//使用do--while语句确保进入复位模式{MODR=0x09; //设置MOD.0=1--进入复位模式,以便设置相应的寄存器 state=MODR; }while(!(state&0x01));//对SJA1000部分寄存器进行初始化设置CDR=0x88; //CDR为时钟分频器,CDR.3=1--时钟关闭,CDR.7=0basicCAN,CDR.7=1PeliCANBTR0=0x04;//0x31; //总线定时寄存器0;总线波特率设定BTR1=0x1c;//0x1c; //总线定时寄存器1;总线波特率设定IER=0x01; //IER.0=1--接收中断使能;IER.1=0--关闭发送中断使能OCR=0xaa; //配置输出控制寄存器CMR=0x04; //释放接收缓冲器ACR0=ACRR[0];//初始化接收代码寄存器ACR1=ACRR[1];ACR2=ACRR[2];ACR3=ACRR[3];AMR0=AMRR[0];//初始化接收屏蔽寄存器AMR1=AMRR[1];AMR2=AMRR[2];AMR3=AMRR[3];do//使用do--while语句确保退出复位模式{ MODR=0x08; //MOD.3=0--双滤波器模式 state=MODR;}while(state&0x01);}////////////////////////////////////////**********CAN发送数据到CAN-Bus***********//voidCAN_TXD(void){ucharstate;ucharxdata*TX_buffer;//初始化标示码头信息TX_buffer[0]=0x88;//.7=0--扩展帧;.6=0--数据帧;.0-.3=100--数据长度为8字节//TX_buffer[1]=0xFF;//本帧信息的ID//TX_buffer[2]=0xFF;TX_buffer[3]=0xFF;TX_buffer[4]=0xFF;do//查询SJA1000是否处于接收状态,当SJA1000不处于接收状态时才可继续执行{state=SR;//SR为SJA1000的状态寄存器}while(state&0x10);//SR.4=1正在接收,等待do//查询SJA1000是否处于发送完毕状态{state=SR;}while(!(state&0x08));//SR.3=0,发送请求未处理完,等待直到SR.3=1do//查询发送缓冲器状态{state=SR;}while(!(state&0x04));//SR.2=0,发送缓冲器被锁。等待直到SR.2=1//将待发送的一帧数据信息存入SJA1000的发送缓冲器中TBSR0=TX_buffer[0];TBSR1=TX_buffer[1];TBSR2=TX_buffer[2];TBSR3=TX_buffer[3];TBSR4=TX_buffer[4];TBSR5=TX_buffer[5];TBSR6=TX_buffer[6];TBSR7=TX_buffer[7];CMR=0x04;//置位发送请求}////////////////////////////////////////**********中断接收来自CAN-Bus数据***********//voidinter0_can_rxd(void)interrupt0{ucharstate;EA=0;//关CPU中断IE0=0;//由于是中断INT0是电平触发方式,所以需要软件将INT0的中断请求标志IE0清零state=IR;//IR为SJA1000的中断寄存器if(state&0x01)//若IR.0=1--接收中断{//ucharxdata*RX_buffer;//全局定义接收缓存器RX_buffer[0]=RBSR0;RX_buffer[1]=RBSR1;RX_buffer[2]=RBSR2;RX_buffer[3]=RBSR3;RX_buffer[4]=RBSR4;RX_buffer[5]=RBSR5;RX_buffer[6]=RBSR6;RX_buffer[7]=RBSR7;RXD_flag=1;//接收标志置位,以便进入接收处理程序CMR=0x04;//CMR.2=1--接收完毕,释放接收缓冲器state=ALC;//释放仲裁随时捕捉寄存器(读该寄存器即可)state=ECC;//释放错误代码捕捉寄存器(读该寄存器即可)}IER=0x01;//IER.0=1--接收中断使能EA=1;//重新开启CPU中断}////////////////////////////////////////**********中断处理ZLG7290的按键程序***********//voidinter1_ZLG7290_handle(void)interrupt1{uchari,j=0;ucharxdatares;res=RX_buffer;i=ZLG7290_GetKey();switch(i)//S1~3的处理程序{case1:do//使数码管闪烁{ISendStr(ZLG7290,SubCmdBuf,RX_buffer,8);delayMS(10);}while((i!=2)&(i!=3));break;case2:do//使数码管闪烁位循环左移{ISendStr(ZLG7290,SubCmdBuf,RX_buffer++,1);delayMS(10);j++;if(j>7){j=0;RX_buffer=res;}}while((i!=1)&(i!=3));break;case3:ISendStr(ZLG7290,SubCmdBuf,RX_buffer,8);//停止循环闪烁break;default:break;}}//初始化MCUvoidInit_MCU(void){P0=P1=P2=P3=0;//选通SJA1000}//初始化ZLG7290voidInit_ZLG7290(void){ucharxdataduanma[10]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6};//0~9的段码,按照abcdefgdp的顺序排列RX_buffer=duanma;//对全局定义接收缓存数组赋初值KeyInt=1;//置KeyInt引脚为输入状态i=0;//显示缓冲区指针初始化}voidmain(void){voidInit_MCU(void);//初始化MCU,P10=P1^0使能看门狗voidInit_SJA1000(void);//初始化SJA1000voidInit_ZLG7290(void);//ZLG7290初始化while(1);//等待SJA1000中断0接收或者ZLG7290中断1按键处理程序EX0=1;EX1=1;IT0=1;IT1=1;EA=1;if(RXD_flag)//PO口得到SJA1000的中断接收值{P0=RX_buffer;RXD_flag=0;}do//SJA1000不接受数据或者S1~3的按键未按下时,循环显示数据{ZLG7290_SendBuf(RX_buffer,4);//向显示缓冲区发送数据delayMS(10);}while(!(IE1|IE0));while(ECC&0x20)//若ECC.5=1--RX;接收时发生的错误{P14=!P14;delayMS(10);P14=!P14;delayMS(10);//对SJA1000复位}}附录2总体设计原理图PCB图附录3英文资料:FUNCTIONALDESCRIPTIONDescriptionoftheCANcontrollerblocksINTERFACEMANAGEMENTLOGIC(IML)TheinterfacemanagementlogicinterpretscommandsfromtheCPU,controlsaddressingoftheCANregistersandprovidesinterruptsandstatusinformationtothehostmicrocontroller.TRANSMITBUFFER(TXB)ThetransmitbufferisaninterfacebetweentheCPUandtheBitStreamProcessor(BSP)thatisabletostoreacompletemessagefortransmissionovertheCANnetwork.Thebufferis13byteslong,writtentobytheCPUandreadoutbytheBSP.RECEIVEBUFFER(RXB,RXFIFO)ThereceivebufferisaninterfacebetweentheacceptancefilterandtheCPUthatstoresthereceivedandacceptedmessagesfromtheCAN-busline.TheReceiveBuffer(RXB)representsaCPU-accessible13-bytewindowoftheReceiveFIFO(RXFIFO),whichhasatotallengthof64bytes.WiththehelpofthisFIFOtheCPUisabletoprocessonemessagewhileothermessagesarebeingreceived.ACCEPTANCEFILTER(ACF)Theacceptancefiltercomparesthereceivedidentifierwiththeacceptancefilterregistercontentsanddecideswhetherthismessageshouldbeacceptedornot.Intheeventofapositiveacceptancetest,thecompletemessageisstoredintheRXFIFO.BITSTREAMPROCESSOR(BSP)Thebitstreamprocessorisasequencerwhichcontrolsthedatastreambetweenthetransmitbuffer,RXFIFOandtheCAN-bus.Italsoperformstheerrordetection,arbitration,stuffinganderrorhandlingontheCAN-bus[9].BITTIMINGLOGIC(BTL)ThebittiminglogicmonitorstheserialCAN-buslineandhandlesthebusline-relatedbittiming.ItissynchronizedtothebitstreamontheCAN-busona‘recessive-to-dominant’buslinetransitionatthebeginningofamessage(hardsynchronization)andre-synchronizedonfurthertransitionsduringthereceptionofamessage(softsynchronization).TheBTLalsoprovidesprogrammabletimesegmentstocompensateforthepropagationdelaytimesandphaseshifts(e.g.duetooscillatordrifts)andtodefinethesamplep
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省肇庆市高要区金利镇朝阳教育集团达标名校2026年初三下学期期末学习能力诊断英语试题含解析
- (正式版)DB22∕T 2780-2017 《青贮饲料发酵品质分级技术规程》
- 企业文化建设活动策划指南企业文化传播与落地
- 2026年构网型储能标准体系与规范解读
- 2026年设备故障率与维修资金投入关联分析
- 2026年食品科学与工程大学生职业生涯规划
- 智慧仓储WMS系统整体解决方案
- 营销策划 -灵顺北高峰文创品牌手册
- 企业倾听活动策划方案(3篇)
- 施工方案报审英文(3篇)
- 广东省广州市2026 届高三一模综合测试(一)政治试题(含答案)
- 2026年江西电力职业技术学院单独招生《职业适应性测试》模拟试题及参考答案
- 拆除扬尘治理责任制度
- Unit2Knowyourbody第12课时(课件)-外研版英语三年级下册
- 《中兽医》课件-3.脏腑学说
- 行政部门内部监督制度
- 1万吨年塑料和化纤专用钛白粉生产线申请建设环境影响评估报告
- (正式版)DB51∕T 2890-2022 《川西高原苹果生产技术规程》
- 广东省广州市广附大联盟校2025-2026学年九年级上学期期末语文试题(含答案)(含解析)
- 勒索病毒应对方案
- 2025年四平市基层专干面试题库及答案
评论
0/150
提交评论