网络通讯实验板课程设计.doc

上传人:精*** 文档编号:852599 上传时间:2023-09-16 格式:DOC 页数:28 大小:616.59KB
下载 相关 举报
网络通讯实验板课程设计.doc_第1页
第1页 / 共28页
网络通讯实验板课程设计.doc_第2页
第2页 / 共28页
网络通讯实验板课程设计.doc_第3页
第3页 / 共28页
网络通讯实验板课程设计.doc_第4页
第4页 / 共28页
网络通讯实验板课程设计.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、西华大学课程设计说明书说明书 目 录1 前言12 系统设计22.1硬件设计22.1.1硬件方案比较22.1.2硬件方案论证32.1.3硬件方案选择42.2硬件设计42.1软件设计方案73系统硬件设计83.1 CAN总线介绍83.2从站CAN总线接口电路83.3硬件模块说明93.4 CAN电路接线103.5 CAN总线控制器SJA1000103.6 CAN控制器接口PCA82C250104系统软件设计114.1程序流程图114.1.1 主程序流程图114.1.2 初始化子程序流程图114.1.3 发送数据子程序流程图124.1.4 接收数据子程序流程图134.2 软件实现过程134.2核心源程序

2、155系统调试215.1 PC机与下位机的通讯调试215.2 CAN总线调试215.3 单片机最小系统电路的调试215.4 综合调试225.5 最终实现效果225.6 测试仪器226结果分析及心得体会236.1 结果分析236.2 心得体会236.2.2 CAN总线的其他应用237 参考文献25附录:系统设计原理图261 前言现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN(Controller Area Network)属于现场总线的范畴,是一种多主方式的串行通讯总线,数据通信

3、实时性强。与其它现场总线比较而言,CAN总线具有通信速率高、容易实现、可靠性高、性价比高等诸多特点。本系统要在单片机中实现CAN总线的接口,通过CAN总线,实现两个模块之间的数据通讯。系统主要由四部分所构成:PC机、微控制器80C51、独立CAN通信控制器SJA1000和CAN总线收发器PCA82C250。微处理器80C51负责SJA1000的初始化,通过控制SJA1000实现数据的发送和接收等通信任务。CAN总线节点的软件设计主要包括三大部分:CAN节点初始化、报文发送和报文接收。本系统通过扩展CAN总线控制器SJA1000,在单片机系统中实现了CAN总线的接口,并且编写了SJA1000的驱

4、动程序,通过读写其的内部寄存器,完成工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器(AMR)和接收代码寄存器(ACR)的设置、波特率参数设置和中断允许寄存器(IER)的设置等基本操作;利用各基本操作,完成了对SJA1000的初始化,并且实现了数据发送和接收。2 系统设计要实现一个系统的某些功能往往不只一种方法和途径,我们可以通过不同的方法实现相同的功能,因此我们需要从各个角度进行综合考虑,如各个方案的可行性、实用性、稳定性、实现的难度等。从而选择较好的一种方案进行设计。下面对本设计的各个模块进行方案对比,以选择较为合理的设计方案。2.1硬件设计2.1.1硬件方案比较方案一:本方案是基于三星

5、公司的ARM微处理器S3C2440与PHILIPS公司的CAN控制器SJA1000的嵌入式控制系统,在本系统中,S3C2440直接与SJA10000相连接,由S3C2440控制CAN收发器。S3C2440是高速的微处理器,其最高的工作频率可以达到533MHz,且内部资源十分丰富,十分适合嵌入式便携式产品的应用和开发,该方案的框架图如图2.1所示。ARM9微处理器(s3c2440)CAN收发器(SJA1000)CAN接口芯片(PCA82C250)ARM9微处理器(s3c2440)CAN接口芯片(PCA82C250)CAN收发器(SJA1000)ARM9微处理器(s3c2440)ARM9微处理器(

6、s3c2440)CAN总线图2.1基于嵌入式的系统框图但由于S3C2440的硬件电路连接十分复杂,对于绘制PCB板有很大的难度,且加工工艺要求比较高,一般是六层板加工工艺,对于单个加工来说加工成本非常高,且使用起来也比80C51要复杂很多,对于本设计来说很浪费资源和成本。SJA1000的设计是基于早期的8051单片机的应用,对于从站控制器可以直接与单片机的总线相连接,但不能直接与s3c2440连接,因为s3c2440的地址总线和数据总线完全是分开的,所以还需要模拟出类似80C51单片机的外部存储器时序才能使用,这样接口连接也不能够直接对应。SJA1000一般是5V电压供电,而s3c2440一般

7、为3.3V供电,其接口电压最高只能达到3.3V,所以电平也不兼容,要用特殊的转接电路才能实现连接。这样在硬件和软件都增加了很大的难度,因此很难实现功能。方案二:本方案通过PC机进行上位机控制,80C51与PC机串行通信,设置SJA1000工作于Intel模式,由PC机发送的数据写入SJA1000并通过CAN收发器发送。接收数据是通过中断进行的,CAN 总线传输过来的数据经CAN接口芯片PCA82C250接收并写入SJA1000的RXFIFO,然后通过中断提请CPU读取,读取的数据上传送给PC机。试验表明,CAN总线的结构简洁、数据传输稳定可靠、抗干扰能力强、传输速率可达1Mbit/s同时能有1

8、28个从站系统,能满足现场的实时性要求。其系统的结构框图如图2.2所示。图2.2基于PC机的系统框图这种方案的好处在于硬件结构相对简单,SJA1000的设计是基于早期的8051单片机的应用,其接口完全与80C51的外部总线接口兼容,电平也完全兼容,都为5V供电。上位机界面可以通过常见的编程软件,其主要的编写平台有Microsoft公司的Visual Basic与Visual C+,Borland公司的Delphi,Sybase公司的Power Builder等,上位机控制界面通过串口传输数据到主站的控制器,主控器再通过CAN网络与各个从站控制器相连接,实现相互间通讯,交换相应的数据,这样便可以

9、采集到远处的实用信息。操作简单,界面设计更加容易。2.1.2硬件方案论证方案一:由图2.1可以看出,该方案采用嵌入式系统,S3C2440为32位的高速微处理器,其内部和外部资源丰富,能够很好地支持多种操作系统,如:WinCE,uCos,linux等,通过操作系统能够很方便地对系统进行管理和操作,给我们的程序编写带来了很大的方便,本方案采用的是linux 2.6.25操作系统,该系统最大优点在于可移植性很强,支持多种不同平台的MCU,对S3C2440有很好的支持,其源代码开源。系统用嵌入式QT(Embedded QT)做界面设计,界面更加友好,可通过触摸屏、鼠标和键盘对系统进行操作,但由于 S3

10、C2440的硬件电路连接十分复杂,对于绘制PCB板有很大的难度,且加工工艺要求比较高,一般是六层板加工工艺,对于单个加工来说加工成本非常高,且使用起来也比80C51要复杂很多,对于本设计来说很浪费资源和成本。SJA1000的设计是基于早期的8051单片机的应用,对于从站控制器可以直接与单片机的总线相连接,但不能直接与s3c2440连接,因为s3c2440的地址总线和数据总线完全是分开的,所以还需要模拟出类似80C51单片机的外部存储器时序才能使用,这样接口连接也不能够直接对应。SJA1000一般是5V电压供电,而s3c2440一般为3.3V供电,其接口电压最高只能达到3.3V,所以电平也不兼容

11、,要用特殊的转接电路才能实现连接,硬件和软件都增加了很大的难度,因此很难实现功能。方案二:由图2.2可以看出,这种方案的硬件实现较为容易,结构也比较简单,整个系统的控制方式为PC机作为人机交互的接口,硬件结构相对简单,SJA1000的设计是基于早期的8051单片机的应用,其接口完全与80C51的外部总线接口兼容,电平也完全兼容,都为5V供电。上位机界面可以通过常见的编程软件,界面设计容易,且操作简便。2.1.3硬件方案选择通过以上两种方案的论证比较,结合本题,选择方案二。方案二通过PC机进行上位机控制,80C51与PC机串行通信,设置SJA1000工作于Intel模式,由PC机发送的数据写入S

12、JA1000并通过CAN收发器发送。接收数据是通过中断进行的,CAN 总线传输过来的数据经CAN接口芯片PCA82C250接收并写入SJA1000的RXFIFO,然后通过中断提请CPU读取,读取的数据上传送给PC机。试验表明,CAN总线的结构简洁、数据传输稳定可靠、抗干扰能力强、传输速率可达1Mbit/s同时能有128个从站系统,能满足现场的实时性要求。2.2硬件设计1. 芯片介绍SJA1000:SJA1000 是一种独立控制器 用于移动目标和一般工业环境中的区域网络控制 CAN 它是 PHILIPS半导体 PCA82C200 CAN 控制器 BasicCAN 的替代产品 而且 它增加了一种新

13、的工作模式 PeliCAN ,这种模式支持具有很多新特性的 CAN 2.0B 协议。其特性如下: 和 PCA82C200 独立 CAN 控制器引脚兼容 和 PCA82C200 独立 CAN 控制器电气兼容 PCA82C200 模式 即默认的 BasicCAN 模式 扩展的接收缓冲器 64 字节 先进先出 FIFO 和 CAN2.0B 协议兼容 PCA82C200 兼容模式中的 同时支持 11 位和 29 位识别码 位速率可达 1Mbits/s PeliCAN 模式扩展功能 -可读/写访问的错误计数器 -可编程的错误报警限制 -最近一次错误代码寄存器 -对每一个 CAN 总线错误的中断 -具体控

14、制位控制的仲裁丢失中断 -单次发送 无重发 -只听模式 无确认 无活动的出错标 志 -支持热插拔 软件位速率检测 -验收滤波器扩展 4 字节代码 4 字节屏蔽 -自身信息接收 自接收请求 24MHz时钟频率 对不同微处理器的接口 可编程的 CAN 输出驱动器配置 增强的温度适应 -40+125 6N137:高速光隔,最高速度10Mbs,用于保护CAN控制器。PCA82C250:CAN总线收发器,是CAN控制器与CAN总线的接口器件,对CAN总线差分式发送。2. CAN控制器与CPU接口设计对于CPU来说,CAN控制器是确保双方独立工作的存贮器映象外围设备。CAN控制器与外部CPU的接口是通过控

15、制器接口逻辑(CIL)实现的,80C51 的CPU通过将地址总线(AB)和数据总线(DB)连接到CIL上来完成与CAN控制器之间的信息交换,不需要专门的控制总线(CB),CPU与PCA82C250之间的状态、控制和命令信号的交换在CAN控制器中完成。SJA1000与单片机的接口电路如图2.3所示。图2.3 SJA1000与单片机的接口电路3. CAN控制器工作电路的连接为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0并不是直接与PCA82C250的TXD和RXD相连,而是通过高速光隔6N137后与PCA82C250相连,这样就很好的实现了总线上各CAN节点间的电气隔离。若PC

16、A82C250处于CAN总线的网络终端,总线接口部分需加一个120欧姆的匹配电阻。CAN控制器工作电路如下图所示:图1-4 CAN控制器工作电路2.1软件设计方案CAN 总线节点的软件设计主要包括三大部分:CAN节点初始化、报文发送和报文接收。熟悉这三部分程序的设计就能编写出利用CAN总线进行通信的一般应用程序。当然要将CAN总线应用于通信任务比较复杂的系统中,还需详细了解有关CAN总线错误处理、总线脱离处理、接收滤波处理、波特率参数设置和自动检测以及CAN总线通信距离和节点数的计算等方面的内容。SJA1000的初始化只有在复位模式下才可以进行,初始化主要包括工作方式的设置、接收滤波方式的设置

17、、接收屏蔽寄存器(AMR)和接收代码寄存器(ACR)的设置、波特率参数设置和中断允许寄存器(IER)的设置等。在完成SJA1000的初始化设置以后,SJA1000就可以回到工作状态,进行正常的通信任务。发送子程序负责节点报文的发送。发送时用户只需将待发送的数据按特定格式组合成一帧报文,送入SJA1000发送缓存区中,然后启动SJA1000 发送即可。接收子程序负责节点报文的接收以及其它情况处理。接收子程序比发送子程序要复杂一些,因为在处理接收报文的过程中,同时要对诸如总线脱离、错误报警、接收溢出等情况进行处理。SJA1000报文的接收主要有两种方式:中断接收方式和查询接收方式,两种接收方式编程

18、的思路基本相同,如果对通信的实时性要求不是很强,一般采用查询接收方式。3系统硬件设计3.1 CAN总线介绍CAN全称为“Controller Area Network”, 即控制器局域网,是国际上应用最广泛的现场总线之一。最初CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如发动机管理、系统变速箱控制器、仪表装备中,均嵌入CAN控制装置。一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如当使用Philips PCA82C250作为CAN收发器时,同一网络中允许挂接110个节点

19、。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易,另外硬件的错误检定特性也增强了CAN的抗电磁干扰能力。CAN是一种多主方式的串行通讯总线。基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km 时,CAN仍可提供高达50Kbit/s 的数据传输速率。由于CAN 总线具有很高的实时性能,因此CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用。 3.2从站CAN总线接口电路目前广泛流行的CAN总线器件有两大类:一类是独立的CAN控制器,如82200、SJA1000及Intel82526/82527等,

20、另一类是带有在片CAN的微控制器,如P8SC582及16位微控制器87C196CA/CB等。我们选用PHILIPS公司的SJA1000CAN控制器以及82C250总线收发器,见图1。主要是考虑到SJA1000支持CAN2.0/规约。而82C250可以支持110个CAN节点,并且国内市场上PHILIPS的产品型号比较多,购买比较方便。 PHILIPS公司的SJA1000是符合CAN2.0协议的总线控制器,它是应用于汽车和一般工业环境的独立CAN总线控制器。由于硬件和软件的兼容它将会替代PCA82C200,它与PCA82C200相比具有更先进的特征因此特别适合于轿车内的电子模块传感器制动器的连接和

21、通用工业应用中特别是系统优化系统诊断和系统维护时特别重要。SJA1000具有完成CAN通信协议所要求的全部特性。经过简单总线连接的SJA1000可完成CAN总线的物理层和数据链路层的所有功能。其硬件与软件设计可兼容基本CAN模式(BasicCAN)和新增加的增强CAN模式(PeliCAN)CAN2.0协议。图3.1 SJA1000的硬件原理图CAN总线的硬件连接图如图3.2所示图3.2 SJA1000与单片机接口原理图3.3硬件模块说明CAN总线模块由一个CAN总线控制器SJA1000和一个CAN收发器PCA82C250组成,它们共同构成一个CAN节点。模块的电源由接口挂箱上的接口插座提供。模

22、块上的RESET、INT、TX0、RX0插孔分别对应于SJA1000芯片上的相应引脚。模块上带有上电复位电路,也可通过RESET插孔进行手动复位,只需在RESET上加上负脉冲。模块上提供两个RJ45接口和一组“CANH、CANL”插孔接口,这三组接口是完全一致的。对于近距离CAN模块之间的通讯,可将各模块的“CANH、CANL”插孔用导线连接;对于远距离CAN模块之间的通讯,则可用双绞线连接各RJ45接口。每个CAN模块上都有一组终端电阻接口,即“A、B”插孔。当总线上只有两个CAN节点时,终端电阻可不接。如总线上的CAN节点数为3个或3个以上时,必须有一个而且只能有一个CAN模块接上终端电阻

23、。具体接法为:将A插孔和CANL插孔、B插孔和CANH插孔分别用导线连接。3.4 CAN电路接线两个CAN模块分别接在两个实验台上,第一个模块(发送)跳线接LCS2,第二个模块(接收)跳线接LCS3,用双绞线连接两个模块的RJ45接口,将第一个CAN模块接上终端电阻。3.5 CAN总线控制器SJA1000SJA1000是一种独立的CAN控制器,主要用于移动目标和一般工业环境中的区域网络控制。它是Philips半导体公司PCA82C200 CAN控制器(BasicCAN)的替代产品,增加了一种新的操作模式PeliCAN,这种模式支持具有很多新特性的CAN2.0B协议。3.6 CAN控制器接口PC

24、A82C250PCA82C250是CAN协议控制器和物理总线间的接口,它主要是为汽车中高速通讯(高达1Mbps)应用而设计。此器件对总线提供差动发送能力,对CAN控制器提供差动接收能力,与ISO11898标准完全兼容。PCA82C250芯片由接收器、驱动器、基准电压产生电路、工作模式选择电路及保护电路等组成。PCA82C250内部的限流电路可以防止发送输出级对电池电压的正端和负端短路。虽然在这种故障条件出现时,功耗将增加,但这种特性可以阻止发送器输出级的破坏。在节点温度大约超过160时,两个发送器输出端的极限电流将减少。由于发送器是功耗的主要部分,因此芯片温度会迅速降低。PCA82C50芯片的

25、其他部分将继续工作。当总线短路时,热保护十分重要。CANH和CANL两条线也可以防止在汽车环境下可能发生的电气瞬变现象。4系统软件设计4.1程序流程图4.1.1 主程序流程图程序开始运行后,先调用初始化子程序,分别对两个CAN模块中的SJA1000进行初始化,然后把要发送的数据写入CPU的存储器中,然后循环调用发送数据子程序和接收数据子程序。具体流程如图3-1所示。 图4.1 主程序流程图4.1.2 初始化子程序流程图初始化子程序先设置MOD选择复位模式,然后分别设置CDR选择工作模式;设置IER选择中断类型;设置BTR0、BTR1设定传输速率;设置OCR选择输出模式;设置ACR、AMR设定接

26、收数据类型;RBSA、TXERR、ECC均清零,最后设置MOD进入工作模式。具体流程如图3-2所示。图4.2 初始化子程序流程图4.1.3 发送数据子程序流程图发送数据子程序先把三个控制字节写入发送缓冲区,然后把等待发送的数据也写入发送缓冲区,最后设置CMR,发出发送请求、启动SJA1000发送数据。具体流程如图3-3所示。图4.3 发送数据子程序流程图4.1.4 接收数据子程序流程图接收数据子程序首先要读SR和IR,判断工作状态及中断类型并做相应处理,若RXFIFO有数据,应判断帧类型并做相应处理,若数据正确则送至CPU的内部存储器。具体流程如图3-4所示。4.2 软件实现过程两个实验台运行

27、程序CAN.ASM(程序见附录),发送实验台全速运行程序,接收实验台要在主程序中调用接收数据子程序后设置断点,等待接收到数据后送至CPU的存储器,然后查看CPU的内部存储器30H37H中的数据与程序中发送的数据是否一致。图4.4 接收数据子程序流程图4.2核心源程序#include STC_NEW_8051.H#include#include #include#include #include USART_MODE.hvoid main(void)init_mcu();init_sja1000();Init_usart(9600);while(1)rxd_deal();txd_deal();/

28、将接收到的数据除以4在红绿灯上显示if(Rxd_data % 4)=0)LED_blue = 0;LED_red = 0;if(Rxd_data % 4)=1)LED_blue = 0;LED_red = 1;if(Rxd_data % 4)=2)LED_blue = 1;LED_red = 0;if(Rxd_data % 4)=3)LED_blue = 1;LED_red = 1;void init_mcu(void)LED_red = 1;LED_blue = 1;LED_3 = 1;LED_4 = 1;LED_5 = 1;LED_6 = 1; SJA_RST = 0;/CAN总线复位管脚

29、复位有效 SJA_RST = 1;/CAN总线复位管脚复位无效 SJA_CS = 0;/CAN总线片选有效 EX1 = 1;/开MCU外部中断INT1 IT1 = 1;/MCU外部中断INT1设置为下降沿触发 IT0 = 0;/MCU外部中断INT0设置为电平触发,该中断口连接CAN总线接收中断口 EX0 = 1;/开MCU外部中断INT0 EA = 1; /开MCU总中断/ SJA_CS = 1;/CAN总线片选无效,使得对数据总线的操作不会影响SJA1000。void init_sja1000(void) uchar state; uchar ACRR4; uchar AMRR4;/ 接收

30、代码寄存器 ACRR0 = 0x11; ACRR1 = 0x22; ACRR2 = 0x33; ACRR3 = 0x44;/ 接收屏蔽寄存器,只接收主机发送的信息 AMRR0 = 0xff; AMRR1 = 0Xff; AMRR2 = 0xff; AMRR3 = 0xff;/ 使用do-while语句确保进入复位模式 do MODR = 0x01;/ 设置MOD.0=1-进入复位模式,以便设置相应的寄存器state = MODR; while( !(state & 0x01) );/ 对SJA1000部分寄存器进行初始化设置 CDR = 0x88;/ CDR为时钟分频器,CDR.3=1-时钟关

31、闭, CDR.7=0-basic CAN, CDR.7=1-Peli CAN BTR0 = 0x00;/ 总线定时寄存器0 ;总线波特率设定 BTR1 = 0x1c;/ 总线定时寄存器1 ;总线波特率设定 IER = 0x01;/ IER.0=1-接收中断使能; IER.1=0-关闭发送中断使能 OCR = 0xaa;/ 配置输出控制寄存器 CMR = 0x04;/ 释放接收缓冲器/ 初始化接收代码寄存器 ACR0 = ACRR0; ACR1 = ACRR1; ACR2 = ACRR2; ACR3 = ACRR3; / 初始化接收屏蔽寄存器 AMR0 = AMRR0; AMR1 = AMRR1

32、; AMR2 = AMRR2; AMR3 = AMRR3; / 使用do-while语句确保进入自接收模式 do MODR = 0x04;/MOD.2=1-进入自接收模式,MOD.3=0-双滤波器模式state = MODR; while( !(state & 0x04) ); void rxd_deal(void) if( RXD_flag )/RXD_flag=说明无数据可以接收,RXD_flag=说明有数据可以接收 EA = 0;/关闭CPU中断 RXD_flag = 0;/RXD_flag清零,以便下次查询 Rxd_data = RX_buffer5;/CAN总线要接收的数据,也是要在

33、数码管3-4位置显示的数据 EA = 1;/重新开启CPU中断 void txd_deal(void) if( TXD_flag = 1 )/若TXD_flag=1,要求进行数据的发送处理 TXD_flag = 0;/RXD_flag清零,以便下次查询 can_txd();/发送数据帧 /发送数据帧后,SJA1000将产生接收中断void can_txd(void) uchar state; uchar TX_buffer N_can ;/N_can=13,TX_buffer数组为待传送的数据帧/初始化标示码头信息 TX_buffer0 = 0x88;/.7=0-扩展帧;.6=0-数据帧; .

34、0-.3=100-数据长度为8字节 TX_buffer1 = 0xaa;/本节点地址 TX_buffer2 = 0xbb; TX_buffer3 = 0xcc; TX_buffer4 = 0xdd;/初始化发送数据单元 TX_buffer5 = Txd_data;/发送的第1个字节数据,也是数码管要显示的数据(计数结果) TX_buffer6 = 15;/2 TX_buffer7 = 16;/3 TX_buffer8 = 17;/4 TX_buffer9 = 18;/5 TX_buffer10 = 19;/6 TX_buffer11 = 20;/7 TX_buffer12 = 21;/8/初始

35、化数据信息 EA = 0; /关中断/查询SJA1000是否处于接收状态,当SJA1000不处于接收状态时才可继续执行 do state = SR;/SR为SJA1000的状态寄存器 while( state & 0x10 ); /SR.4=1 正在接收,等待/查询SJA1000是否处于发送完毕状态 do state = SR; while(!(state & 0x08); /SR.3=0,发送请求未处理完,等待直到SR.3=1/查询发送缓冲器状态 do state = SR; while(!(state & 0x04); /SR.2=0,发送缓冲器被锁。等待直到SR.2=1/将待发送的一帧数

36、据信息存入SJA1000的相应寄存器中 TBSR0 = TX_buffer0; TBSR1 = TX_buffer1; TBSR2 = TX_buffer2; TBSR3 = TX_buffer3; TBSR4 = TX_buffer4; TBSR5 = TX_buffer5; TBSR6 = TX_buffer6; TBSR7 = TX_buffer7; TBSR8 = TX_buffer8; TBSR9 = TX_buffer9; TBSR10 = TX_buffer10; TBSR11 = TX_buffer11; TBSR12 = TX_buffer12; CMR = 0x10;/置位

37、自发送接收请求 EA = 1; /重新开启中断void inter0_key(void) interrupt 2using0 EA = 0;/关闭中断 Txd_data+;/计数结果增1,即待发送的数据增1if(Txd_data=255)Txd_data=0; TXD_flag = 1;/发送数据标志位置位,即重新发送数据以更新数码管的显示数值 EA = 1;/重新开启中断void inter1_can_rxd( void ) interrupt 0 using2 uchar state,tem; EA = 0;/关CPU中断 IE1 = 0;/由于是中断INT1是电平触发方式,所以需要软件将

38、INT1的中断请求标志IE0清零 state = IR;/IR为SJA1000的中断寄存器 if( state & 0x01)/若IR.0=1-接收中断 /接收数据帧 RX_buffer0 = RBSR; RX_buffer1 = RBSR1; RX_buffer2 = RBSR2; RX_buffer3 = RBSR3; RX_buffer4 = RBSR4; RX_buffer5 = RBSR5; RX_buffer6 = RBSR6; RX_buffer7 = RBSR7; RX_buffer8 = RBSR8; RX_buffer9 = RBSR9; RX_buffer10 = RBS

39、R10; RX_buffer11 = RBSR11; RX_buffer12 = RBSR12;for(tem = 0;tem 13;tem+) Usart_putchar(RX_buffertem); RXD_flag = 1;/接收标志置位,以便进入接收处理程序 CMR = 0X04;/CMR.2=1-接收完毕,释放接收缓冲器 state = ALC;/释放仲裁随时捕捉寄存器(读该寄存器即可) state = ECC;/释放错误代码捕捉寄存器(读该寄存器即可) IER = 0x01;/ IER.0=1-接收中断使能 EA = 1;/重新开启CPU中断5系统调试一个完整的系统一般需要对各个模

40、块的功能进行相应的硬件和软件调试,常用的方法是将软件和硬件结合起来进行调试,在无实际的硬件平台下可以通过相应的仿真软件搭建一个虚拟的平台,然后对硬件和软件进行综合调试。5.1 PC机与下位机的通讯调试首先搭建单片机的最小系统,将单片机与PC机通过串口进行连接,用单片机开发编程软件Keil uVision3编写单片机程序,编写完成后在搭建的最小系统中进行硬件调试,利用单片机的串口和串口调试助手软件,在PC机上打印相应的数据和调试信息,观察数据和调试信息是否正确,在调试过程中注意在程序的关键处加入相应的调试信息,以供查询程序是否运行正常,如果程序运行不正确,结合硬件,检查硬件是否连接正确,传感器的

41、时序否满足要求等,不断调试查出发现的问题,并不断地改进,PC机与下位机通讯成功。5.2 CAN总线调试CAN总线的调试稍微比较难,首先将CAN总线与单片机相连接,参考SJA1000的技术文档,编写CAN通讯的程序,编写完初步的CAN收发程序后,将SJA1000设置为字收发模式,然后将程序下载到单片机内运行,通过串口调试助手,查看程序运行的过程是否正确,以判断SJA1000是否通讯成功,如果自收发模式通讯不成功,则更具打印信息查看程序出错的地方,以便进行修改,直到将自收发模式调试成功,调试成功后将自收发模式切换为正常通讯模式,查看是否能够正常通讯,一般自收发模式能够成功通讯则正常通讯模式也能够正

42、常通讯。5.3 单片机最小系统电路的调试为确保电路焊接无误后,接通5V电源,用数字万用表直流电压20V档测量单片机以下管脚的电压。20脚(VSS):0V 40脚(VCC):4.98V9脚(RST/VPD):0.01V 31脚(/EA/VPP):4.98V18脚(XTAL2):2.27V 19脚(XTAL1):2.09V通过以上数据可以判断出单片机正常工作。5.4 综合调试综合调试所涉及的功能部分是很多的,但只要每一部分功能的单独调试是很成功的,在综合调试时就不会很复杂了。在综合调试时,我们会遇到了很多的问题,如CAN总线通讯不成功,CAN驱动程序不能有效控制SJA1000,上位机与下位机通讯不正常等,但经过仔细的分析和细心的检查,并一步步发现了问题的所在,在调试的过程中,调试方法特别的重要,通过不同方式进行调试,最终找到问题的症结所在,这样的调试方法让我们顺利地完成了这次设计。5.5 最终实现效果经过综合调试,本设计的系统基本能达到设计的预期要求,能实现CAN总线的稳定通讯,主控制器的控制界面友好,操作方便、灵活。5.6 测试仪器示波器:YB4324万用表:DT9205电感表:DT6243函数信号发生器:DF1641B16结果分析及心得体会6.1 结果分析本试验通过扩

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 课程设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922