基于CAN总线的主从机通信系统设计_第1页
基于CAN总线的主从机通信系统设计_第2页
基于CAN总线的主从机通信系统设计_第3页
基于CAN总线的主从机通信系统设计_第4页
基于CAN总线的主从机通信系统设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

本科生课程设计(论文) I 课程设计(论文)任务及评语课程设计(论文)任务及评语 院(系):电气工程学院 教研室:自动 化 本科生课程设计(论文) II 注:成绩:平时20% 论文质量60% 答辩20% 以百分制计算 学 号学生姓名李娜专业班级自动化075 课程设 计题目 基于CAN总线的主从机通信系统设计 课程设计(论文)任务 课题完成的功能、设计任务及要求、技术参数课题完成的功能、设计任务及要求、技术参数 实现功能实现功能 以 CAN 总线为基础,设计主从机间通信,硬件上完成单片机最小系统、总 线控制器、驱动器、串口通信等电路的设计,软件上完成主机、从机和 CAN 总 线的收发数据。 设计任务及要求设计任务及要求 1、选择总线控制器、单片机型号,确定设计方案; 2、设计单片机最小系统(晶振、电源、复位等) ; 3、设计实现系统功能的单片机外围电路; 4、设计CAN总线电路(包括控制器、驱动器、接口电路) ; 5、软件设计(编写主程序、接收、发送程序及相应的流程图) 6、要求认真独立完成所规定的全部内容;所设计的内容要求正确、合理。 7、撰写、打印设计说明书一份;设计说明书应在 4000 字以上。 技术参数技术参数 1、符合 CAN2.0B 规范; 2、CAN 节点参数:晶振频率为 24MHz,,总线的速度为 20kb/s,最大的传 输距离为 3000m,双滤波接收数据。 进度计划 1、布置任务,熟悉课设题目,查找及收集相关书籍、资料。 (1 天) 2、确定控制方案、选型。 (2 天) 3、总线电路硬件设计。 (3 天) 4、程序实现及流程图。 (2 天) 5、撰写设计说明书。 (1 天) 6、验收及答辩。 (1天) 指导教师评语及成绩 平时: 论文质量: 答辩: 总成绩: 指导教师签字: 年 月 日 本科生课程设计(论文) III 摘 要 现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算 机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提 供了强有力的技术支持。CAN(Controller Area Network)属于现场总线的范畴,是 一种多主方式的串行通讯总线,数据通信实时性强。与其它现场总线比较而言, CAN 总线具有通信速率高、容易实现、可靠性高、性价比高等诸多特点。 本系统要在单片机中实现CAN总线的接口,通过CAN总线,实现两个模块之 间的数据通讯。系统主要由四部分所构成:PC机、微控制器80C51、独立CAN通 信控制器SJA1000和CAN总线收发器PCA82C250。微处理器80C51负责SJA1000的 初始化,通过控制SJA1000实现数据的发送和接收等通信任务。CAN总线节点的 软件设计主要包括三大部分:CAN节点初始化、报文发送和报文接收。 本系统通过扩展 CAN 总线控制器 SJA1000,在单片机系统中实现了 CAN 总 线的接口,并且编写了 SJA1000 的驱动程序,通过读写其的内部寄存器,完成工 作方式的设置、接收滤波方式的设置、接收屏蔽寄存器(AMR)和接收代码寄存 器(ACR)的设置、波特率参数设置和中断允许寄存器(IER)的设置等基本操 作;利用各基本操作,完成了对 SJA1000 的初始化,并且实现了数据发送和接收。 关键词:CAN 总线;SJA1000;89C51;PCA82C250。 本科生课程设计(论文) IV 目 录 第 1 章 绪论.1 第 2 章 课程设计的方案.2 2.1 概述 .2 2.2 系统组成总体结构 .2 第 3 章 硬件设计.3 3.1 单片机最小系统设计 .3 3.1.1 单片机 AT89C51.3 3.1.2 时钟电路.4 3.1.3 复位电路设计.4 3.1.4 电源电路设计.5 3.2 CAN 总线电路设计.5 3.2.1 控制器 SJA1000 .5 3.2.2 驱动器及接口电路 MAX232.6 3.2.3 发送隔离 6N137.6 3.2.4 收发器 PCA82C250.7 3.3 硬件原理图 .9 第 4 章 软件设计.10 4.1 主程序 .10 4.2 初始化子程序 .10 4.3 报文发送子程序 .12 4.4 报文接收子程序 .12 第 5 章 系统实验数据及分析.14 第 6 章 课程设计总结.15 附录 程序清单.16 参考文献.22 本科生课程设计(论文) 1 第 1 章 绪论 CAN 即控制器局域网络 , 控制器局部网( CANCONTROLLER AREA NETWORK)是 BOSCH 公司领先推出的一种多主机局部网,由于其高性能、 高可靠性、实时性等优点现已广泛应用于工业自动化、多种控制设备、交通工 具、医疗仪器以及建筑、环境控制等众多部门。控制器局部网将在我国迅速普 及推广。 由于 CAN 为愈来愈多不同领域采用和推广,导致要求各种应用领域通信 报文的标准化。为此, 1991 年 9 月 PHILIPS SEMICONDUCTORS 制订并发 布了 CAN 技术规范(VERSION 2.0) 。该技术规范包括 A 和 B 两部分。 2.0A 给出了曾在 CAN 技术规范版本 1.2 中定义的 CAN 报文格式,能提供 11 位地址;而 2.0B 给出了标准的和扩展的两种报文格式,提供29 位地址。 此后,1993 年 11 月 ISO 正式颁布了道路交通运载工具 -数字信息交换 -高速 通信控制器局部网( CAN)国际标准( ISO11898) ,为控制器局部网标准化、 规范化推广铺平了道路。 本科生课程设计(论文) 2 第 2 章 课程设计的方案 2.1 概述 本次设计主要是综合应用所学知识,设计基于 CAN 总线的主从机通信系统, 并在实践的基本技能方面进行一次系统的训练。能够较全面地巩固和应用“工业 控制网络”课程中所学的基本理论和基本方法,并初步了解 CAN 总线协议规范。 系统介绍: 扩展 CAN 总线控制器,在单片机系统中实现 CAN 总线的接口, 并编写接口芯片的驱动程序。通过 CAN 总线,实现两个模块之间的数据通讯, CPU 控制第一个模块发送 1 帧数据,第二个模块收到这帧数据并送至另一个 CPU 的内部存储器。 2.2 系统组成总体结构 在本系统中,采用 AT89C51 单片机,AT89C51 与 PC 机串行通信,设置 SJA1000 工作于 Intel 模式,由 PC 机发送的数据写入 SJA1000 并通过 CAN 收发 器发送。接收数据是通过中断进行的,CAN 总线传输过来的数据经 CAN 接口芯 片 PCA82C250 接收并写入 SJA1000 的 RXFIFO,然后通过中断提请 CPU 读取, 读取的数据上传送给 PC 机。 系统结构框图如图 2.1 所示。 82c250 收发 器 6N137 发送隔离 6N137 发送隔离 SJA1000 CAN 总 线控制器 AT 89C51 单片机 MAX232 图 2.1 系统结构框图 本科生课程设计(论文) 3 第 3 章 硬件设计 3.1 单片机最小系统设计 3.1.1 单片机 AT89C51 ATMEL 公司生产的 AT89C51 单片机采用高性能的静态 80C51 设计,并采用 先进工艺制造,还带有非易失性 Flash 程序存储器。它是一种高性能、低功耗的 8 位 CMOS 微处理芯片,市场应用最多。其主要特点如下: 图3.1 AT89C51 面向控制的 8 为 CPU; 一个片内振荡器和时钟产生电路,振荡频率为 024MHz; 片内 4KB Flash ROM 程序存储器; 128B 的片内数据存储器; 可寻址 64KB 的片外程序存储器和片外数据存储器控制电路; 2 个 16 位定时/计数器; 本科生课程设计(论文) 4 5 个中断源,2 个中断优先级; 一个全双工的异步串行口; 4 个并行 I/O 口,共 32 条可单独编程的 I/O 线; 21 个特殊功能寄存器; 具有节点工作方式,即休闲方式和掉电保护方式; 3.1.2 时钟电路 时钟电路用于产生单片机工作所需的时钟信号。时钟信号可以有两种方式产 生:内部时钟方式和外部时钟方式。本设计选用内部时钟方式如图3.2所示。 图3.2 时钟电路 3.1.3 复位电路设计 复位操作可以使单片机初始化,也可以使死机状态下的单片机重新启动,因 此复位电路对单片机非常重要。复位电路一般分为上电复位,按键复位等。本系 统所选用的复位电路为按键复位如图3.3。 图3.3 按键复位电路 本科生课程设计(论文) 5 3.1.4 电源电路设计 本系统用LM1572芯片设计电源电路。LM1572是一个频率为500kHz降压型开 关脉宽调制稳压电路,可驱动1.5A的负载,占用较小的PCB空间,有极好的电流 响应特性和较宽的工作电压范围,是美国国半公司采用先进的模拟双极形CMOS 与DMOS处理工艺制造,能够较高的开关频率下提供较高的效率。内置150m场 效应功率管可在较小的封装中提供较大的功率。其输出电压可固定5V和3.3V或可 调输出。电路图如图3.4所示。 图3.4 电源电路 3.2 CAN 总线电路设计 3.2.1 控制器 SJA1000 SJA1000 是 PHILIPS 公司早期 CAN 控制器 PCA82C200 的替代品,功能更强, 具有如下特点: 完全兼容 PCA82C200 及其工作模式,即 BASICCAN 模式; 具有扩展的接收缓冲器,64 字节的 FIFO 结构; 支持 CAN2.0B; 支持 11 位和 29 位识别码; 位速率可达 1Mbit/s; 支持 peliCAN 模式及其扩展功能; 24MHz 的时钟频率; 支持与不同微处理器的接口; 本科生课程设计(论文) 6 可编程的 CAN 输出驱动配置; 对于 CPU 来说,CAN 控制器是确保双方独立工作的存贮器映象外围设备。 CAN 控制器与外部 CPU 的接口是通过控制器接口逻辑(CIL)实现的,80C51 的 CPU 通过将地址总线(AB)和数据总线(DB)连接到 CIL 上来完成与 CAN 控制器之间的信息交换,不需要专门的控制总线(CB) ,CPU 与 PCA82C250 之间 的状态、控制和命令信号的交换在 CAN 控制器中完成。 SJA1000 与单片机的接口电路如图 3.5 所示 图 3.5 SJA1000 与单片机的接口电路 3.2.2 驱动器及接口电路 MAX232 MAX232 芯片是美信公司专门为电脑的 RS-232 标准串口设计的接口电路, 使用+5v 单电源供电。 它的内部结构可分为三个部分; 第一部分是电荷泵电路, 由 1、2、3、4、5、6 脚和 4 只电容构成,功能是产生+12v 和-12v 两个电源,提 供给 RS-232 串口电平的需要。第二部分是数据转换通道,由 7、8、9、10、11、12、13、14 脚构成两个数据通道,其中 13 脚(R1IN) 、12 脚 (R1OUT) 、11 脚(T1IN) 、14 脚(T1OUT)为第一数据通道;8 脚(R2IN) 、9 脚(R2OUT) 、10 脚(T2IN) 、7 脚(T2OUT)为第二数据通道;TTL/CMOS 数 据从 T1IN、T2IN 输入转换成 RS-232 数据从 T1OUT、T2OUT 送到电脑 DP9 插 头;DP9 插头的 RS-232 数据从 R1IN、R2IN 输入转换成 TTL/CMOS 数据后从 R1OUT、R2OUT 输出。第三部分是供电。15 脚 DNG、16 脚 VCC(+5v) 。 MAX232 芯片引脚如图 3.6 所示。 本科生课程设计(论文) 7 3.2.3 发送隔离 6N137 高速光电耦合器 6N137 由磷砷化镓发光二极管和光敏集成检测电路组成。 通过光敏二极管接收信号并经内部高增益线性放大器把信号放大后,由集电极开路 门输出。6N137 引脚图如图 3.7 所示。该光电器件高、低电平传输延迟时间短,典 型值仅为 45ns ,已接近 TTL 电路传输延迟时间的水平。具有 10Mbps 的高速性能, 因而在传输速度上完全能够满足隔离总线的要求。内部噪声防护装置提供了典型 10kV/s 的共模抑制功能。除此之外,6N137 还具有一个控制端,通过对该端的控制, 可使光耦输出端呈现高阻状态。 图 3.6 MAX232 引脚图 图 3.7 发送隔离 6N137 3.2.4 收发器 PCA82C250 PCA82C250 是 CAN 协议控制器和物理总线间的接口,它主要是为汽车中高 速通讯(高达 1Mbps)应用而设计。此器件对总线提供差动发送能力,对 CAN 控制器提供差动接收能力,与 ISO11898 标准完全兼容。 PCA82C250 芯片由接收器、驱动器、基准电压产生电路、工作模式选择电路 及保护电路等组成。PCA82C250 内部的限流电路可以防止发送输出级对电池电压 本科生课程设计(论文) 8 的正端和负端短路。虽然在这种故障条件出现时,功耗将增加,但这种特性可以 阻止发送器输出级的破坏。 在节点温度大约超过 160时,两个发送器输出端的极限电流将减少。由于 发送器是功耗的主要部分,因此芯片温度会迅速降低。PCA82C50 芯片的其他部 分将继续工作。当总线短路时,热保护十分重要。 图 3.8 PCA82C250 本科生课程设计(论文) 9 3.3 硬件原理图 123456 A B C D 654321 D C B A Title NumberRevisionSize B Date:5-Jan-2011 Sheet of File:C:Documents and SettingsAdministrator信信Documents信信信信信.DD BDrawn By: P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 RE SE T 9 P3.0 10 P3.1 11 P3.2(INT0) 12 P3.4(INT1) 13 P3.4(T0) 14 P3.5(T1) 15 P3.6(WR) 16 P3.7(RD ) 17 XT AL 2 18 XT AL 1 19 VSS 20 P2.0 21 P2.1 22 P2.2 23 P2.3 24 P2.4 25 P2.5 26 P2.6 27 P2.7 28 PSEN 29 AL E/PROG 30 AE /VPP 31 P0.7 32 P0.6 33 P0.5 34 P0.4 35 P0.3 36 P0.2 37 P0.1 38 P0.0 39 VCC 40 U1 89C51 +5V VCC AD 0 23 AD 1 24 AD 2 25 AD 3 26 AD 4 27 AD 5 28 AD 6 1 AD 7 2 CS 4 RD 5 WR 6 AL E 3 INT 16 TX 0 13 TX 1 14 RX 0 19 RX 1 20 CL KO UT 7 MO DE 11 VD D1 22 VD D2 18 VD D3 12 VSS1 8 VSS2 21 VSS3 15 X1 9 X2 10 U2 SJA1000 C3C4 Y1 VCC Y1 C1 C2 VCC C5 C6 C7 +5V TX D 1 GN D 2 Vcc 3 RX D 4 Vref 5 CA NL 6 CA NH 7 Rs 8 U6 82C250 R2OU T 9 T2IN 10 T1IN 11 R1OU T 12 R1IN 13 T1OU T 14 GN D 15 Vcc 16 C1+ 1 V+ 2 C1- 3 C2+ 4 C2- 5 V- 6 T2OU T 7 R2IN 8 C? 232 1 6 2 7 3 8 4 9 5 J1 DG ND P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 RD WR AL E INT 0 P2.0 VCC 8 IN 2 VD D 3 GN D 5 OU T 6 EN 7 U4 6N 137 IN 2 OU T 3 GN D 5 VD D 6 EN 7 VCC 8 U5 6N 137 VCCVD D AD 0 AD 1 AD 2 AD 3 AD 4 AD 5 AD 6 AD 7 RD WR AL E INT 0 CS 本科生课程设计(论文) 10 第 4 章 软件设计 4.1 主程序 CAN 总线节点的软件设计主要包括三大部分:CAN 节点初始化、报文发送 和报文接收。程序开始运行后,先调用初始化子程序,分别对两个 CAN 模块中 的 SJA1000 进行初始化,然后把要发送的数据写入 CPU 的存储器中,然后循环 调用发送数据子程序和接收数据子程序。具体流程如图 4.1 所示。 开始 CAN1 初始化 CAN2 初始化 待发送数据 写入存储器 CAN1 发送数据 CPU 读取数据 结束 图 4.1 主程序流程图 4.2 初始化子程序 SJA1000 的初始化只有在复位模式下才可以进行,初始化主要包括工作方式 的设置、接收滤波方式的设置、接收屏蔽寄存器(AMR)和接收代码寄存器 (ACR)的设置、波特率参数设置和中断允许寄存器(IER)的设置等。在完成 本科生课程设计(论文) 11 SJA1000 的初始化设置以后,SJA1000 就可以回到工作状态,进行正常的通信任 务。 初始化子程序先设置 MOD 选择复位模式,然后分别设置 CDR 选择工作模式; 设置 IER 选择中断类型;设置 BTR0、BTR1 设定传输速率;设置 OCR 选择输出 模式;设置 ACR、AMR 设定接收数据类型;RBSA、TXERR、ECC 均清零,最 后设置 MOD 进入工作模式。具体流程如图 4.2 所示 开始 设置复位模式 设置时钟分频寄存器 设置中断时间寄存器 设置总线定时寄存器 设置输出控制寄存器 设置验收代码寄存器 设置验收屏蔽寄存器 接收缓冲器首地址清零 发送错误计数器清零 错误代码捕捉寄存器清零 进入工作模式 结束 图 4.2 初始化子程序流程图 本科生课程设计(论文) 12 4.3 报文发送子程序 发送子程序负责节点报文的发送。发送时用户只需将待发送的数据按特定格 式组合成一帧报文,送入 SJA1000 发送缓存区中,然后启动 SJA1000 发送即可。 发送数据子程序先把三个控制字节写入发送缓冲区,然后把等待发送的数据 也写入发送缓冲区,最后设置 CMR,发出发送请求、启动 SJA1000 发送数据。 具体流程如图 4.3 所示。 开始 控制字节写入发送缓冲区 待发送数据写入发送缓冲 区 设置命令寄存器 启动 SJA1000 发送 结束 图 4.3 发送子程序流程图 4.4 报文接收子程序 接收子程序负责节点报文的接收以及其它情况处理。接收子程序比发送子程 序要复杂一些,因为在处理接收报文的过程中,同时要对诸如总线脱离、错误报 警、接收溢出等情况进行处理。SJA1000 报文的接收主要有两种方式:中断接收 方式和查询接收方式,两种接收方式编程的思路基本相同,如果对通信的实时性 要求不是很强,一般采用查询接收方式。 接收数据子程序首先要读 SR 和 IR,判断工作状态及中断类型并做相应处 理,若 RXFIFO 有数据,应判断帧类型并做相应处理,若数据正确则送至 CPU 的内部存储器。具体流程如图 4.4 所示 本科生课程设计(论文) 13 开始 结束 是否总线 关闭、出错、溢出、 有数据 是否总 线关闭 清除中断位 进入工作模式 读中断寄存器 是否溢出 接收缓冲区 是否有数据 清除数据溢出 释放仲裁丢失 捕捉寄存器 释放错误代码 捕捉寄存器 否 是 是 否 否 是 是否 远程帧 是 把接收数据 送到CPU 否释放接收 缓冲区 是 否 图 4.4 接收子程序流程图 本科生课程设计(论文) 14 第 5 章 系统实验数据及分析 系统要求 CAN 总线参数为:晶振频率为 24MHz,,总线的速度为 20kb/s,最 大的传输距离为 3000m,双滤波接收数据。根据上述参数计算总线定时器 0 和定 时器 1 得控制字,计算过程如下: 由总线的速度为 20kb/s 得 skb t Baud/20 1 M tttt tsegtsegsyn 50 12 因为晶振频率为 24MHz,所以 s M tclk 24 1 M BrpBrpBrpBrpBrpBrptt clkscl 5 . 2 1 0 . 1 . 2 2 . 4 3 . 8 4 . 16 5 . 322 s M sjwsjwtt sclsjw 5 1 0 . 1 . 2 s M tclk 24 1 M BrpBrpBrpBrpBrpBrptt clkscl 5 . 2 1 0 . 1 . 2 2 . 4 3 . 8 4 . 16 5 . 322 s M sjwsjwtt sclsjw 5 1 0 . 1 . 2 得总线定时器 0 各控制字位 76543210 Sjw.1Sjw.0Brp.5Brp.4Brp.3Brp.2Brp.1Brp.0 01011101 即 BTR0=5DH 得总线定时器 1 各控制字位 76543210 SamTseg2. 2 Tseg2. 1 Tseg2. 0 Tseg1. 3 Tseg1. 2 Tseg1. 1 Tseg1. 0 00101111 即 BTR1=2FH 本科生课程设计(论文) 15 第 6 章 课程设计总结 本文设计的基于 CAN 总线的主从机通信系统,可实现主机与从机之间的数 据通信。系统设计的关键部分是 CAN 总线通信接口适配卡的设计,其任务是将 PC 的数据和控制参数迅速传送给给定的网络节点,同时将 CAN 网络节点数据送 到 PC 做进一步处理。其功能主要由 MAX232 接口芯片、AT89C51 单片机、 SJA1000CAN 总线控制器、发送隔离 6N137 及 82C250 完成。节点与上位机之间 的数据通信稳定可靠,可以通过现场设置模块修改节点参数。 系统中只有 2 根线与外部相连,并且内部集成了错误探测和管理模块。 CAN 总线通过 CAN 收发器接口芯片 82C250 的两个输出端 CANH 和 CANL 与物理总线相连 ,而 CANH 端的状态只能是高电平或悬浮状态 ,CANL 端只能 是低电平或悬浮状态。这就保证不会在出现在RS-485 网络中的现象 ,即当系 统有错误,出现多节点同时向总线发送数据时 ,导致总线呈现短路 ,从而损坏某 些节点的现象。而且 CAN 节点在错误严重的情况下具有自动关闭输出功能 , 以使总线上其他节点的操作不受影响 ,从而保证不会出现象在网络中 ,因个别 节点出现问题 ,使得总线处于 “死锁”状态。而且 ,CAN 具有的完善的通信协议 可由 CAN 控制器芯片及其接口芯片来实现 ,从而大大降低系统开发难度 ,缩短 了开发周期,这些是仅有电气协议的 RS-485 所无法比拟的。 实验表明了节点 的实用性与可靠性开发过程中提到的技术方案和实现方法可以在汽车内部系统与 各个检测和执行机构间的数据通信设计中推广应用。 本科生课程设计(论文) 16 附录 程序清单 CAN.ASM MODEQU 00H ;模式寄存器 CMR EQU 01H ;命令寄存器 SREQU 02H ;状态寄存器 IR EQU 03H ;中断寄存器 IER EQU 04H ;中断使能寄存器 BTR0EQU 06H ;总线定时寄存器 0 BTR1EQU 07H ;总线定时寄存器 1 OCR EQU 08H ;输出控制寄存器 ALC EQU 0BH ;仲裁丢失捕捉寄存器 ECC EQU 0CH ;错误代码捕捉寄存器 TXERR EQU 0FH ;发送错误计数器 ACR0 EQU 10H ;验收代码寄存器 0 ACR1 EQU 11H ;验收代码寄存器 1 ACR2 EQU 12H ;验收代码寄存器 2 ACR3 EQU 13H ;验收代码寄存器 3 AMR0 EQU 14H ;验收屏蔽寄存器 0 AMR1 EQU 15H ;验收屏蔽寄存器 1 AMR2 EQU 16H ;验收屏蔽寄存器 2 AMR3 EQU 17H ;验收屏蔽寄存器 3 FINEQU 10H;发送/接收帧信息 ID1 EQU 11H ;发送/接收缓冲区之标示符一 ID2EQU 12H ;发送/接收缓冲区之标示符二 DATA1 EQU 13H ;发送/接收数据首址 RBSA EQU1EH;接收缓冲器起始地址 CDR EQU 1FH ;时钟分频寄存器 ;- READER COS 1.0 - ORG 4000H JMP START ORG 4080H ;-主程序- START: MOV DPH, #0D3H ;CAN1 初始化(CAN1 片选为 ;LCS2:0D300H) MOV R0, #0AAH ;验收代码为 AAH LCALL INITCAN 本科生课程设计(论文) 17 MOV DPH, #0D4H ;CAN2 初始化(CAN2 片选为 ;LCS3:0D400H) MOV R0, #0BBH ;验收代码为 BBH LCALL INITCAN ;- MOV R0, #20H ;20H-27H 赋初值 MOV R1, #00H MOV DPTR,#TXDATA SS1: MOV A,R1 MOVC A, A+DPTR MOV R0, A INC R0 INC R1 CJNE R1,#08,SS1 ;- CAN1 发送 1 帧数据- LOOP: MOV DPH, #0D3H MOV R0, #20H LCALL SEND ;发送 20H 为首址的 1 帧数据(前三 ;控制字节为:08H、BBH、FFH,由程序给出) LCALL DELAY ;调用延时子程序 ;-CAN2 接收 1 帧数据- MOV DPH, #0D4H MOV R0, #30H LCALL RECV ;调用接收数据子程序 NOP ;设断点处 HALT: JMP LOOP TXDATA:DB 0AAH,0BBH,0CCH,0D4H ;要发送的一帧数据,用户可改写 DB 0E5H,0F6H,97H,18H ;-初始化子程序- INITCAN: ;DPH、R0 为入口参数 MOV DPL,#MOD ;模式寄存器,选择双验收滤波器模 ;式,进入复位模式 MOV A,#09H MOVX DPTR,A MOV DPL,#CDR ;时钟分频器,选择PeliCAN 模式, MOV A,#88H ;关闭 CLKOUT 输出 本科生课程设计(论文) 18 MOVX DPTR, A MOV DPL,#IER ;中断使能寄存器,开溢出、错误、 MOV A,#0DH ;接收中断 MOVX DPTR,A MOV DPL,#BTR0 ;总线定时寄存器 0 MOV A,#03H MOVX DPTR,A MOV DPL,#BTR1 ;总线定时寄存器 1,6MHz 晶振, MOV A,#0FFH ;波特率 30Kbps MOVX DPTR,A MOVX A, DPTR MOV DPL,#OCR ;输出控制寄存器, ;选择正常输出模式 MOV A,#0AAH MOVX DPTR,A MOV DPL,#ACR0 ;验收代码寄存器 ACR0 MOV A, R0 MOVX DPTR,A INC DPTR ;验收代码寄存器 ACR1 MOV A,#0FFH MOVX DPTR,A INC DPTR ;验收代码寄存器 ACR2 MOVX DPTR,A INC DPTR ;验收代码寄存器 ACR3 MOVX DPTR,A MOV DPL,#AMR0 ;验收屏蔽寄存器 AMR0 MOV A,#00H MOVX DPTR,A INC DPTR ;验收屏蔽寄存器 AMR1 MOV A,#0FFH MOVX DPTR,A INC DPTR ;验收屏蔽寄存器 AMR2 MOVX DPTR,A INC DPTR ;验收屏蔽寄存器 AMR3 MOVX DPTR,A MOV DPL, #RBSA ;接收缓冲器起始地址为 0 MOV A, #00H MOVX DPTR, A 本科生课程设计(论文) 19 MOV DPL, #TXERR ;清除发送错误计数器 MOVX DPTR, A MOV DPL, #ECC ;清除错误代码捕捉寄存器 MOVX DPTR, A MOV DPL,#MOD ;双验收滤波器模式,返回工作模式 MOV A,#08H MOVX DPTR,A RET ;-发送数据子程序- SEND: ;DPH、R0 为入口参数 MOV DPL,#FIN ;SJA1000 发送缓存区首址 MOV A, #08H MOVX DPTR, A INC DPL MOV A, #0BBH MOVX DPTR, A INC DPL MOV A, #0FFH MOVX DPTR, A INC DPL MOV R2, #08H SEND1:MOV A, R0 ;R0 为发送数据首址 MOVX DPTR, A INC R0 INC DPL DJNZ R2, SEND1 MOV DPL,#CMR ;命令寄存器发出发送请求, MOV A,#01H ;启动 SJA1000 发送 MOVX DPTR,A RET ;-接收数据子程序- RECV: ;DPH、R0 为入口参数 MOV DPL,#SR ;状态寄存器地址 MOVX A,DPTR ANL A, #0C3H ;读取总线关闭、出

温馨提示

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

评论

0/150

提交评论