最新基于单片机的CAN总线通讯实现

最新基于单片机的CAN总线通讯实现
最新基于单片机的CAN总线通讯实现

最新基于单片机的CAN总线通讯实现

第一章前言

1.1 概述

控制器局域网(CAN-Controller Area Network)属于现场总线(Fieldbus)的范畴,是众多的属于现场总线标准之一,它适用于工业控制系统,具有通信速率高、可靠性强、连接方便、性能价格比高等诸多特点。它是一种有效支持分布式控制或实时控制的串行通信网络,以其短报文帧及CSMA/CD-AMP(带有信息优先权及冲突检测的载波监听多路访问)的MAC(媒介访问控制)方式而倍受工业自动化领域中设备互连的厚爱。CAN的应用范围遍及从高速网络到低成本的多线路网络,它可以应用于汽车系统、机械、技术设备和工业自动化里几乎任何类型的数据通信。

随着计算机硬件、软件及集成电路技术的迅速发展,同时消费类电子产品、计算机外设、汽车和工业应用等的需求不断增加。高速、高可靠和低成本的通信介质的要求也随之提高。现场总线是当今自动化领域技术发展的热点之一,它为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

微处理器中常用的串行总线是通用异步接收器传输总线(UART)、串行通信接口(SCI)、同步外设接口(SPI)、内部集成电路(I2C)和通用串行总线(USB),以及车用串行总线,包括控制器区域网(CAN)和本地互连网(LIN)等。这些总线在速度、物理接口要求和通信方法学上都有所不同。

在计算机数据传输领域内,长期以来使用的通信标准,尽管被广泛使用,但是无法在需要使用大量的传感器和控制器的复杂或大规模的环境中使用。控制器局部网CAN(CONTROLLER AERANETW0RK)就是为适应这种需要而发展起来的。随着汽车电子技术的发展,消费者对于汽车功能的要求越来越多,汽车上所用的电控单元不断增多,电控单元之间信息交换的需求,使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线,这就促进了车用总线技术的发展。CAN 总线的出现,就是为了减少不断增加的信号线,所有的外围器件都可以被连接到总线上由于CAN总线具有可靠性高、实时性好、成本合理等优点,逐渐被应用于如船舶、航天、工业测控、自动化、电力系统、楼宇监控等其他领域中。

1.2 CAN总线的特点

80年代末,在汽车工业中,由于众多的控制设备与测试仪器之间需要进行大量数据交换,传统的总线无法满足需求,德国BOSCH公司提出了CAN 总线,这种新的串行数据通讯协议。CAN总线即控制器局域网总线,通信接口中集成了CAN 协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。

CAN (Controller Area Network)属于现场总线的一种,在传统的工业控制领域中,大部分的通信采用RS232、RS485或RS422总线。相比之下,RS232、RS485或RS422总线有着通信距离近,通讯速度慢,抗干扰性能差等缺点。通讯一般采用主从方式,通过主站查询方式进行通讯,实时性、可靠性较差。当系统有错误,多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点。基于CAN 总线的分布式控制系统在很多方面具有明显的优越性。L而CAN 的电路结构简单,要求的线数较少,只需要两根线与外部器件互联,使得各控制单元能够通过CAN总线共享所有的信息和资源。达到简化布线、减少传感器数量、避免控制功能重复的效果。CAN 具有的完善的通信协议,并且可以通过CAN 控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期。

CAN支持分布式控制或实时控制,工作于多主方式,网络上各个节点均可以在任一时刻主动发送信息,可以点对点,点对多点以及全局广播方式收发数据。网络中的各节点都可根据总线访问优先权,采用非破坏性总线总裁技术,通信速度快,可靠性高,可大大节省了总线仲裁冲突时间,在网络负载很重的情况下也不会出现网络瘫痪。CAN没有采用站地址编码,而是对通信数据进行编码,这可使不同的节点同时接收到数据,这使得CAN 总线的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。

它具有如下特点:

1)CAN 是到目前为止为数不多的有国际标准的现场总线,总线协议已被国际标

准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。

2)CAN总线没有采取传统的站地址编码,不对节点进行地址规定,而是把通信

数据块进行编码。这种方法的优点可使网络内的节点个数在理论上不受限

制,数据块的标识码可由1l位或29位二进制数组成。这种按数据块编码的方式,使用报文的标识符来指定报文的优先级以及报文的内容,高优先级的节点享有传送报文的优先权。还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。采用短帧结构,每一帧的有效字节数为8个,数据传输时间短,受干扰的概率低,重新发送的时间短,从而保证了通信的实时性。

3)CAN 总线采用了多主竞争式总线结构,通信介质可以是双绞线、同轴电缆或

光导纤维,可以多个主站运行并且分散仲裁。CAN总线上任意节点可以点对点,一对多及广播集中方式传送和接受数据,而且可以任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。CAN 通讯距离最大是1O公里(设速率为5Kbps),最大通信速率为1Mbit/s(设通信距离为4O米)。

4)CAN 采用非破坏性的总线仲裁技术,即载波侦听多路访问/冲突检测(CSMA

/CD)的总线仲裁方式,当多个节点同时发送数据时,优先级低的节点会主动停止发送,高优先级的节点可继续传输,节省总线仲裁时间。避免多个节点同时开始发送消息而造成总线冲突,保证优先级高的报文能够优先发送。

5)CAN总线协议采用了完善的错误检测与错误处理机制,包括了CRC校验、错

误报文自动重发、错误状态判断、临时错误自动恢复等措施,从而很好的保证了数据通信的可靠性。节点在错误严重的情况下,具有自动关黔

6)闭总线的功能,切断它与总线的联系,以使总线上其他操作不受影响。CAN 总

线采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作。具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点。可根据报文的ID决定接收或屏蔽该报文。可靠的错误处理和检错机制,发送的信息遭到破坏后,可自动重发,报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的通信,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。

CAN总线通过CAN 控制器接口芯片的输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状

态。CAN 总线的信号状态为2种,隐位与显位。当隐位与显位发送出现竞争时,最终结果是显位。在处理冲突时,由于该信号的二值且“单稳态”的特性变得简单,报错帧可以使所有节点很容易地取得一致性的数据,并且保证了节点状态的同步,这种二值特性对CAN 总线的可靠性有很大保障。而且CAN 节点在出现严重错误的情况下,可以自动关闭输出,避免总线上其他节点的操作受影响,从而保证不会因个别节点出现问题,而使得总线处于”死锁”状态。CAN 总线具有位填充、回读、错误约束、出错自动重发等优点,同时通信速率高、通信距离远、容易实现、且性价比高。

1.3 CAN总线的发展前景

CAN 最初是用于汽车行业的监测、控制,用来解决汽车内部的复杂硬件信号接线的低成本通信总线,现今CAN总线已经被公认为一种可靠的网络总线在汽车上得以应用。CAN总线共享信息和资源,总线的数据通信提高了系统可靠性、实时性、灵活性、可维护性,更好地匹配和协调各个控制系统。

随着汽车电子技术的发展具有高度灵活性、简单的扩展性、优良的抗干扰性和处理错误能力的CAN 总线,越来越受到人们的重视,它在汽车领域上得到了广泛的应用。世界上一些著名的汽车制造厂商,都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。近年来CAN 总线已发展成为汽车电子系统的主流总线,已形成国际标准的现场总线,并由ISO正式颁布了ISCAN 高速应用标准和ISO11519CAN 低速应用标准,这为CAN 总线的标准化、规范化铺平了道路。CAN 总线以其高性能,高可靠性及独特的设计,在现代分布式测量与控制技术领域中的应用已愈来愈广泛。同时由于CAN 总线自身的特点,其应用范围目前已不再局限于汽车行业,而是转向铁路、交通、自动控制、航空航天、航海、机械工业、机器人、医疗器械及安防等领域发展。

CAN总线的发展已经颇具规模,它不仅在汽车领域的应用占据一定优势,在其他工业领域内也占有一席之地。这要归根于通信技术的不断进步,对通讯本身的要求不断提高,这种形势下CAN 总线的优势在于其优越的抗干扰能力和性价比。尽管CAN总线有一定局限,甚至还有漏洞,但对CAN 总线的改进还在继续,相信在未来的发展中,CAN 总线通过不断的更新和改进,能够取得更大的进步。

第2章系统方案总体设计

2.1 系统原理

当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要CAN总线的报文发送和接收。当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时, 转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。

由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。

2.2 系统总体设计方框图

图2-1 系统总体设计方框图

2.2.1 51单片机

系统的控制芯片采用AT89S52单片机来控制,因为AT89S52应用比较广泛,并且成本低,操作控制简单,功耗较低,运行可靠性强。系统本身对处理器处理速度的要求不是很高,所以选择该款单片机。

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常

规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

图2-2 AT89S52引脚结构

图2-3 AT89S52内部结构图

?VCC : 电源

?GND: 地

?P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;

在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

?P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。

表2-1 P1口引脚功能

?P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。

在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

?P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。

表2-2 P3口引脚功能

?RS: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。

?ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位

地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。

在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部

定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE

脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE

操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC指令时有效。否

则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0

位)的设置对微控制器处于外部执行模式下无效。

?PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当

AT89S52从外部程序Array存储器执行外部代

码时,PSEN在每个机

器周期被激活两次,

而在访问外部数据

存储器时,PSEN将不

被激活。EA/VPP:访

问外部程序存储器

控制信号。为使能从

0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部

程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。

?XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。

?XTAL2:振荡器反相放大器的输出

2.2.2 CAN总线收发器

PCA82C250 是CAN 协议控制器和物理总线的接口这个器件对总线提供不同的

发送能力和对CAN控制器提供不同的接收能力。

图2-4 82C250引脚结构

表2-3 82C250引脚管脚功能描述

图2-5 82C250方框图 功能描述: PCA82C50 是CAN 协议控制器和物理总线的接口,它主要用于汽车里的高速应用(高达1Mbaud)。这个器件对总线提供不同的发

送能力和对CAN 控制器提供不同的接收能力完全和ISO11898标准兼容。限定的电流值保护接收器输出级,避免阳极和阴极的短路,尽管在默认的条件下功率消耗是增加的这个特征值将防止发送器输出级的毁坏。如果节点温度超过大约160摄氏度,发送器限定的电流值输出被降低因为发送器占去大部分的功率消耗,这将导致降额功耗和较低的片内温度,IC 中的其它部分在使用中将保持不变,当总线短路的时候热保护非常需要。这个CANH CANL 线也被保护防止自动运作过程中电流的瞬变。

表2-4 CAN 收发器真值表

注意:X=随意值

表2-5 管脚 RS 真值表

管脚8 RS 有三种不同的工作模式可被选择: 高速,备用,斜率控制。

对于高速工作模式,发送器输出级晶体管被尽可能地快启动和关闭,在这种模式下,没有措施用于限制上升和下降的斜度。建议使用屏蔽电缆可避免RFI 这种问题。

通过把管脚8接地选择这个模式。对于低速或较短的总线长度,可使用一种没有屏蔽的双绞线或平行线。对于降低 RFI,上升和下降的斜率是个限定值,上升和下降的斜率能够被编程,通过从管脚8 接一个电阻至地,这个斜率和管脚8 的电流输出成比例。

如果高电平被接至管脚8 ,电路进入低电流保护模式。在这种模式下,发送器被关闭,接收器开至低电流。如果控制位被检测(不同的总线电压<0.9V), RXD 将被开至低电平。

这个微型控制器应对这个条件有所反应,通过转换收发器至正常工作状态。(经过管脚8)因为这个接收器在备用模式下比较慢,第一条信息会丢失掉。2.2.3 CAN总线控制器

CAN总线控制器选用SJA1000,SJAl000是一个独立的控制器,有两种不同的模式。

(1)BasicCAN模式:系统上电后默认的模式,与PCA82C200兼容。

(2)PeliCAN模式:支持CAN2.0B协议规定的所有功能。

图2-6 SJA1000引脚结构

SJAl000功能模块主要有:接口管理逻辑、接收FIFO队列、接收滤波器、发送缓冲器和CAN核心模块。CAN核心模块基于CAN2.0B的协议执行对CAN帧的发送和接收。逻辑管理接口实现与外部单片机的连接。SJAlO00的发送缓冲器可以存储一个完整的报文,当单片机开始一个传送时,逻辑管理接口会使CAN核心模块读发送缓冲器的数据,依照CAN2.OB协议发送数据。当收到一个报文时,cAN核心控制模块将连续的位转换为标准的数据存放于接收过滤器中,通过验收码寄存器、验收屏蔽寄存器进行过滤处理,将符合标志位要求的数据放人接收FIF0队列中以下为SJA1000芯片的特点:

◆管脚及电气特性与独立CAN总线控制器PCA82C200兼容;

◆软件与PCA82C200兼容(缺省为基本CAN模式);

◆扩展接收缓冲器(64字节FIFO);

◆支持CAN2.0B协议;

◆同时支持11位和29位标识符;

◆位通讯速率为1Mbits/s;

◆增强CAN模式(PeliCAN);

◆采用24MHz时钟频率;

◆支持多种微处理器接口;

◆可编程CAN输出驱动配置;

◆工作温度范围为-40~+125℃。

图2-7 SJA1000内部结构图

从芯片的结构图中可以看出,SJA1000型独立CAN总线控制器由以下几部分构成:

(1)接口管理逻辑:它接收来自微处理器的命令,控制CAN寄存器的地址,并为微处理器提供中断和状态信息。

(2)发送缓冲器:有13字节长。它位于CPU和位流处理器(BSP)之间,能存储一条将在CAN总线上发送的完整的报文,报文由CPU写入,由SBP读出。

(3)接收缓冲器(RXB、RXFIFO):它是CPU和接收滤波器之间的接口,用来存储从CAN总线接收并通过了滤波的报文。接收缓冲器RXB是提供给CPU可访问的13字节的窗口,这个窗口是属于接收FIFO(RXFIFO)的一部分,共由64字节长。有了这个FIFO,可以在CPU处理一个报文的同时继续接收其他到来的报文。

(4)接收滤波器:它把报文头中的标识符和接收滤波寄存器中的内容进行比较,以判断文报文是否被接收。如果被接收,报文存入RXFIFO。

(5)位流处理器:它是一个控制发送缓冲器、RXFIFO并行数据和CAN总线(串行数据)之间数据的序列发生器,同时它也执行错误检测、仲裁、位填充和CAN总线错误处理功能。

(6)位定时逻辑不:它将SJA1000同步于CAN总线上的位流。

(7)错误管理逻辑:它按照CAN协议完成错误界定。

2.2.4 光耦合器

6N137光耦合器是一款用于单通道的高速光耦合器,其内部有一个850 nm 波长AlGaAs LED 和一个集成检测器组成,其检测器由一个光敏二极管、高增益线性运放及一个肖特基钳位的集电极开路的三极管组成。具有温度、电流和电压补偿功能,高的输入输出隔离,LSTTL/TTL 兼容,高速(典型为10MBd),5mA的极小输入电流。

图2-8 6N137引脚结构

特性:

①转换速率高达10MBit/s;

②摆率高达10kV/us;

③扇出系数为8;

④逻辑电平输出;

⑤集电极开路输出;

工作参数:

最大输入电流,低电平:250uA 最大输入电流,高电平:15mA 最大允许低电平电压(输出高):0.8v 最大允许高电平电压:VCC 最大电源电压、输出:5.5V 扇出(TTL 负载):8个(最多) 工作温度范围:-40°C t o+85°C 典型应用:高速数字开关,马达控制系统和A/D 转换等。

信号从脚2 和脚3 输入,发光二极管发光,经片内光通道传到光敏二极管,反向偏置的光敏管光照后导通,经电流-电压转换后送到与门的一个输入端,与门的另一个输入为使能端,当使能端为高时与门输出高电平,经输出三极管反向后光电隔离器输出低电平。当输入信号电流小于触发阈值或使能端为低时,输出高电平,但这个逻辑高是集电极开路的,可针对接收电路加上拉电阻或电压调整电路。

原理如上图所示,若以脚2 为输入,脚3 接地,则真值表如附表所列,这相当于非门的传输,若希望在传输过程中不改变逻辑状态,则从脚3 输入,脚2 接高电平。)

表2-7 真值表

图2-9 测试电路和波形

第3章系统硬件设计

3.1系统硬件的基本组成部分

该系统的硬件主要包含这几个部分:处理器、CAN总线控制器、CAN总线收发器。

结构电路如下:

图3-1 系统硬件结构电路

3.2 单片机电路设计

本设计选择AT89S52单片机。AT89S52自带有片内ROM和一定数量的RAM,一般不需要扩展片外的存储器,并且能和MCS—51产品兼容。本设计选用简单基本的经典复位电路,它利用电容和电阻的充放电来产生一个达到时间要求的连续低电压,并输入到单片机的复位管脚,如下图所示:

图3-2 单片机结构电路

3.3 CAN总线控制器电路设计

SJA1000被设计为全面支持CAN 2.0B协议,而且支持多处理器接口,其接口电路十分简单,如下图所示:

其电路图如下:

图3-3 控制器结构电路

3.4 CAN总线收发器电路设计

CAN总线收发器选用PCA82C250,其封装为SOIC,而且只有8个引脚,其设计电路如下图所示:

图3-4 CAN总线收发器结构电路

第4章软件设计

4.1软件总体设计

程序设计主要分为3部分:SJA1000初始化子程序、发送子程序、接收子程序。可以说所有CAN通信程序设计都是遵循这3个基本步骤的,所以熟练掌握这3部分子程序的设计对于应用CAN总线的工程技术人员来说是非常有必要的。

图4-1 CAN节点自发自收基本流程图

4.2 CAN初始化

图4-2CAN节点初始化流程图

4.3 SJA1000初始化

微控制器和SJA1000之间状态、控制和命令信号的交换都是在控制段中完成的。初始化加载后,寄存器的接收代码、接收屏蔽、总线定时寄存器0和1以及输出控制就不能改变了。SJA1000共有2种工作模式:复位模式和工作模式。当硬件复位或控制器掉电时会自动进入复位模式,只有在复位模式下才可以对SJA1000进行初始化。初始化主要包括工作方式的设定、接收屏蔽寄存器和接收代码寄存器的设定、总线时序寄存器的设置、输出模式寄存器和中断使能寄存器的设置等。在初始化完成以后,CAN总线就可以开始进行数据的接收与发送工作。

图4-3 SJA1000初始化流程图

4.4 发送与接收

首先与CAN控制器连接的微处理器必须将要发送的数据从其数据存储区中取出,与主机的ID地址一起组成信息帧按CAN报文结构发送到发送缓冲器中,并置位命令寄存器中的发送请求标志,接收到发送请求后发送过程由CAN控制器自动完成。在检测到接收缓冲器中存在有效报文后,接收程序将接收缓冲器中的内容读入CPU的数据存储区。接收完毕后检查总线状态及溢出情况等并做相

应处理。

图4-4 发送与接收程序流程图

第5章系统调试

计算机通过串口RS232发送数据到单片机AT89S52,单片机通过CAN控制器以及CAN收发器把数据转换成CAN通讯,传送到CANH,CANH把数据传送给CANL,CANL又通过CAN控制器把数据转换成串口通信数据发送到计算机,实现自发自收。

图5-1 系统调试图

在实现的过程中,用了一个LED,单片机发送一组数组TX[ ]缓冲区里的数据,转换成CAN通讯CANH发送,LED变换一次,CANL收回来。将接受到的数据保存到数组RX[ ]缓冲区。LED变换一次,同时用示波器的红色探头接触控制器的接收和发送的数据端,观察接收和发送的数据是否一致。

图5-2 系统调试实物图

调试结果比对:

图5-3 发送的示波器示意图图5-4 接收的数据示波器示意图

由上面的图对比可以看出,接收的数据和发送的数据时一致的,实现了设计需要实现的功能—自发自收。

结论

采用了多主工作方式及CSMA/CD的CAN总线以其显著优于传统“一主多从”式多机串行通讯模式而得到了广泛应用。实践表明,由于CAN总线结构简单,器件容易购置,开发技术易于掌握,且具有统一的国际标准,故在现场总线的发展中占有了重要位置。

本系统设计通过单片机,CAN控制器SJA1000以及CAN收发器PCA82C250的电路设计,实现了CAN通信的自发自收。计算机通过串口RS232发送数据到单片机AT89S52,单片机通过CAN控制器以及CAN收发器把数据转换成CAN通讯,传送到CANH,CANH把数据传送给CANL,CANL又通过CAN控制器把数据转换成串口通信数据发送到计算机,虽然这个系统简单,但在调试的过程中仍遇到了很多问题。通过这次设计,对CAN的通信有了较为深刻的认识和了解,以及对于不同通信方式之间的转换有了掌握。

本系统设计电子学,数据通讯,硬件设计,软件设计等多方面的内容,知识范围广,由于本人水平有限,在设计过程中还有很多不足和不够完善的地方,恳请诸位专家、老师大力斧正,不吝赐教。

致谢

本课题的选题、研究以及撰写工作是对大学生活的一个总结。在研究过程中,积累了很多实际经验和技巧,思维更加严谨,分析问题更加科学,做事更加细心。首先,非常感谢我的指导老师王敏。正是在她孜孜不倦的教诲和亲切关怀下本文才得以顺利完成。王老师治学严谨、学识渊博,在大学期间给我指明发展方向,不仅传授专业理论知识,而且给我很多实践机会,她那踏实的工作作风以及高度负责的科研精神更是让我终身受益。

其次,感谢培育我的母校,感谢测控技术与仪器专业的全体老师,是你们的辛勤培养使我掌握了扎实的专业基础知识;感谢我所有的朋友和同学,在成都理工大学一起生活和学习的美好时光里,给我的大学生活增添了无穷的乐趣和光彩,我们之间的深厚友谊将是我一生中最美好的留念。

还要感谢我的家人,多年来他们总是只知付出,不求索取的爱护我、理解我、关心我、支持我,我的每一个足迹都离不开他们的默默付出,他们鼓励的目光永远是我前进的动力。

最后,谨向在百忙之中审阅本文的各位专家和评委老师表示衷心的感谢。

参考文献

[1]孙涵芳.Intel 16位单片机[M].北京:航空航天大学出版社.2000.

[2]邬宽明.CAN总线原理和应用系统设计[M].北京:航空航天大学出版社.2001.

[3]蒋方帅.Delphi5程序员指南[M].北京:人民邮电出版社.2000.

[4]方方,周伟. 单片微机原理及应用[M]. 清华大学出版社,北京交通大学出版社.2007

[5]楼然苗,李光飞. 单片机课程设计指导[M]. 北京北京航空航天大学出版社.2007

[6] 杨春杰, 王曙光, 亢红波.CAN总线技术[M]. 北京航空航天大学出版社 .2010

[7]李勇,张怡.CAN总线的设计与实现[M].西北工业大学电子系.2000

[8] 杜善封.CAN总线测控技术及应用[M].电子工业出版社.2007

[9] 邹应全.51系列单片机原理与实验教程[M]. 西安电子科技大学出版社.2007

[10] 邬宽明. CAN总线原理和应用系统设计[M] . 北京航空航天大学出版社. 1996

[11] 苏伟斌. 8051系列单片机应用手册.科学出版社[M].1997

[12] 李真花, 崔健.CAN总线轻松入门与实践[M]. 北京航空航天大学出版社2011

[13] Paret , Dominique .Le Bus CAN : [Controller Area Network].Dunod, 1996

[14] jianling zhao,yuanyuan xue. MCU development & application internals[M] .电子工业出版社.2009

[15] Carninci , Piero. L'information economique et technique de la profession[M]. Societe d'Expansion Technique et Economique 1989-2005 [16]夏巍,丁刚,严辉.基于CAN总线和嵌入式网关的家庭智能控制网络[J].工业仪表与自动化装置,2008(6):29-31.

[17]朱齐丹,汪瞳.CAN通信物理层建模与仿真口[J].计算机工程与应用,2008,

44(36):11—15.

[18]武忠祥,裴仁清,王黎俪,等.基于CAN总线的分布式控制器设计和实现[J].电子技术应用,2008(5):108—111.

[19]王平,程明传.嵌入式无线家庭网关的设计与实现[J].微计算机应用,2008,19(11):53~56.

[20]孙兵,何瑾,陈广厦.基于DSP的CAN总线与以太网互联系统研制[J].仪器仪表学报,2008,29(2):377—380.

[21]范伟成,王文良,沈孟良.基于ATmega128单片机的CAN总线接口设计及应用[J].测控技术,2008,27(10):48—50.

附录一

系统原理图:

附录二

程序:

/***********CAN自发自收********************/

#include

#include "SJA1000_PELI.h"

sfr WDT_CONTR = 0xe1;

#define LED0 P1_5

#define LED1 P1_6

extern bit g_RiFlag;

extern void SJAInit(void);

extern bit SJASendData(unsigned char *SendDataBuf);

extern bit SJAReceData(unsigned char *ReceiveDataBuf);

void RS232Init(void);

void DelayTime (unsigned int times);

void CAN_TX( void);

void CAN_RX( void);

unsigned char TX[11];

利用51单片机实现SPI总线通信

利用51单片机实现SPI总线通信 一:题目及要求 1:基本内容 1.1:理解51单片机和SPI总线通信的特性和工作原理; 1.2:以51单片机为核心分别设计SPI总线通信发送及接收电路; 1.3:熟练应用C语言或汇编语言编写程序; 1.4:应用Protues软件完成仿真,仿真结果需包括示波器波形,通过一定的 方式(如LED灯、LED显示器等)显示发送和接受数据结果; 1.5:下载程序到开发板,实现串口通信功能(选做); 1.6:提交设计报告。 2:基本要求 本设计采用三线式SPI总线,一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO。时钟极性CPOL=0,时钟相位CPHA=0。 二:设计思路 1:掌握51单片机和SPI总线通信的工作原理; 2:利用1中的原理设计SPI总线通信发送和接受电路; 3:编程模拟SPI时序,包括串行时钟、数据输入和输出; 4:利用Protues软件仿真,观察结果; 5:顺利仿真后,下载到开发板实现串行通信功能。 三:设计过程及内容 1:SPI总线简介 SPI ( Serial Peripheral Interface ——串行外设接口) 总线是Motorola公司推出的一种同步串行接口技术。SPI总线系统是一种同步串行外设接口,允许MCU(微控制器)与各种外围设备以串行方式进行通信、数据交换。外围设备包括FLASHRAM、A/ D 转换器、网络控制器、MCU 等。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现

基于51单片机的USB键盘设计与实现

三江学院 本科生毕业设计(论文)题目基于51单片机的USB键盘设计与实现高职院院(系)电气工程及其自动化专业 学生姓名梁邱一学号 G105071013 指导教师孙传峰职称讲师 指导教师工作单位三江学院 起讫日期 2013年12月10日至2014年4月12日

摘要 随着计算机技术的不断更新和多媒体技术的快速发展,传统的计算机外设接口因为存在许多缺点已经不能适应计算机的发展需要。比起传统的AT,PS/2,串口,通用串行总线USB,具有速度快,使用方便灵活,易于扩展,支持即插即用,成本低廉等一系列优点,得到了广泛的应用。 本论文阐述了51系列单片机和USB的相关内容,详细介绍了系统的一些功能设计,包括硬件设计和软件设计。在程序调试期间用简单的串口通信电路,通过串口调试助手掌握了USB指令的传输过程,这对整个方案的设计起到了很大的指导作用。论文以单片机最小系统配合模拟键盘组成的USB键盘硬件系统,通过对D12芯片的学习与探索,在其基本命令接口的支持下,结合硬件进行相应的固件程序设计,使其在USB协议下,实现USB模块与PC的数据通信,完成USB键盘的功能模拟。 总结论文研究工作有阐述USB总线的原理、对本设计的系统要求作出了分析、根据要求选定元件和具体编程方案、针对系统所要实现的功能对相关芯片作了详细介绍以及在硬件部分设计了原理图。 关键词:USB;D12;PC

Abstract With the rapid development of computer technology and multimedia technology constantly updated, traditional computer peripheral interface because there are many shortcomings have been unable to meet the development needs of the https://www.360docs.net/doc/de7514010.html,pared to traditional AT, PS / 2, serial, Universal Serial Bus USB, with fast, flexible and easy to use, easy to expand, support Plug and Play, a series of advantages, such as low cost, has been widely used. This paper describes the 51 series and USB related content, detailing some of the features of the system design, including hardware and software design.During debugging a simple serial communication circuit, through the serial port debugging assistant master USB transfer instructions, which designed the entire program has played a significant role in guiding.Thesis smallest single-chip system consisting of analog keyboard with a USB keyboard hardware system, by learning and exploration D12 chips, with the support of its basic command interface, in conjunction with the corresponding hardware firmware design, making it in the USB protocol, USB module data communication with the PC, the USB keyboard to complete the functional simulation. This paper summarizes research work has elaborated the principle of the USB bus, the system is designed to require the analysis, components and solutions based on the specific requirements of the selected programming for the system to achieve the function of the relevant chips are described in detail in the hardware part of the design as well as the principle of Figure. Keywords:USB;D12;PC

CAN总线故障检查方法

一、CAN总线简介 CAN总线即控制器局域网,为串行通信协议,能有效得支持具有很高安全等级得分布实时控制,在汽车电子行业中,使用CAN连接发动机控制单元,传感器,防刹车系统等等,其传输速度可达到1Mbit/S。 1、CAN总线数据生成 CAN总线得数据分为模拟信号与数字信号,模拟信号就是由传感器检测得到,并将得到得信号进行转换(A/D),变成数字信号,送给MCU,由MCU将生成得CAN报文发送到总线上。模拟信号一般显示在指针表上,如气压1,气压2等.数字信号相对简单,可直接由MC U接收,然后将报文发到CAN总线上,如发动机诊断,刹车片磨损等等,一般显示在仪表上. 2、CAN信号线 CAN传输得两条信号线被称为CAN_H 与CAN_L。通电状态:CAN_H(2、5V)、CAN_L(2、5V)或CAN_L(3、5V)、CAN_H(1、5V)断电状态:CAN_H、CAN_L之间应该有60~62欧电阻值,两个120欧分别在仪表模块与后控模块中,并联后就是60欧姆左右。 ?友情提示:用万用表就是测不准CAN_H或CAN_L电压得,因为通电后C AN线上得电压在不停变化,而万用表得响应速度很慢,所以测得得电压就是并不就是当前电压而就是电压得有效值。 3、唤醒线WAKEUP

CAN总线所有模块都有两个WAKEUP引脚,模块内部就是连接在一起得,前控模块为WAKEUP输出,其它模块为WAKEUP得输入,连线时总线各模块得WAKEUP都必须与前控连接在一起,当前控电源正常、钥匙1档(ACC档)开时,前控正常工作,WAKEUP输出(输出电压值约等于当前电源电压),总线其它模块收到WAKEUP信号,模块被唤醒,在电源正常得情况下,各模块开始工作。 二、线路与模块得基本检查 1、线路得基本检查分为输入与输出线路。 对输入线路得检查:首先,要找到输入得管脚(各种车得管脚定义不同);然后将输入得管脚与模块断开;最后对线路就是否有信号输入进行检查. 对输出线路得检查 首先,确定输出得线路就是否断线或搭铁。将管脚与模块断开后测量.然后就是测量线路就是否有输出.将模块与管脚连接后检查. 2、模块得基本检查包括对电源线、地线、唤醒线、CAN线得检查。 电源得检查:模块上一般有4根左右得电源线,在模块正常工作时,每个电源都应该有24 v得电压。 地线得检查:模块上一般都有2到3根地线,在模块工作时,这些地线都要与全车得地线接触良好. 唤醒线得检查:每个模块都要有1根唤醒线,在模块工作时有24v得电压。

单片机常用总线讲解

第8章单片机常用总线讲解 8.1 C总线接口 80C51单片机本身不具有总线接口,但是通过软件进行模拟,可以挂接具有C接口的芯片。 8.1.1 C总线的介绍 串行扩展总线在单片机系统中的应用是目前单片机技术发展的一种趋势。在目前比较流行的几种串行扩展总线中,总线以其严格的规范和众多带接口的外围器件而获得广泛应用。总线是PHILIPS公司推出的芯片间串行传输总线,它由两根线组成,一根是串行时钟线(SCL),一根是串行数据线(SDA)。主控器利用串行时钟线发出时钟信号,利用串行数据线发送或接收数据。总线由主控器电路引出,凡具有接口的电路(受控器)都可以挂接在总线上,主控器通过总线对受控器进行控制。 随着总线研究的深入,总线已经广泛应用于视/音频领域、IC卡行业和一些家电产品中,在智能仪器、仪表和工业测控领域也越来越多地得到应用。 8.1.2 总线的特点 总线的广泛应用是同它卓越的性能和简便的操作方法分不开的。总线的特点主要表现在以下几个方面: 硬件结构上具有相同的硬件接口界面。总线系统中,任何一个总线接口的外围器件,不论其功能差别有多大,都是通过串行数据线(SDA)和串行时钟线(SCL)连接到总线上。这一特点给用户在设计用用系统中带来了极大的便利性。用户不必理解每个总线接口器件的功能如何,只需将器件的SDA和SCL引脚连到总线上,然后对该器件模块进行独立的电路设计,从而简化了系统设计的复杂性,提高了系统抗干扰的能力。 线接口器件地址具有根大的独立性。每个接口芯片具有唯一的器件地址,由于不能发出串行时钟信号而只能作为从器件使用。各器件之间互不干扰,相互之间不能进行通信,各个器件可以单独供电。单片机与器件之间的通信是通过独一无二的器件地址来实现的。 软件操作的一致性。由于任何器件通过总线与单片机进行数据传送的方式是基本一样的, .v .. ..

使用泰克MSO4000示波器测试与分析CAN总线信号

主题TOPIC —————————————————————————————————TITLE:使用泰克MSO4000示波器测试与分析CAN总线信号 OBJET :介绍了泰克MSO4000系列示波器在CAN网测试中的若干应用

目录 1目的 (3) 2适用范围 (3) 3参考文件 (3) 4历史 (3) 5泰克MSO4000示波器简介 (4) 6利用MSO4000示波器对CAN LS信号进行采集和解码 (4) 6.1 对示波器进行设置 (4) 6.2 监测CAN LS网络上的CAN_H和CAN_L电平信号 (5) 6.3 技术规范对CAN LS信号电平值的规定 (8) 6.4 监测CAN LS网络的总线解码信号 (9) 7利用MSO4000示波器对CAN HS信号进行采集和解码 (10) 7.1 对示波器进行设置 (10) 7.2 监测CAN HS网络上的CAN_H和CAN_L电平信号 (10) 7.3 技术规范对CAN HS信号电平值的规定 (11) 7.4 监测CAN HS网络的总线解码信号 (11) 8使用泰克“e﹡Scope”功能对示波器进行远程操作 (12) 9使用Open Choice软件自动获取示波器屏幕截图 (13) 10使用SignalExpress TE软件实现自动化测试 (15) 2 of Page 19

1 目的 CAN网络信号的测试包括总新电平信号的采集、电压值的测量、信号解码分析、总线通讯状态监测等内容,这部分内容也是构成CAN网络底层测试的基础,测试结果的正确与否,直接关系到整车电器架构的稳定性与电控单元功能的完好性,因此如何便捷高效地完成CAN网络的测试,已经成为整车验证环节中不可回避的一个话题。本文中提出了一套使用泰克MSO4000系列示波器与配套的LabVIEW SignalExpress TE软件进行CAN总线信号测试与分析的方法,从而完成整车高速、低速CAN网络信号的分析与测试工作。通过“示波器+PC软件”的方式,测试人员可以方便快捷地对总线信号进行实时监测,也可以使用示波器的解码功能直接观测到对应的逻辑信号。在使用附属的SignalExpress TE软件后,还可以实现远程测试、自动化测试等功能,与其它测试和分析方法相比,具有入门简单、适用范围广、数据采集精度高等优点,大大提高了基于CAN总线技术的电控单元的开发与测试效率。 2 适用范围 供新车型项目中进行CAN网底层测试时参考使用。 3 参考文件 4 历史

基于CAN总线的汽车测试解决方案

基于CAN总线的汽车测试解决方案 于CAN总线的汽车测试解决方案一、前言 随着中国汽车市场的快速发展和汽车电子的价值含量迅速提高,针对汽车电子的测试技术也变的日益复杂,在全球化的汽车设计和生产的趋势下,中国本地的工程师越来越感觉到汽车电子测试所面临的种种困难,其中主要包括:(一)无法满足产品线不断更新的需求,并希望减少产品投放市场的周期。 1.汽车电子产品的日益更新,要求测试系统以最快的速度满足新的需求。而目前国外引进的专用测试系统往往升级周期较长,无法满足本地瞬息万变的产品测试需求。图1:基于PXI TestStand平台的测试系统 2.专业汽车电子厂商往往生产多个不同型号的同类产品,并根据订单、物流的条件,其生产计划经常发生变化。如果不同型号的产品都采用不同的测试设备,将会导致测试设备重复利用率过低,大大降低投资效率。 (二)目前汽车电子测试缺乏通用仪器的解决方案,如汽车音响及仪表盘的测试往往需要专门定制的仪器,而且这些仪器价格非常昂贵。 (三)本地的售后服务和及时的故障响应。测试生产线上一切以生产线的持续运行为最高目标,当中国工程师不能掌握

全面的故障诊断和维修技术时,就只能向国外的工程师求助,这样容易导致响应速度慢,且代价昂贵。 (四)复杂的汽车测试系统常常需要多种测量和控制任务的协同工作,一个用于集成的软硬件同步平台就显得尤为的重要。 二、支持CAN协议的柔性测试设备 20世纪80年代Bosch公司为解决汽车系统中各个电子单元之间的通信问题开发了CAN总线标准。这种串行总线用2 根或1根电线把汽车里的各个电子设备连接起来,相互可以传递信息。采用CAN总线避免了电子模块间大量繁复的连线,比如仪表板上车速、发动机转速、油量和发动机温度的指示就不需要连接不同的线缆到对应的传感器,而只需要接入CAN总线,就可以从总线上获取相应信息。CAN的卓越表现使汽车制造商们纷纷开发并使用基于CAN和数据采集 设备的测试系统。国际标准组织将CAN总线接纳为ISO 11898标准。NI公司在其标准虚拟仪器测试平台上推出CAN 控制器系列,支持多种CAN总线的协议,其中包括高速CAN、低速容错CAN和单线CAN。尤其是新推出的PXI-8464软 件可选类型的CAN控制器,可以让你不用更改硬件连接, 就适应各种CAN通信协议,同时既可以作为总线控制器, 又可以作总线通信分析仪,使得测试设备可以在最大程度上适应柔性生产。

STM32的can总线实验心得要点

STM32的can总线实验心得 (一) 工业现场总线 CAN 的基本介绍以及 STM32 的 CAN 模块简介 首先通读手册中关于CAN的文档,必须精读。 STM32F10xxx 参考手册Rev7V3.pdf https://www.360docs.net/doc/de7514010.html,/bbs/redirect.php?tid=255&goto=lastpost#lastpos t 需要精读的部分为 RCC 和 CAN 两个章节。 为什么需要精读 RCC 呢?因为我们将学习 CAN 的波特率的设置,将要使用到RCC 部分的设置,因此推荐大家先复习下这部分中的几个时钟。 关于 STM32 的 can 总线简单介绍 bxCAN 是基本扩展 CAN (Basic Extended CAN) 的缩写,它支持 CAN 协议 2.0A 和 2.0B 。它的设计目标是,以最小的 CPU 负荷来高效处理大量收到的报文。它也支持报文发送的优先级要求(优先级特性可软件配置)。 对于安全紧要的应用,bxCAN 提供所有支持时间触发通信模式所需的硬件功能。 主要特点 · 支持 CAN 协议 2.0A 和 2.0B 主动模式 · 波特率最高可达 1 兆位 / 秒 · 支持时间触发通信功能 发送 · 3 个发送邮箱 · 发送报文的优先级特性可软件配置 · 记录发送 SOF 时刻的时间戳 接收 · 3 级深度的2个接收 FIFO · 14 个位宽可变的过滤器组-由整个 CAN 共享 · 标识符列表 · FIFO 溢出处理方式可配置 · 记录接收 SOF 时刻的时间戳 可支持时间触发通信模式 · 禁止自动重传模式 · 16 位自由运行定时器 · 定时器分辨率可配置 · 可在最后 2 个数据字节发送时间戳 管理 · 中断可屏蔽

CAN宝马车系CAN总线信号的检测

宝马车系CAN总线信号的检测 CAN总线信号检测 此说明用于检查总线连接上的CAN高速和CAN低速信号电平是否正确。 使用的电缆。 多功能检测导线 检测提示 ◇电压检测(示波器):电压检测的前提条件是,蓄电池已连接并且点火开关已接通 ◇电阻测量:在电阻测量时,在测量前必须把待A部件断电,为此应断开车辆蓄电池的接线,等待约3 min,直到系统中的所有电容器放完电 关于CAN总线的信息 CAN(控制器区域网络)总线系统是一种线形总线系统并具有以下特征: ◇信号双向传播 ◇所有总线用户都接收同一个信息,每个一弥线用户决定,它是杏利用该信息 ◇通过简单并联即可添加附加的总线用户 ◇此总线系统构成一个多主控单元系统,每个总线用户可以是主控单元也可以是副控制单元,根据其作为发射器还是接收器被连接而定

◇传输媒介是双线连接,导线的名称为:CANLow(低速)和CANHigh(高速) ◇廊仕每个总线用户可以通过总线同所有其他总用户通信,通过干预法,控制总线上的数据交换,数据总线K-CAN(车身CAN)、PT-CAN(传动系CAN)和F-CAN(底盘CAN)之间的主要区别是: (1)K-CAN:数据传输率约l00kBit/s,可以进行单线运行。(2)PT-CAN:数据传输率约500kBit/s,不能进行单线运行。 (3)F-CAN:数据传输率约500kBits/s,不能单线运行。 主控单元:主控单元是主动式通信方,、通信的主动权由它发出。主控制单元掌控总线,并控制通信。主控制单元能够在总线系统中向被动式总线用户(副控制单元)发送信息,并根据被动式用户的要求接收信息。 副控制单元:副控制单元是一个被动式通信用户,副控制单元被要求接收和发送数据。 多主控单元系统:在一个多主控单元系统中所有的通信用户在某个时间都能够担当主控单元或副控制单元的角色。 示波器测量 K-CAN;PT-CAN、F-CAN 为了弄清CAN总线是否完好工作,必须观察总线上的通信情况。在这种情况下不需要分析单个位,而只需要观察CAN总线是否工作。示波器测量说明:“CAN总线很可能无故障工作”。

CAN总线检测方法

C A N总线检测方法 1、车辆无法启动。 (1)首先观察无法启动时车辆的状态,主要是仪表。观察仪表是否有电,因为从仪表上可以看到车上其他模块的工作状态。如果仪表没有电可按下面的方法查起。首先,要检查仪表没电时的状态。因为仪表的显示受前控模块和顶控模块的控制。同时后控模块也影响仪表。 当打开电源开关后,按下ON档开关。看车上总线相连的开关是否有电。如有电说明是前控的问题,这里指根前控相关的所有问题。包括前控的线路问题。如没有电说明是后控的问题。 这时可以通过另一种方法简易判断。即打开电源时仪表是否有电通过。有电就是前控的问题。没电则是后控的问题。 (2)当车上的仪表有显示时可以通过仪表的液晶显示屏进行观察。方法如下,按动仪表下方的上翻键或下翻键可以找到模块在线界面。当车辆不启动时,有可能是桥模块、后控模块或前控模块掉线引起的。观察是否在线可以轻松的判断。同时,桥不在线时仪表下面的挡位指示灯不亮,后控不在线时档位灯亮。若仪表下方N灯不亮,则发动机也无法正常启动,可检查发动机与变速箱通信线是否短路、断路。 (3)起动机可以转动,但是就是起动不着。这是由于发动机的电脑故障或者是供油系统的故障引起的。 排除的方法如下:

首先检查模块的保险是否烧毁。 其次检查车辆线束上的接插件是否牢靠。 最后是检查模块上的接线是否有退出的。 2、发动机的信号无法传入总线 这一般是由于发动机和总线的接口出现了问题。在车上一共有三个接口。一个在前部电线束里,一个在后备电箱中,另一个在发动机上面铁盒边,都是屏蔽线的自锁接头。查找这些插头,看看是否有问题。 3、仪表气压表显示不一致: 气罐压力传感器是通过检测气罐中的压力,传感器输出一个模拟电阻信号传输到中控,再由中控到总线(气罐压力传感器线号72对应中控针角4-17,负极搭铁信号线为76,另一个气罐压力传感器线号74对应针角4-18负极搭铁线号为77),由总线转为数字信号通过仪表模块显示气压,电阻越大则显示气压越高,当负极搭铁线掉后或针角线虚后,电阻变为无限大,则仪表压力将顶到顶部。气罐压力传感器在标准气压下电阻值为20欧。 4、依维柯油压不报警 威帝仪表模块参数低于0.07MPA报警,依维柯发动机在不启动状态电脑默认为0.1MPA,由此得出依维柯发动机油压不可能低于0.07MPA,威帝油压报警灯则不亮,不能够在油压低时提供报警,现威帝将报警值提高至0.15MPA,超过发动机电脑默认的机油压力,可确保在发动机未着车情况下油压报警灯亮。不可串电阻,因

CAN总线检测办法

CAN总线检测方法 1、车辆无法启动。 (1)首先观察无法启动时车辆的状态,主要是仪表。观察仪表是否有电,因为从仪表上可以看到车上其他模块的工作状态。如果仪表没有电可按下面的方法查起。首先,要检查仪表没电时的状态。因为仪 表的显示受前控模块和顶控模块的控制。同时后控模块也影响仪表。当打开电源开关后,按下ON档开关。看车上总线相连的开关是否有电。如有电说明是前控的问题,这里指根前控相关的所有问题。包括 前控的线路问题。如没有电说明是后控的问题。 这时可以通过另一种方法简易判断。即打开电源时仪表是否有电通过。有电就是前控的问题。没电则是后控的问题。 (2)当车上的仪表有显示时可以通过仪表的液晶显示屏进行观察。方法如下,按动仪表下方的上翻键或下翻键可以找到模块在线界面。当车辆不启动时,有可能是桥模块、后控模块或前控模块掉线引起的。观察是否在线可以轻松的判断。同时,桥不在线时仪表下面的挡位指示灯不亮,后控不在线时档位灯亮。若仪表下方N灯不亮,则发动机也无法正常启动,可检查发动机与变速箱通信线是否短路、断路。 (3)起动机可以转动,但是就是起动不着。这是由于发动机的电脑故障或者是供油系统的故障引起的。 排除的方法如下: 首先检查模块的保险是否烧毁。

其次检查车辆线束上的接插件是否牢靠。 最后是检查模块上的接线是否有退出的。 2、发动机的信号无法传入总线 这一般是由于发动机和总线的接口出现了问题。在车上一共有三个接口。一个在前部电线束里,一个在后备电箱中,另一个在发动机上面铁盒边,都是屏蔽线的自锁接头。查找这些插头,看看是否有问题。 3、仪表气压表显示不一致: 气罐压力传感器是通过检测气罐中的压力,传感器输出一个模拟电阻信号传输到中控,再由中控到总线(气罐压力传感器线号72对应中控针角4-17,负极搭铁信号线为76,另一个气罐压力传感器线号74对应针角4-18负极搭铁线号为77),由总线转为数字信号通过仪表模块显示气压,电阻越大则显示气压越高,当负极搭铁线掉后或针角线虚后,电阻变为无限大,则仪表压力将顶到顶部。气罐压力传感器在标准气压下电阻值为20欧。 4、依维柯油压不报警 威帝仪表模块参数低于0.07MPA报警,依维柯发动机在不启动状态电脑默认为0.1MPA,由此得出依维柯发动机油压不可能低于0.07MPA,威帝油压报警灯则不亮,不能够在油压低时提供报警,现威帝将报警值提高至0.15MPA,超过发动机电脑默认的机油压力,可确保在发动机未着车情况下油压报警灯亮。不可串电阻,因为依维柯发动机传感器提供给依维柯ECM电脑信号后才传送给威帝模块,其间模拟信号已转为数字信号(不需要A/D转换),如是传感器直接给

51单片机总线设计全攻略

单片机总线设计法全攻略 1、目前广大工程师在设计单片机系统时的两种方案之我见 针对51单片机,工程师们在设计系统时,从宏观上讲无非就是两种方案:总线式设计方案和非总线式设计方案。所谓总线式设计方案就是利用51单片机的读写外部RAM功能,将要设计的外部设备(比如说键盘、液晶等)统统挂到单片机总线上,使其统一按类似读写外部RAM功能的指令方法进行操作;而所谓非总线式设计方案,则是不利用单片机的读写外部RAM功能,而直接利用I/O 口读写方式进行外部设备的读写,比如说LED灯、液晶等,因为液晶有两种读写方式,总线方式和模拟I/O方式(贵刊也有文章介绍过),而这里读写液晶的模拟I/O方式就是这里我要说的非总线式设计方案。 那么这两种方案到底哪一种好呢?说这句话可能有点外行,我自己也这样认为,但是为了更好的让初学者了解其中的道理,我还是班门弄斧简单阐述一下:首先要说明,我的这种阐述是建立在有读写外部RAM功能的单片机的基础之上的。我个人认为,两种方案各有利弊: 对于总线式设计方案来说,优点就是能够充分发挥单片机的总线读写功能,系统一旦设计完成,易于日后的升级和扩展。缺点是灵活性差,硬件连接比较固定;同时由于单片机读写总线时必定要产生一定的总线时间延迟,这样对于低速的单片机来说,如果设计的系统非常庞大的话,那就需要设计人员考虑一下实时性要求了,但是根据我个人多年来的开发经验来说,只要设计得当,一般问题不大,但还是将此问题摆出来,让大家商榷。 对于非总线式设计方案来说,最大的优点就是灵活性强,这种方案可以根据设计者的爱好自由选择单片机端口进行外围设备的设计(当然是要在符合设计原则的前提下),缺点是升级需要重新设计电路图。 2、总线法设计单片机系统的原理和方法 2.1 总线法设计原理简介 总线式设计方案对于很多的初学者来说是比较困难的,因为对于这种方法

汽车测试标准之总线负载率测试

汽车测试标准之总线负载率测试 一直以来,汽车的测试都离不开CAN,而CAN的应用也离不开汽车行业。因此,在新能源汽车越发成熟的今天,CAN的一致性测试也成为各整车厂和零部件厂商关注的焦点。本文简单的对CAN一致性测试中的负载率测试做一些介绍。 负载率测试是CAN协议一致性测试里的必测项目,不同的测试人员对其的理解也有些差异。大多的测试主要分为两项,一项为测试CAN总线的负载率,另一项则是总线负载压力测试。 我们对两项常见的负载情况测试做一下测试方法的解析。 测试CAN总线的负载率,并没有固定的测试标准,大多数的CAN测试设备都可以对总线负载率做检测。例如我司测试时经常使用CANScope或者CAN卡进行总线负载率测试,而测试的方法则是计算每秒接收到的CAN总线上的帧数,根据帧数的大小配以算法得出此时的总线负载率。例如1M波特率,1s传输1Mbit的数据,则负载率达到了100%。 图1 除瞬时负载率外,CANScope里还有有通过流量分析得出接收报文的负载率情况,与上述的实时侦测帧数计算有些区别的是,流量分析是通过波形占用总线的时间作为参考,相比于实时帧数计算更具有说服性。 图2 而总线负载压力测试,在GMW14242中,要求被测CAN总线在所有负载条件下能正常运

行并且不会死机。其试验原理是:由测试设备制造各种负载条件下的情况,测试被测CAN 总线是否还可以将正常的应用数据发出。测试报文如下表所示。每个报文产生按 10%、30%、50%、70%、90%的负载率,观察被测CAN总线发出的应用数据是否依然正常。 图3 我们再用CANScope-Pro测试举例了解一下测试过程: 步骤 1:启动 CANScope-Pro,将 RHL 调节为 60 欧,设置好和被测 DUT 相同的波特率,点击开启。控制被测能发出各种预期的报文。 步骤 2:打开 CANScope 的报文界面和“总线负载率”界面,发送 ID 填入 111H,DLC 为0,发送次数为无限。分别调整重复次数,使总线负载率为 10%、30%、50%、70%、90%。使用 ID 筛选的方式,对应观察被测 DUT 的应用数据是否间隔时间是否正常。为筛选出被测 DUT 发出的 181H 的 ID,通过增量时间的方式观察是否有异常。 步骤 3:打开 CANScope 的报文界面和“总线负载率”界面,发送 ID 填入 7FFH,DLC 为8,发送次数为无限。分别调整重复次数,使总线负载率为 10%、30%、50%、70%、90%。使用 ID 筛选的方式,对应观察被测 DUT 的应用数据是否间隔时间是否正常。为筛选出被测 DUT 发出的 181H 的 ID,通过增量时间的方式观察是否有异常。 图4 依据 GMW14241,测试结果为 DUT 在 10%、30%、50%、70%、90%负载下均可以正常工作,并且不会因为负载过高而死机,则通过测试。

FPGA和外围51单片机的通信

1 单片机与FPGA的接口方式 单片机与FPGA的接口方式一般有两种,即总线方式与独立方式。MCS-51单片机具有很强的外部总线扩展能力,利用片外三总线结构很容易实现单片机与FPGA的总线接口,而且单片机以总线方式与FPGA进行数据与控制信息通信也有许多优点:速度快;节省PLD芯片的I/O口线;相对于非总线方式,单片机编程简捷,控制可靠;在FPGA中通过逻辑切换,单片机易于与SRAM或ROM接口。 单片机与FPGA以总线方式通信的逻辑设计,重要的是要详细了解单片机的总线读写时序,根据时序图来设计逻辑结构,其通信的时序必须遵循单片机内固定的总线方式读/写时序。FPGA的逻辑设计也相对比较复杂,在程序设计上必须与接口的单片机程序相结合,严格安排单片机能访问的I/O空间。单片机以总线方式与FPGA 进行数据通信与控制时,其通信工作时序是纯硬件行为,速度要比前一种方式快得多,另外若在FPGA内部设置足够的译码输出,单片机就可以仅通过19根I/O线在FPGA与单片机之间进行通信和控制信息交换,这样可以节省FPGA芯片的I/O线。其原理图如图1所示。 2 总线接口逻辑设计 2.1 接口设计思想 单片机与CPLD/FPC,A以总线方式通信的逻辑设计,重要的是要详细了解单片机的总线读写时序,根据时序图来设计逻辑结构。MCS-51系列单片机的时序图如图2所示。

ALE为地址锁存使能信号,可利用其下降沿将低8位地址锁存于FPGA中的地址锁存器(LATCH_ADDRES)中;当ALE将低8位地址通过P0锁存的同时,高8位地址已稳定建立于P2口,单片机利用读指令允许信号PSEN的低电平从外部ROM中将指令从P0口读入,由时序图可见,其指令读入的时机是在PSEN的上升沿之前。接下来,由P2口和P0口分别输出高8位和低8位数据地址,并由ALE的下降沿将P0口的低8位地址锁存于地址锁存器。若需从FPGA中读出数据,单片机则通过指令“MOVXA,@DPTR”使RD信号为低电平,由P0口将锁存器中的数据读入累加器A;但若欲将累加器A的数据写进FPGA,则需通过指令“MOVx DPTR,A”和写允许信号WR。这时,DPTR中的高8位和低8位数据作为高、低8位地址分别向P2和P0口输出,然后由WR的低电平并结合译码,将累加器A的数据写入图中相关的锁存器。 通过对MCS-51单片机总线读/写时序的分析,设计了图3所示的接口电路。在FPGA中,设计了两个模块:一个是总线接口模块,负责单片机与FPGA的总线接口逻辑;另一个是寄存器单元及外部接口模块,运用总线接口模块来操作此模块。 在总线应用时,MCS-51单片机的P0口是作为地址/数据总线分时复用的,因此应在总线接口模块中设计一个三态缓冲器,实现P0口的三态接口;又因MCS-51单片机在访问外部空间时,它的地址为16位,因此借助地址锁存使能信号ALE在FPGA中实现高8位与低8位地址的编码,组合成16位地址,然后再根据MCS-51单片机的读/写信号,实现对FPGA的读写操作。 在接口设计中,采用了VHDL语言实现其接口逻辑。用VHDL语言编写,往往比较方便和严谨,注意整个过程的逻辑思路,并且尽量避免语言的冗余,造成比较长的延时。-MCS-51单片机与FPGA的通信读写电路的部分程序

单片机与FPGA的总线接口的设计与实现

万方数据

万方数据

第1期刘余才等:单片机与FPGA的总线接口的设计与实现81 图5时序仿翼图 晦5Thetimingsimulationdiagram 从图5也可以看出data数据线上的数据0xB8和Kong,AtmelCorporation,2005. 0x99与对应的AD[7:o]上的数据是一致的.F2]MichaelnCilettLVefilogHDL高级数字设计[M]?北d±士古{五京:电子工业出版社,2005? 鼍缅术盾[3]游志宇。张洪,董秀.MCS一51-qFPGA/CPLD总本文介绍了以ATmegal28微控制器与FPGA线接口逻辑设计[J].单片机与嵌入式系统应用,2008芯片EPI.a5Q24017的总线接口的具体硬件设计方(1):39—32. 法.总线接口模块广泛应用于单片机与FPGA之间[4]葛立明,范多旺.基于ARM嵌人式以太网接口设计与的通信接I=I.已成功在实际工程系统中应用,传输速实现[J].微计算机信息,2007,23(5’2):40-41. 度远远超过传统的串口传输模式.[5]张嘉春,李斌,王婧,等?MCOSl2NE64单片机以参考文献.奋慧昙曼霖设计口1耕艄嵌入躲统应[1]AtmelCorporatiomAtmega128CHN[M].Hong DesignandImplementationoftheBusInterfaceofMCUandFPGA LIUYu-cai.WANGXiao—ming,GELi—ming (KeyLaboratoryofOpto-electronieTechnologyandIntelligentControl(MinistryofEducation),1.anzhou JiaotongUniversity,Lanzhou730070,China) Abstract:ThedesignandimplementationOfAVRMCUandFPC-Abusinterfaceareintroduced,usingAT-megal28microeontrollerandAltera'sCycloneserialchipEPlC6Q24017forhardwaredesign.Thestructureofhardwarecircuitiselaboratedindetailandtheinterfacedesignanditssimulationwaveformsarepresen-tedusingthehardwarelanguageofVerilogHDI。.InordertOsolvetheproblemoftheslowtransmissionspeedOftheserialdata,weneeddesignthebusinterface.ThemethodofthedesignisthatwecanuseFP—GAtorealizethetransmissionOfparalleldata.Atlast,wefindthattheprogramOfVerilogaccordswiththedemandOftheparalleldatatransmission.Moreover。itverifiesthatthetransmissionmodelOftheparalleldataissuperiortothetraditionaltransmissionmodeIoftheseriaIdata. Keywords:MCU;FPGA;businterface;Verilog  万方数据

MCS-51单片机存储器的扩展_百度文库.

第八章 MCS-51单片机存储器的扩展 第一节 MCS-51单片机存储器的概述 (一学习要求 1、熟悉 MCS-51 单片机的系统总线及系统总线扩展结构 2、掌握常用的片选方法:线选法和全地址译码法。(二)内容提要 1、三总线的扩展方法 单片机内资源少,容量小,在进行较复杂过程的控制时,它自身的功能远远不能满足需要。为此,应扩展其功能。 MCS-51单片机的扩展性能较强,根据需要,可扩展。三总线是指地 址总线、数据总线、控制总线。 1)地址总线 MCS-51 单片机地址总线宽度为 16 位,寻址范围为 64K。 地址信号: P0 作为地址线低 8 位, P2 口作为地址线高 8 位。 2)数据总线 MCS-51 单片机的数据总线宽度为 8 位。 数据信号: P0 口作为 8 位数据口, P0 口在系统进行外部扩展时与低 8 位地址总线分时复用。 3)控制总线 主要的控制信号有 /WR 、 /RD 、 ALE 、 /PSEN 、 /EA 等。

2、系统的扩展能力 MCS-51 单片机地址总线宽度为 16 位,因此它可扩展的程序存储器和数据存储器的最大容量是64K(216)。 1)线选法 线选法就是将多余的地址总线(即除去存储容量所占用的地址总线外)中的某一根地址线作为选择某一片存储或某一个功能部件接口芯片的片选信号线。一定会有一些这样的地址线,否则就不存在所谓的“选片”的问题了。每一块芯片均需占用一根地址线,这种方法适用于存储容量较小,外扩芯片较少的小系统,其优点是不需地址译码器,硬件节省,成本低。缺点是外扩器件的数量有限,而且地址空间是不连续的。 2)全地址译码法 由于线选法中一根高位地址线只能选通一个部件,每个部件占用了很多重复的地址空间,从而限制了外部扩展部件的数量。采用译码法的目的是减少各部件所占用的 地址空间,以增加扩展部件的数量。 3)译码器级连 当组成存储器的芯片较多,不能用线选法片选,又没有大位数译码器时,可采用多个小位数译码器级连的方式进行译码片选. 4)译码法与线选法的混合使用 译码法与线选法的混合使用时,凡用于译码的地址线就不应再用于线选,反之,已用于线选的地址线就不应再用于译码器的译码输入信号. (三)习题与思考题 1. 简要说明MCS-51 单片机的扩展原理。

基于51单片机的CAN总线系统设计

基于51单片机的CAN总线系统设计 0 引言 随着20世纪80年代初期德国Bosch公司提出CAN(Controller Area Network)总线,即控制器局域网方案以解决汽车控制装置问的通信问题。经过20多年的发展,CAN总线现在广泛的应用在汽车领域,在汽车控制系统中应用CAN总线可以使硬件方案的软件化实现,大大地简化了设计,减小了硬件成本和设计生产成本,数据共享减少了数据的重复处理,节省了成本,可以将信号线减到最少,减少布线,使成本进一步降低等优点。由于CAN总线通信的高性能、高可靠性、及独特的设计和适宜的价格可以广泛应用于工业现场控制、智能楼宇、医疗器械、交通工具以及传感器等领域,所以被公认为是几种最有前途的现场总线之一。 1 系统总体设计 CAN总线系统总体结构如图1所示,主要包括上位机控制软件、USB-CAN转换模块、CAN节点、CAN总线介质(本处采用双绞线)组成。其中一个CAN节点通过USB接口与PC 机相连,上位机控制软件能实时显示各CAN节点的数据且能通过上位机软件向各个CAN 节点发送数据以控制各节点的8个发光二极管的亮或灭。 2 系统硬件电路 本系统由单片机外围电路、CAN总线硬件电路和USB-CAN转换电路组成。单片机外围电路包括电源电路模块、复位电路模块、串口通信模块。CAN总线硬件电路包括电气隔离模块、光耦隔离模块、CAN驱动器电路。USB-CAN转换电路包括CH375与单片机接口电路模块和USB接口电路模块。 C8051F040单片机内部的控制器局域网(CAN)控制器是一个协议控制器,不提供物理层驱动器(即收发器),需要外部重新接入物理层驱动器。本处采用TJ1050,TJA1050是控制器区域网络(CAN)协议控制器和物理总线之间的接口,是一种标准的高速CAN收发器。TJA1050可以为总线提供差动发送性能,为CAN控制器提供差动接收性能。 TJA1050是PCA82C250和PCA82C251高速CAN收发器的后继产品。其功能框图如图2所示。

51单片机的时钟及总线时序和总线扩展

51单片机的时钟及总线时序和总线扩展 说到51单片机的时钟首先想到51时怎么工作的呢?微型控制器要想工作必须要有一个动力,对于51单片机来说,这个动力就是时钟源。一般应用上会外接一个12MHz的晶振作为时钟源。 一般第一种接法用的比较多。选择内部震荡方式时晶振旁边有两个小电容。这两个电容叫晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十皮发。它会影响到晶振的谐振频率和输出幅度。晶振的负载电容=[(Cd*Cg)/(Cd+Cg)]+Cic+△C式中Cd,Cg为分别接在晶振的两个脚上和对地的电容,Cic(集成电路内部电容)+△C(PCB 上电容)经验值为3至5pf。 各种逻辑芯片的晶振引脚可以等效为电容三点式振荡器。晶振引脚的内部通常是一个反相器,或者是奇数个反相器串联。在晶振输出引脚XO 和晶振输入引脚XI 之间用一个电阻连接,对于CMOS 芯片通常是数M 到数十M 欧之间。很多芯片的引脚内部已经包含了这个电阻,引脚外部就不用接了。这个电阻是为了使反相器在振荡初始时处与线性状态,反相器就如同一个有很大增益的放大器,以便于起振。 为什么要选择12MHz的晶振作为时钟源呢? 这就要说51单片机内部的几个周期了:指令周期、机器周期、时钟周期、振荡周期。 振荡周期是指为单片机提供定时信号的振荡源的周期或外部输入时钟的周期。 时钟周期又称作状态周期或状态时间S,它是振荡周期的两倍,分为P1节拍和P2节拍,通常在P1节拍完成算术逻辑操作,在P2节拍完成内部寄存器之间的数据传送操作。(注意P1 和P2的相位关系) 一个机器周期由6个状态组成,如果把一条指令的执行过程分作几个基本操作,则将完成一个基本操作所需的时间称作机器周期。单片机的单周期指令执行时间就为一个机器周期。 指令周期是执行一条指令所需的全部时间。MCS-51单片机的指令周期通常由1、2、4个

相关文档
最新文档