当前位置:首页 >> 机械/仪表 >>

基于CAN现场总线实验教学平台研究与开发


重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

摘 要
CAN 控制局域网因其卓越的特性、极高的可靠性和独特的设计受到工业界的广泛重视, 并被认为是最有前途的现场总线之一。当前工科院校机电一体化专业的实验仪器装置面临淘 汰,实验教学内容迫切需要更新,因此开发以 CAN 总线技术为基础的实验设备是一项十分有 意义的工作。

论文详细介绍了基于 CAN 现场总线实验教学平台的研究与开发的整个过程。首 先分析了 CAN 总线协议的技术规范。然后在此基础上组建了 CAN 总线教学实验平台的结构 模型。 对总体方案、 软硬件设计及实验内容作了深入浅出的阐述。 其中重点讨论了以 STC89C52 微处理器、MCP2515 控制器和 TJA1050 收发器为核心的节点设计内容,该节点通信单元可实 现 CAN 总线报文的点到点、一点到多点及广播方式的接收发送,报文可以是单帧或多帧,标 准或扩展的数据帧和远程帧, 使学生通过实验内容获得对 CAN 总线技术直观全面的了解和认 识,其中本文重点讨论点到点通信。软件设计时,给出了具体的电路原理图、软件流程图和部 分程序代码。最后以芯片 DAC0832 和 ADC0804 为代表详细论述了数模转换与模数转换器的基 本原理。 【关键词】CAN 总线 单片机 关键词】 节点 教学

-I-

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

ABSTRACT
CAN Bus is known as one of the most famous field bus because its excellent characteristics, high reliability and special design. In industrial academy, the experiment instruments of mechanotronics speciality are confronted with disusing currently. The contents of experiment teaching must be updated quickly. So it is very significant to research CAN-bus based experiment instruments. Research and development of a CAN-bus based teaching experiment platform is discussed in detail in the paper. Firstly, it was introduced about CAN technique specification . Secondly, the structural model of CAN teaching experiment system was set up. The overall project, software and hardware design were analyzed in detail. And then, The CAN node design process which serves STC89C51 microprocessor, MCP2515 controller and TJA1050 transceiver as core was discussed particularly. To obtain CAN bus technologies straightly and completely for students, the CAN bus message from point to point, point to multi-point and receiving/sending in the way of broadcast can be realized among the communication unit,this article focuses on point to point communication. Software design,The circuit diagram, software flowchart, and part of program code is given.Finally,as with representatives of the chip DAC0832 and ADC0804,we discuss the basic principle of DAC and ADC in detail. words】 【Key words】CAN Bus microcomputer node teaching

- II -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计





前 言 ........................................................................ 1 第一章 概述 .................................................................. 2 第一节 研究背景 ............................................................. 2 一、基金会现场总线 ........................................................ 2 二、LONworks ............................................................. 3 三、PROFIBUS .............................................................. 3 四、CAN(Control Area Network) ........................................... 3 第二节 研究现状 ............................................................. 4 一、现场总线在我国的发展 .................................................. 4 二、现场总线控制系统 ...................................................... 4 第三节 本课题的研究目的及意义 ............................................... 5 第四节 研究计划和主要内容 ................................................... 6 第二章 CAN 总线性能研究 ........................................................ 7 第一节 CAN 总线简介 .......................................................... 7 第二节 CAN 的技术特点 ........................................................ 7 第三节 CAN 的连接和传递方式 .................................................. 8 第四节 CAN 的报文 ............................................................ 8 一、数据帧 ................................................................ 9 二、远程帧 ................................................................ 9 三、出错帧 ................................................................ 9 四、过载帧 ............................................................... 10 五、帧间空间 ............................................................. 10 第五节 错误检测 ............................................................ 10 一、位错误 ............................................................... 10 二、填充错误 ............................................................. 10 三、CRC 错误 .............................................................. 10 四、应答错误 ............................................................. 10 第三章 系统硬件 .............................................................. 11 第一节 CAN 控制器简介 ..................................................... 11 第二节 独立的 CAN 控制器 MCP2515 .......................................... 11 一、MCP2515 的概述及基本特性 ............................................. 12 二、MCP2515 的芯片引脚与定义 ............................................. 13 三、MCP2515 的控制模块结构 ................................................ 14 第三节 高速收发器 TJA1050 ................................................... 14 一、总体描述 ............................................................. 15 二、主要特征 ............................................................. 15 三、TJA1050 引脚封装及基本性能参数 ........................................ 15 第四节 CAN 实验模块中的单片机 ............................................. 17 第五节 数模转换器 .......................................................... 18 一、D/A 转换器简介 ........................................................ 18
- III -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

二、DAC0832 .............................................................. 第六节 模数转换器 .......................................................... 一、A/D 转换器简介 ........................................................ 二、ADC0804 .............................................................. 第四章 系统基本电路的设计 .................................................... 第一节 CAN 总线节点方案的选择 .............................................. 第二节 CAN 接口电路设计 ..................................................... 一、 CAN 节点模块的硬件结构 .............................................. 二、 电路原理图 .......................................................... 第三节 电源的电路设计 ...................................................... 第四节 最小系统 ............................................................ 第五节 模拟信号的 A/D 转换 .................................................. 第六节 数字信号的 D/A 转换 .................................................. 第五章 系统软件设计及实验设计 ................................................ 第一节 软件开发工具 ........................................................ 第二节 节点的程序软件 ...................................................... 一、节点的初始化 ......................................................... 二、发送程序 ............................................................. 三、接收程序 ............................................................. 第三节 实验内容设计 ........................................................ 结 论 ....................................................................... 致 谢 ....................................................................... 参考文献 ..................................................................... 附 录 ....................................................................... 一、英文原文: ............................................................. 二、英文翻译: ............................................................. 三、本设计原理图: ......................................................... 四、源程序: ................................................................

19 20 20 20 22 22 23 23 24 25 25 26 27 29 29 29 29 32 33 34 37 37 39 40 40 45 49 50

- IV -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计





传统的控制系统由于采用一对一连线,用电压,电流的模拟信号进行测量 控制,或者采用集散系统 DCS,通过总线如 RS485 同上位机相连,主要完成调 控策略以及集中操作等功能。在 DCS 中,一旦上位机出现故障,将会导致整个 控制系统的瘫痪,危险过于集中,系统的可靠性和稳定性不佳。另外还存在拓 展性不好、布线复杂、成本较高的缺点。由于 485 通信网络本身的一些缺陷, 使得它面对以上问题时不能给出一个很好的解决方案, 难于实现设备之间以及 系统与外界之间的信息交换。要满足自动控制技术现代化的要求,同时实现整 个企业的信息集成,实施综合自动化,就必须设计出一种能在工业现场环境中 运行,性能可靠,造价低廉的通信系统,形成工厂底层网络,完成现场自动化 设备之间的多点数字通信, 实现底层现场设备之间以及生产现场与外间的信息 交换。现场总线就是在这种实际需求的驱动下应运而生的。为了适应这种新技 术的发展,自动控制方面的实验设备也必须与此同步。与实际控制技术一样, 高等院校的教学控制实验系统也大都从单回路模拟控制逐渐过渡到了 DCS 控 制,但也有因缺乏经费支持还保持单回路模拟的控制,这已经无法适应当前教 学的需要。对于成套引进总线式设备存在设备昂贵、无法装备多组,但组数少 又不是和人数较多的学生实验。因此,通过自身力量的开发、设计和安装的基 于现场总线的控制系统成本低、实验性强,用于专业是实验具有很强的实际意 义。本文对基于 CAN 总线实验教学平台的研究进行了简要的介绍。

-1-

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

第一章

概述

第一节 研究背景
现场总线是 20 世纪 80 年代末、 年代初发展起来的, 90 它可作为工厂数 字通信网络的基础, 沟通了生产过程及控制设备之间及其与更高控制管理层次 之间的联系。它作为智能设备的联系纽带,把节点挂接在总线上,连接为网络 系统并进一步构成自动化系统,实现基本控制,补偿计算,参数修改,报警, 显示,监控,优化及控管一体化的综合自动化功能。这是一项集嵌入式系统, 控制,计算机,数字通信,网络为一体的综合技术。由于现场总线适应了工业 控制系统向智能传感、控制、计算机、数字通信等方向的发展,一经产生便成 为全球工业自动化技术的热点,受到全世界的普遍关注。国际上许多有实力、 有影响的公司都先后在不同程度上进行了现场总线技术与产品的开发。 因此导 致目前生产的自动化仪表、集散控制系统(DCS) 、可编程控制器(PLC)在产 品的体系结构、功能结构方面的较大变革,标志着工业控制技术领域又一个新 时代的开始。 现场总线在历经了群雄并起,分散割据的初始阶段后,尽管已有一定范围 内的协商并和。 但至今仍未形成完整统一的国际标准。 世界上大约有 40 多种。 其中较有影响的现场总线主要有以下几种,它们具有各自的特点,每一种现场 总线都是在其支持公司或者组织多年产品技术研发成果积累的基础上产生的, 已逐渐形成其影响并在一些特定的的应用领域显示了自己的优势。

一、基金会现场总线
基金会总线,即 FondationFieldbus,简称 FF,这是在过程自动化领 域得到广泛支持和具有良好发展前景的技术。其前身是以美国 Fisher-Rousemount 公司为首的联合了横河、ABB、西门子等 80 家公司制 定的 ISP 协议和以 Honeywell 公司为首的联合欧洲等地 150 余家公司制定 的 WorldFIP 协议于 1994 年 9 月合并的。 该总线在过程自动化领域得到了 广泛的应用,具有良好的发展前景。FF 以国际标准化组织 ISO 的开放化系 统互联模型为基础,取其物理层、数据链路层、应用层,并在应用层上增 加了用户层。FF 可分低速 H1 和高速 H2 两种通信速率,前者传输速率为

-2-

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

31.25Kbit/秒,通信距离可达 1900m,可支持总线供电和本质安全防爆环 境。后者传输速率为 1Mbit/秒和 2.5Mbit/秒,通信距离为 750m 和 500m, 支持双绞线、光缆和无线发射,协议符号 IEC1158-2 标准。FF 的物理媒 介的传输信号采用曼切斯特编码。

二 、 LONworks
LONworks 又是一种具有强劲功能的现场总线技术, 它由美国 Echelon 公司推出,并由 Motorola、Toshiba 公司共同倡导。它采用 ISO/OSI 模型 的全部7层通讯协议,采用面向对象的设计方法,通过网络变量把网络通 信设计简化为参数设置。支持双绞线、同轴电缆、光缆和红外线等多种通 信介质,通讯速率从 300bsp 至 1.5Mbsp 不等,直接通信距离可达 2700m (78Kbit/s) ,被誉为通用控制网络。这样 LONworks 已经建立了一套从协 议开发、芯片设计、芯片制造、控制模块开发制造、OEM 控制产品、最终 控制产品、分销、系统集成等一系列完整的开发、制造、推广、应用体系 结构,吸引了很多企业参与到这项工作中来,这对这种技术的推广、应用 有很大的促进作用。

三、PROFIBUS
PROFIBUS 是德国标准(DIN19245)和欧洲标准(EN50170)的现场总 线标准。由 PROFIBUS--DP、PROFIBUS-FMS、PROFIBUS-PA 系列组成。DP 用于分散外设间高速数据传输, 适用于加工自动化领域。 FMS 适用于纺织、 楼宇自动化、可编程控制器、低压开关等。PA 用于过程自动化的总线类型, 服从 IEC1158-2标准。PROFIBUS 支持主-从系统、纯主站系统、多主多 从 混 合 系 统 等 几 种 传 输 方 式 。 PROFIBUS 的 传 输 速 率 为 9.6Kbit/s 至 12Mbit/s, 最大传输距离在 9.6Kbit/s 下为 1200m, 12Mbit/s 小为 200m, 在 可采用中继器延长至 10km,传输介质为双绞线或者光缆,最多可挂接 127 个站点。

Network) 四、CAN(Control Area Network) CAN(
最早由德国 BOSCH 公司推出,它广泛用于离散控制领域,其总线规范 已被 ISO 国际标准组织制定为国际标准,得到了 Intel、Motorola、NEC 等公司的支持。CAN 协议分为二层:物理层和数据链路层。CAN 的信号传 输采用短帧结构,传输时间短,具有自动关闭功能,具有较强的抗干扰能

-3-

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

力。CAN 支持多主工作方式,并采用了非破坏性总线仲裁技术,通过设置 优先级来避免冲突,通讯距离最远可达 10KM/5Kbps/s,通讯速率最高可 40M/1Mbp/s,网络节点数实际可达 110 个。目前已有多家公司开发了符合 CAN 协议的通信芯片。

第二节 研究现状
一、现场总线在我国的发展
中国已经成为各种现场总线激烈争夺的重要市场, 一些世界主要的现场总 线组织在中国都设立分支机构,如:DeviceNet、Foundation Fieldbus、 LonWorks、 PNet、 Profibus和WorldFIP等。 国内企业开发的产品开始投入使用, 采用的现场总线有:CAN、HART、FF、LonWorks、Profibus等。但是,我国还 没有自己的现场总线技术标准,一直以来只能跟踪国外的技术发展动向,在竞 争中处于被动。因此,研究现场总线网络环境通信协议,探索现场总线与以太 网以及和Intemet的融合问题,研究具有自主知识产权的现场总线技术是当务 之急。

二、现场总线控制系统
现场总线控制系统既是一个开放通信网络,又是一种全分布控制系统。它 作为智能设备的联系纽带,把挂接在总线上、作为网络节点的智能设备连接为 网络系统,并进一步构成自动化系统,实现基本控制、补偿计算、参数修改、 报警、显示、监控、优化及管理控制一体化的综合自动化功能。这是一项以智 能传感器、控制、计算机、数字通信、网络为主要内容的综合技术。以前,在 国内控制领域,由于没有更好的选择,大多采用RS232或RS485作为通信方式。 这种信息交流方式效率极低,很不利于信息资源共享。其不足主要有:一主多 从,无冗余;数据通信为命令响应,传输率低;错误处理能力弱。采用CAN总 线技术后即可解决上述问题。CAN网络上任何一个节点均可作为主节点主动地 与其他节点交换数据;网络节点的信息帧可以分出优先级,这对于有实时性要 求的控制提供了方便;CAN的物理层及数据链路层有独特的结构,使其在抗干 扰以及错误检测等方面的性能均大大提高。CAN的上述特点使起成为诸多工业 测控领域中首选的现场总线之一, 它的高性能价格比决定了它在许多领域都有 广阔的应用前景和发展潜力。

-4-

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

第三节 本课题的研究目的及意义
目前 CAN 现场总线技术已经渗透到各个领域,总线技术在我国无疑具有 巨大的潜在市场。这必然带来社会对掌握 CAN 现场总线技术人才的大量需求, 使得现场总线工程师成为未来几年内热门的职业之一。因此,作为对以新型人 才为己任的高等院校来说,如何接收现场总线技术带来的挑战,尽快开设现场 总线技术的相关理论与实验课程,并通过对其研究、探讨与实践,逐渐形成较 规范的教学体系已经成为一个重要的课题。 当前制造技术正朝着机电一体化的方向发展, 它成为当今世界机械工业发 展的一种必然趋势,高校机电实验教学是一项十分重要的工作,它直接关系到 学生对专业知识的把握,关系到学生实践能力和创新能力的发展和提高。目前 机电实验教学体系存在的主要问题: (1)专业实验教学体系与现代机电一体化 的发展不相适应。 无法做到机与电的真正结合, 不能体现出机电实验的科学性、 系统性和综合性,培养不出真正的机电复合型人才。 (2)实验教学内容仍以验 证行为主,无法培养学生的创新能力。现有的机电实验由于受到实验内容、实 验条件等诸多因素的限制, 无法保证每个学生都能够获得较为全面的动手创造 机会,因此削弱了学生的参与性,扼杀了他们的创新思维能力,不利于培养学 生的自我学习、思考问题和解决问题的能力。 (3)实验教学手段单一、设备陈 旧、技术落后甚至于实验设备缺少,导致很多学生无实验设备。因此现有的实 验教学已经远远不能适应机电一体化迅猛发展的趋势。 在新形势下加强对机电 实验教学的改革,以适应科学技术和高等学校对人才培养的需要是十分必要 的。 因此引进和开发以先进技术 CAN 现场总线为基础的实验设备是十分必要 和有意义的。通过必要的基础理论教学与大量的实践操作环境相结合,利用先 进的教学实验平台及集成开发环境, 首先可以帮助学生加深对所学的相关知识 如模拟与数字电子技术、传感器技术、单片机技术、CAN 总线技术和自动控制 技术的理解。其次使学生通过对系统的硬件、软件的反复调试实验,提高了对 现场总线技术的认识, 充分学习和掌握 CAN 总线技术可靠性高、 实时性强的特 点,对系统的开发建立起基本的概念,对机电和计算机结合的综合应用产品具 有更感性的体会,从而锻炼他们的综合实践能力和解决实际问题的能力,达到 培养学生基本实验技能和实际动手的目的。最后,利用不需要应用层和软硬件 的任何改变可在 CAN 网络上直接添加节点,最多可以挂接到 110 个节点,易

-5-

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

于实验内容扩展的特点,为实验内容的不断创新及提高实验效率提供了保证, 我们可以开展综合性、设计性实验项目。学生 2~3 人自发组成 CAN 总线系 统兴趣小组,查阅资料、拟定实验方案、编写实验程序、并且进行一部分硬件 电路的设计和制作,根据实际需要独立设计和调试较复杂的总线控制系统,充 分发挥在实验中的主动性,使他们有较大的思考空间,培养学生综合运用各学 科知识的能力,同时也完成了课程设计、集中实训和毕业设计等教学环节。 本课题的研究是 CAN 总线教学实验设备开发的一种尝试, 在满足实用性和 实验性的同时又易于根据需要扩展及提升其功能, 目的是调动学生参与实验的 积极性,使得学生对 CAN 总线具有更深的理解,对动手能力的提高起到促进作 用,进一步完善实验教学研究,不断提高实验教学质量。

第四节 研究计划和主要内容
本课题研究的主题是基于 CAN 总线技术上搭建教学实验系统。研究计划 从常用的 CAN 节点通信的基本原理、通信协议与软硬件入手,搭建起分布式 节点实验系统,完成节点之间的通信任务。具体内容包括: 1、CAN 总线协议技术规范的分析,它是设计 CAN 应用系统的基本依据和 技术关键。 2、以单片机为控制核心单元的 CAN 节点:CAN 节点直接与被控对象连接 在一起,根据需要各个节点向总线自主发送数据,节点也能实时监听总线,并 对自己需要的数据按需接受。 节点以微处理器和可编程的 CAN 控制芯片组成, 具有现场数据采集、控制及 CAN 总线通信功能,可以与其它 CAN 测控节点传 递各种参数,并接受来自其它节点的命令和数据,用来调整和改变控制状态。 3、软件设计部分主要包括 CAN 控制器初始化模块、接受数据模块、发送 任务模块和其它任务模块。

-6-

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

CAN总线性能研究 第二章 CAN总线性能研究
CAN总线简介 第一节 CAN总线简介
CAN 是控制器局域网络(Controller Area Network, CAN)的简称,主要用 于各种过程(设备)检测及控制,是由德国的 BOSCH 公司为汽车的监测与控制 设计的,但由于 CAN 总线本身的突出特点,其应用领域目前已不再局限于汽车 行业,而向过程工业、机械工业、机器人、数控机床、医疗器械及传感器等领 域发展。由于其高性能、高可靠性及独特的设计,CAN 总线越来越受到人们的 重视,国际上已经有很多大公司的产品采用这一技术。CAN 已经形成国际标准 (IS011898),并已成为工业数据通信的主流技术之一。

CAN的技术特点 第二节 CAN的技术特点
CAN总线属于总线式串行通信网络,由于采用了许多新技术及其独特的设 计,与一般通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和 灵活性,其特点可概括如下: 1、CAN总线以多主方式工作,网络上任意节点均可在任意时刻主动地向网 络上其他节点发送信息,而不分主从。 2、CAN网络上的节点信息可分不同的优先级,可满足不同的实时要求,商 优先级的数据可在134us内得到传输。 3、CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时, 优先级较低的节点会主动地退出发送, 而最高优先级的节点可不受影响地继续 传输数据。 4、CAN总线只需通过报文滤波即可实现点对点、一点对多点及全局广播等 几种方式传送接收数据,无需专门的“调度”。CAN总线的直接通信距离最远 可达10kin(速率5kbps以下);通信速率最高可达1Mbps(此时透信躐离最长为 40m)。 5、CAN上的节点数主要取决于总线驱动电路,目前最多可达128个,报文 标识符可达2032种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受

-7-

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

限制。 6、CAN的每帧信息都有CRC校验及其它检错措施,保证了数据出错率极低。

CAN的连接 的连接和传递方式 第三节 CAN的连接和传递方式
CAN是一个多主机相连,它的通信串行链路采用一条多个单元均可连接的 总线, 单元总数受限于延迟时间和总线的电气负载。 该总线可用各种方法实现, 如差分驱动平衡双绞线、单线(加地线)、光纤等,其中常用的为第一种。总线 上的数据可具有两种互补的逻辑值之一: 显性(dominant)和隐性(recessive)。 在两个单元同时分别发送显性和隐性电平时,主线上的数值将是显性电平。在 总线采用线与操作时,显性电平用逻辑0表示,而隐性电平显示1。 CAN总线中,各节点应使用相同的位速率。它的每位时闯由舄步段、传播 段、相位缓冲段1和相位缓冲段2组成。发送器在同步段前改变输出的位数值。 接收器在相应的两个相位缓冲段之间采样输入位值。 而两个相位缓冲段长度可 自由控制, 以保证采样的可靠性。 除此之外, 由于各节点的时钟总有小的差异, CAN总线使用特殊的时钟同步技术来保证时钟的同步性,并在实际传送中,遇 到连续的五位发送相同时,将自动插入一个补码位(除了发送固定格式字段 时)。

CAN的报文 第四节 CAN的报文
CAN总线以报文为单位进行信息传送。报文中包括标志符D,它也标志了报 文的优先权。CAN总线上各个节点都可以主动发送。如同时有两个或更多节点 开始发送报文,采用标志符m来进行仲裁,发送具有较高优先权报文节点赢得 总线使用权,而其他节点自动停止发送。在总线再次空闲后,这些节点将自动 重发原报文。CAN系统中,一个CAN节点不使用有关系统结构的任何信息(如站 地址等)。报文中标志符D并不指出报文的具体地址,而是描述数据的含义。网 络中的所有节点都可由D来自动决定是否接受报文。每个节点都有ID寄存器和 屏蔽寄存器,接受到的报文只有与该屏蔽的功能相同时,该节点才开始正式接 受报文,否则它将不理睬D后面的报文。这使CAN系统非常灵活,可任意扩展或

-8-

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

改变网络组成。CAN支持4种不同类型报文帧。

一、数据帧
数据帧由7个不同的位场组成,即帧起始、仲裁帧、控制帧、数据帧、CRC 帧、应答帧和帧结束。数据长度可为0。如表2.1所示。
表2.1 CAN总线的数据帧 帧起始 SOF 仲裁场 11位标识符 RTR r1 控制场 数据场 位 CRC场 应答场 帧结束 16位 2位 7位

r0 DlC(4) 8

1、帧起始(SoF)标志数据帧和远程帧的开始。它仅由一个显性位,只有在 总线处于空闲时,才允许单元开始发送。 2、仲裁场由11位标志符(D)和远程发送请求位(RTR)组成。 3、控制场由6位组成,包括数据长度码和两个保留位,这两个保留位必须 发送显性位,但接收器认可显性和隐性的全部组合。DLC为数据长度码n,它为 0-8。 4、数据场允许的数据字节长度为0-8位,由n决定。 5、CRC场采用15位CRC,其生成多项式为X15+X14+X10+X8+X7+X4+X3+1 6、CRC场的最后一位为CRC分隔符,它为隐性电平。 7、应答场包括应答位和应答分隔符。发送站发出的这两位均为隐性电平。 而正确的接受到有效报文的接收站,在应答期间应传送显性电平给发送站。应 答分隔符应为隐性电平。 8、帧结束由7位隐性电平组成。

二、远程帧
通过总线单元发送,以请求发送具有相同标识符的数据帧。

三、出错帧
出错帧由错误标志表和错误分隔符组成。 接收站在发现总线上的报文出错 时,将自动发出“活动错误标志”,它为六个连续的显性位。由于各个接收站 发现错误的时间可能不同,总线上的实际错误标志可能由6-12位显性位组成。 在错误标志后为8个隐性位组成的错误分隔符。每个站发送错误标志后,开始 发送隐性电平,并监视总线,在检测到出错误条件时,将发送“认可错误标志

-9-

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

",它为6个连续的隐性位。

四、过载帧 过载帧
过载帧由过载标志和过载分隔符组成。过载帧只能在一个帧的结束开始。在一 个接收站要求延时下一个数据或远程帧,或在帧间空间的间歇场的第1、2位检 测到显性位及在错误、 过载分隔符的最后一位采样到显性位, 开始发送过载帧。 过载标志由6个显性位组成,而总线上的实际过载标志为6.7位。过载分隔符 为8个隐性位。

五、帧间空间
数据帧和远程帧与前面的任何帧用帧间空间分隔开。 它包括间歇场和总线 空闲场。间歇场由3个隐性位组成。总线空闲场可为任何长度,此时总线处于 空闲状态,允许发送站发送新报文。对于已发送“认可错误标志"的站,它在 间歇场后还将送出8个隐性位。

第五节 错误检测
一、位错误
向总线送出一位的某个节点同时也在监视总线, 当监视到总线位的电平与 送出的电平不同时9则在该位时刻检测到一个位错误。但是在仲裁区的填充位 流期间或应答间隙送出隐性位而检测到显性位时,不认为是错误位。送出认可 错误标注的发送器,在检测到显性位时也不认为是错误位。

二、填充错误
在应用位填充方法进行编码的报文字段中,出现了6个连续相同位电平。

三、CRC错误 CRC错误
CRC序列是由发送器CRC计算的结果组成。 接收器以与发送器相同的方法计 算CRC。如果计算的结果与接收到的CRC序列不同,则检测一个CRC错误。

四、应答错误
在应答位间隙,发送站未检测到显性位。则由它检测出一个应答错

- 10 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

第三章 系统硬件
第一节 CAN 控制器简介
CAN 总线的两层协议固化在它的相关芯片中, 主要是总线控制器和总线收 发器。CAN 总线控制器具有完成 CAN 通信协议所要求的物理层和数据链路层的 几乎所有的功能。发展到今天,已经有多个厂家的各种类型的产品。既有独立 的 CAN 控制器芯片, Microchip 的 MCP2515, 如 又有集成到微控制器中的控制 器芯片,如 8 位的 Philip 的 P8XC59X 系列芯片,16 位的 Motorola 的 68HC912 系列以及 32 位的 Motorla 的 MC6837X 系列芯片和带 CAN 的 DSP 芯片, T1 的 如 TMS320LF24 系列芯片。前者比较灵活,可以与多种类型的单片机、微型计算 机的各类标准总线进行接口组合。后者在许多特定情况下,使电路设计简化和 紧凑,效率提高。表 3.1 列出了具有代表性的 CAN 控制器产品。
表 3.1 CAN 总线控制器器件 制造商 Bosch 产品型号 CC750 MCP2515 Microchip PIC18C858 SJA1000 Philip P8XC59X XA-C3 AN82527 Intel AN87C196CA 产品描述 独立的 CAN 控制器芯片,支持 CAN2.0B,和 Intel 的 82527 兼 容,和 CPU 通信方式只有 SPI 串口 独立的 CAN 控制器芯片支持 CAN2.0B,3 个发送缓冲,SPI 接口 带 CAN 接口的 8 位微处理器,支持 CAN2.0B,3 个发送缓冲 2 个 接受缓冲器,10 位 ADC、SPI,2 路 PWM 独立的 CAN 控制芯片,支持 CAN2.0B,1 个发送缓冲 带 CAN 接口的 8 位微处理器,支持 CAN2.0B 带 CAN 接口的 16 位微处理器,支持 CAN2.0B,32 个发送/接受 缓冲 独立的 CAN 控制器芯片,支持 CAN2.0B 带 CAN 接口的 16 位微处理器,支持 CAN2.0B

在这里,考虑到 Microchip 的 MCP2515 控制器价格比较便宜而且,也能满 足实验所需的性能要求,以它作为代表给予介绍。

第二节 独立的 CAN 控制器 MCP2515

- 11 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

一、MCP2515 的概述及基本特性
MCP2515 是 Microchip 公司的一款独立控制器局域网络 (Controller Area Network, CAN)协议控制器,完全 支持 CAN V2.0B 技术规范。该器件 能发送和接收标准 和扩展数据帧以及远程帧。 MCP2515 自带的两个验收屏蔽 寄存器六个验收滤波寄存器可以过滤掉不想要的报文,因此减少了主单片机 (MCU) 的开销。 MCP2515 与 MCU 的连接是通过业界标准串行外设接口(Searial Peripheral Interface, SPI)来实现的。MCP2515 基本特性包括: 1、完全支持CAN V2.0B 技术规范,通讯速率为1 Mb/s: - 0-8 字节长的数据字段 - 标准和扩展数据帧及远程帧 2、接收缓冲器、验收屏蔽寄存器和验收滤波寄存器: - 两个接收缓冲器,可优先存储报文 - 六个29 位验收滤波寄存器 - 二个29 位验收屏蔽寄存器 3、对头两个数据字节进行滤波(针对标准数据帧) 4、三个发送缓冲器,具有优先级设定及发送中止功能 5、高速SPI 接口(10 MHz): - 支持0,0 和1,1 的SPI 模式 6、单触发模式确保报文发送只尝试一次 7、带有可编程预分频器的时钟输出引脚: - 可用作其他器件的时钟源 8、可用起始帧信号(Start-of-Frame, SOF),用于监控SOF 信号: - 可用于时隙协议和/或总线诊断以检测早期总线性能退化 9、带有可选使能设定的中断输出引脚 10、“缓冲器满”输出引脚可配置为: - 各接收缓冲器的中断引脚 - 通用数字输出引脚 11、“请求发送(Request-to-Send, RTS)”输入引脚可各自配置为: - 各发送缓冲器的控制引脚,用于请求立即发送报文 - 通用数字输入引脚 12、低功耗的CMOS 技术: - 工作电压范围2.7V 至5.5V

- 12 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

- 5mA典型工作电流 - 1μA典型待机电流(休眠模式) 14、工作温度范围: - 工业级(I):-40°C 至+85°C - 扩展级(E):-40°C 至+125°C。

二、MCP2515 的芯片引脚与定义
MCAP2515 的引脚排列与定义如图 3.1 所示。

图 3.1 MCP2515 引脚封装图

TXCAN为连接到CAN 总线的发送输出引脚; RXCAN为连接到CAN 总线的接收 输入引脚;CLKOUT为带可编程预分频器的时钟输出引脚;TX0RTS为发送缓冲器 TXB0 请求发送引脚或通用数字输入引脚。VDD 上连100k 内部上拉电阻; TX1RTS发送缓冲器TXB1 请求发送引脚或通用数字输入引脚。VDD 上连100kΩ 内部上拉电阻;TX2RTS为发送缓冲器TXB2 请求发送引脚或或通用数字输入引 脚。VDD 上连100kΩ 内部上拉电阻;OSC2为振荡器输出;OSC1为振荡器输入; VSS为逻辑和I/O 引脚的参考;RX1BF为接收缓冲器RXB1 中断引脚或通用数字 输出引脚;RX0BF为接收缓冲器RXB0 中断引脚或通用数字输出引脚; INT为中 断输出引脚;SCK为SPI 接口的时钟输入引脚;SI为SPI 接口的数据输入引脚; SO为SPI 接口的数据输出引脚;CS为SPI 接口的片选输入引脚;RESET为低电 平有效的器件复位输入引脚;VDD为逻辑和I/O 引脚的正电源;NC为无内部连

- 13 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

接。

三、MCP2515 的控制模块结构
主要包括发送缓冲器、接受缓冲器、验收滤波器、位流处理器、位时许逻 辑和错误管理逻辑几个模块。模块结构如图 3.2 所示。

CAN 协议 引擎

发送和接受缓冲器 验收屏蔽寄存器和 验收滤波器

SPI 接口 逻辑

控制逻辑 时序 发生器

控 制 和 中 断 寄存器

图 3.2 MCP2515 模块结构

第三节 高速收发器 TJA1050
CAN 收发器是一个物理层的器件,它是 CAN 总线控制器和物理总线之间 的接口,器件可以提供对总线的差动发送能力和差动接收能力。厂家产品有 Bosch 的 CF151 和 CDF160 、 Philip 的 PCA82C250/251 和

- 14 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

TJA1040/1041,TJA1050 /1054、TI 的 SN65HVD2 等,本文中以 TJA1050 作为 代表进行详细论述。

一、总体描述
TJA1050 是控制器区域网络( CAN)协议控制器和物理总线之间的接口。 TJA1050 可以为总线提供不同的发送性能,为 CAN 控制器提供不同的接收性 能。TJA1050 是 PCA82C250 高速 CAN 收发器的后继产品。TJA1050 在以下方 面作了重要的改进:CANH 和 CANL 理想配合,使电磁辐射减到更低。在有不 上电节点时,性能有所改进。

二、主要特征
1、与“ISO 11898”标准完全兼容。 2、速度高(最高可达 1M 波特) 。 3、低电磁辐射(EME) 。 4、具带有宽输入范围的差动接收器,可抗电磁干扰(EMI) 。 5、没有上电的节点不会对总线造成干扰发送数据(TXD) 。 6、控制超时功能。 7、发送禁能时的静音模式。 8、在暂态时自动对总线引脚进行保护。 9、输入级与 3.3V。 10、装置兼容。 11、热保护。 12、对电源和地的防短路功能。 13、可以连接至少 110 个节点。

三、TJA1050 引脚封装及基本性能参数
1、引脚封装及基本性能参数见图 3.3 和表 3.2

- 15 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

图 3.3 TJA1050 引脚封装图

表 3.2 TJA1050 基本性能参数数据 助记符 Vcc VCANH VCANL 参数 电源 引脚 CANH 的直流电压 引脚 CANL 的直流电压 不同的总线输入电压
TXD 到 RXD 的传播延迟时间 0<VCC<5.25V; 无时间限制 0<VCC<5.25V; 无时间限制

条件

最小值 4.75 -27 -27 1.5 -40

最大值 5.25 +40 +40 3 250 +125

单位 V V V V Ns ℃

Vref
tPD(TXD-RXD)

控制 VS=0V

Tamb

环境温度

2、功能描述
TJA1050 是 CAN 协议控制器和物理总线之间的接口。它最初是应用在波 特率范围在 60k 波特到 1M 波特的高速自动化应用中。TJA1050 可以为总线 提供不同的发送性能,为 CAN 控制器提供不同的接收性能。而且它与“ISO 11898”标准完全兼容。 TJA1050 有一个电流限制电路,保护发送器的输出级,使由正或负电源电 压意外造成的短路不会对 TJA1050 造成损坏(此时的功率消耗增加) 。 TJA1050 还有一个温度保护电路,当与发送器的连接点的温度超过大约 165℃时,会断开与发送器的 连接。因为发送器消耗了大部分的功率,所以这 个集成电路的功率消耗和温度会较低。 但是此时 IC 的其他 功能仍继续工作。 当引脚 TXD 变高(电平) ,发送器由关闭状态复位。当总线短路时,尤其需 要这个温度 保护电路。 在汽车通电的瞬间,引脚 CANH 和 CANL 也受到保护。 通过引脚 S 可以选择两种工作模式:高速模式或静音模式。 高速模式就是普通的工作模式,将引脚 S 接地可以进入这种模式。如果 引脚 S 没有连接,高速模式就 是默认的的工作模式。 在静音模式中,发送器是禁能的。但 IC 的其他功能可以继续使用。将 S 引脚连接到 VCC 可以进入这 个模式。静音模式可以防止在 CAN 控制器不受 控制时对网络通讯造成堵塞。 当引脚 TXD 由于硬件和/或软件程序的错误而持久地为低(电平)时, “TXD 控制超时”定时器电路可以防止总线进入这种持久的支配状态(阻塞所 有网络通信) 。这个定时器是由引脚 TXD 的负跳变边缘触 发。如果引脚 TXD

- 16 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

的低电平持续时间超过内部定时器的值,发送器会被禁能,使总线进入隐性状 态。定时器由引脚 TXD 的正跳变边沿复位。

第四节 CAN 实验模块中的单片机
单片机把运算和控制所需要的最基本的部件都集成在统一块芯片上, 并可 在上面运行各种事先编好的软件指令来使单片机分析各种不同的情况、 控制各 种外部设备或执行不同的工作。 用单片机构成的电路往往具有体积小、 成本低、 功能强、可靠性高、功耗低、电路简洁、开发和改进容易等一系列优点,因此 具有优异的性能价格比,从而使它得到了越来越广泛的应用。现在,单片机几 乎无处不再,从家里的电视机、空调机、洗衣机、微波炉到汽车、复印机、打 印机、移动电话以及医疗仪器、工业控制设备、导弹、飞机、卫星、机器人和 其他智能化设备,都有单片机在工作。单片机的应用意义不仅仅限于它的应用 范畴或由此带来的经济利益, 更重要的是它已从根本上改变了传统的控制方法 和设计思想,赋予 了受控对象智能化特征,是控制技术上的一次飞跃。

一、STC89 系列简介
STC89 系列单片机时 MCS-51 系列单片机的派生产品。 它们在指令系统、 硬 件结构和片内资源上与标准 8052 单片机完全兼容,DIP40 封装系列与 8051 为 pin-to-pin 兼容。STC-89 系列单片机高速(最高时钟频率 90MHz) ,低功耗, 在系统/在应用可编程(ISP,IAP) ,不占用资源。

二、STC89C52 简介
STC89C52 为 8 位单片机,程序存储器为 8K,外部可扩展至 64KB,内部 RAM 为 512B, 可扩展至 64KB, 组可位寻址的 8 位输入/输出口, 4 即图中 P0,P1,P2,P3。 有 40 个引脚,32 个外部双向输入/输出(I/O)端口,同时内含 2 个外中断口, 8 个 16 位可编程定时计数器, 个全双工串行通信口, 个读写口线, 2 2 STC89C52 可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和 Flash 储存器结合在一起, 特别是可反复擦写的 Flash 储存器可有效地降低开发成本。 在内部功能及管脚排布上与通用的 8xc52 相同, 其主要用于会聚调整时的功能

- 17 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

控制。 STC89C52 引脚图如图 3.4 所示

图 3.4 STC89C52 引脚图

三、 引脚说明
主要管脚有:XTAL1(19 脚)和 XTAL2(18 脚)为振荡器输入输出端口, 外接 12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位 电路。VCC(40 脚)和 VSS(20 脚)为供电端口,在本设计中,P0 端口(32~39 脚)被定义为 N1 功能控制端口,分别与 N1 的相应功能管脚相连接,13 脚定义 为 IR 输入端, 脚和 11 脚定义为 12C 总线控制端口, 10 分别连接 N1 的 SDAS 18 ( 脚)和 SCLS(19 脚)端口,12 脚、27 脚及 28 脚定义为握手信号功能端口, 连接主板 CPU 的相应功能端, 用于当前制式的检测及会聚整状态进入的控制功 能。

第五节 数模转换器
一、D/A 转换器简介
D/A 转换为把数字信号转换为信息基本相同的模拟信号而设计的处理过

- 18 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

程。DA 转换器的内部电路构成无太大差异,一般按输出是电流还是电压、 能否作乘法运算等进行分类。大多数 DA 转换器由电阻阵列和 n 个电流开 关(或电压开关)构成。 按数字输入值切换开关, 产生比例于输入的电流(或 电压)。此外,也有为了改善精度而把恒流源放入器件内部的。一般说来, 由于电流开关的切换误差小,大多采用电流开关型电路,电流开关型电路 如果直接输出生成的电流,则为电流输出型 DA 转换器。此外,电压开关 型电路为直接输出电压型 DA 转换器。

二、DAC0832
1、DAC0832 性能及规格描述
电流设置时间:1μs。 分辨率:8 位。 线性度:8 位或者 10 位(保证温度) 。 低功耗:20 mW 单电源提供:直流 5-15V 单电源提供。

2、引脚功能
DAC 共有 20 条引脚,双列直插式封装。引脚图如图 3.5 所示。 DI7~DI0:转换数据输入。 /CS:片选信号(输入) ,低电平有效。 ILE:数据锁存允许信号(输入) ,高电平有效。 /WR1:第 1 写信号(输入) ,低电平有效。 上述两个信号控制输入寄存器是数据直通方式还是数据锁存方式;当 ILE=1 和/WR1=0 时,为输入寄存器直通方式;当 ILE=1 和/WR1=1 时,为输入寄 存器锁存方式。 /WR2:第 2 写信号(输入) ,低电平有效。 /XFER:数据传送控制信号(输入) ,低电平有效。 上述两个信号控制 DAC 寄存器是数据直通方式还是数据锁存方式;当 /WR2=0 和/XFER=0 时,为 DAC 寄存器直通方式;当 /WR2=1 和/XFER=0 时,为 DAC 寄存器锁存方式。 Iout1:电流输出 1。 out2:电流输出 2。 DAC 转换器的特性之一是:Iout1+Iout2=常数。 Rfb—反馈电阻端。 DAC0832 是电流输出, 为了取得电压输出, 需在电压输出端接运算放大器,

- 19 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

Rfb 即为运算放大器的反馈电阻端。运算放大器的接法如图 3 所示。 Vref:基准电压,其电压可正可负,范围-10V~+10V。 DGND:模拟地,摸拟信号和基准电源的参考地。 AGND:数字地,两种地线在基准电源处共地比较好。

图 3.5 DAC0832 引脚

第六节 模数转换器
转换器简介 一、A/D 转换器简介
A/D 转换就是将模拟信号转换成数字信号。A/D 转换器就是用来实现这一 功能的的器件。信号输入端常常是传感器或相应的电路的模拟输出,由 ADC 期 间转换成数字信号在提供给微处理器,以便用作显示等后期信号处理。

二、ADC0804
1、ADC0804 内部结构
它的主要电气特性如下: 工作电压:+5V,即 VCC=+5V。 模拟输入电压范围:0~+5V,即 0≤Vin≤+5V。 分辨率:8 位,即分辨率为 1/28=1/256,转换值介于 0~255 之间。 转换时间:100us(fCK=640KHz 时) 。

- 20 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

转换误差:±1LSB。 参考电压:2.5V,即 Vref=2.5V。

2、引脚功能
引脚图如图 3.6 所示。 /CS:芯片选择信号。 /RD:外部读取转换结果的控制输出信号。/RD 为 HI 时,DB0~DB7 处理 高阻抗;/RD 为 LO 时,数字数据才会输出。 /WR:用来启动转换的控制输入,相当于 ADC 的转换开始(/CS=0 时) ,当 /WR 由 HI 变为 LO 时,转换器被清除:当/WR 回到 HI 时,转换正式开始。 CLK IN,CLK R: 时钟输入或接振荡无件(R,C)频率约限制在 100KHZ~1460KHZ,如果使用 RC 电路则其 振荡频率为 1/(1.1RC) 。 /INTR:中断请求信号输出,低地平动作。 VIN(+) VIN(-) :差动模拟电压输入。输入单端正电压时, VIN(-)接地:而 差动输入时, 直接加入 VIN(+) VIN(-)。 AGND,DGND:模拟信号以及数字信号的接地。 VREF:辅助参考电压。 DB0~DB7:8 位的数字输出。 VCC: 电源供应以及作为电路的参考电压。

图 3.6 ADC0804 的引脚图

- 21 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

第四章 系统基本电路的设计
1.本课题的研究拟在基于 CAN 总线技术基础上搭建教学实验台系统。主 要从常用的 CAN 节点通信的基本原理、 协议与实践入手, 硬件软件知识相结合, 搭建起分布式 CAN 节点系统。 2.结合实验的具体情况,学生可分为若干实验小组,每个小组负责不同 的现场设备即节点的现场数据采集控制, 各个实验小组面对节点的不同传输方 式、不同种类、不同格式的信息,实现基于 CAN 协议标准下的通信。 3.由于 CAN 总线可以挂接 110 个节点,系统易于实验内容的扩展,对 实验内容的不断创新及提高实验效率提供了基础。学生可通过查阅资料、设计 实验方案、实验步骤、实验内容,自行选用实验仪器设备,根据实际需要独立 设计和调试较复杂的机电控制系统,充分发挥在实验中的主动性,使他们由较 大的思考空间,由验证型实验逐渐地转换为综合性、设计性实验。此外学生还 可以进行课程设计、集中实训和毕业设计等教学环节的锻炼。 4.系统设计应在保证系统可靠工作和降低成本的条件下,具有通用性、 实时性和可扩展性等特点。真正让学生从软硬件两方面了解 CAN 总线设计应 用的整个过程,从而快掌握 CAN 总线设计技术。使学生通过掌握 CAN 总线这 一先进技术的原理和基本实验基础上, 对所学的相关知识综合应用有一个清晰 的认识。 5.结合以前这方面的成果,面向教学实验需要,构建了一个基于 CAN 总 线的系统模型。分别从从站资源节点,协议的构建,模块通信,基本应用等几 个关键方面深入浅出地阐述了现场总线的机理及应用。将 CAN 总线技术应用 于教学实验系统的开发。 在本章和下一章中将详细介绍实验教学平台的具体设 计。

第一节 CAN 总线节点方案的选择
节点是网络上信息的接收和发送站, 一个 CAN 总线节点模块的基本功能有 两大部分:通信和输入输出 IO 管理。CAN 总线系统中有 2 种类型的节点,不 带微处理器的非智能节点和带微处理器的智能节点。 智能节点的每个节点模块

- 22 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

都有自己的 CPU 和 CAN 接口电路,以便可以按照 CAN 协议通信。加入代码后还 可实现更复杂的智能控制,将系统功能尽可能地分散到各个节点。因此本教学 实验平台采用智能节点的设计,结构图如图 4.1 所示。 CAN 总线通信系统主要由 CAN 节点以及将这些节点连在一起的通信媒体 组成。因此系统采用可进行简单连接的双绞线或屏蔽线等作总线,把多个节点 连接成网络,并按公开,规范的通信协议,在现场节点之间实现数据传输和信 息交换。

CAN 总线接口

CAN 总线接口

CAN 总线接口

智能 节点 其他设备

智能 节点 其他设备

智能 节点 其他设备

图 4.1 CAN 总线的控制系统结构图

第二节 CAN 接口电路设计
一、 CAN 节点模块的硬件结构
CAN 节点模块中的微处理器的输入输出 IO 管理部分是节点实现的具体 功能,如温度、压力的采集控制,鉴于这一部分内容在单片机相关的教学中已 有大量成熟的应用和实例,本系统以数模转换作为重点内容给与介绍。而 CAN 节点通信是完成和 CAN 总线通信功能的关键所在,下面的工作主要涉及这部 分问题。CAN 节点模块的硬件结构见图 4.2。

- 23 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

微处理器

CAN 控制器

CAN 收 发 器

按键、指示灯、数 码管、数模转换器 等 IO 图 4.2 CAN 节点模块的硬件功能结构图

CAN 总线

二、 电路原理图
依照模块化设计思想和系统的功能, 作者设计了一个易于实现的基于 CAN 总线技术的实验系统硬件电路。电路原理图如图 4.3 所示。

图 4.3 CAN 节点原理图

1、CAN 总线接口通信 CAN 控制器采用 MCP2515,可直接与 STC89 系列的 MCU 接口相连。CAN MCP2515 芯片具有完成 CAN 总线通信协议所要求的全部特征,与独立 CAN 总线 控制器 TJA1050 完全兼容,并有支持 CAN2.0B 协议、扩展接口缓冲器、增强错 误处理能力和增强报文滤波功能等新增功能。CAN 收发器采用 TJA1050,可以 提高对总线的驱动发送能力,对 CAN 控制器的差动发送和差动接受能力。可以 在低至 5Kbps 的传输速率下工作,满足远距离传输数据时的低速率要求。 MCP2515 的 CS 连接到单片机的 P2.1,P2.1 低电平时可以选中 MCP2515。 MCP2515 的 CS、SO、S1、SCK 与 INT 分别与单片机的 P2.0、P2.1、P2.2、P2.3 与 P2.4 相连。

- 24 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

第三节 电源的电路设计
本次设计电源电路用到 7805 芯片, 该芯片不仅能够为硬件系统提供稳定的 电源,且成本低、连接非常简单。在输入端接入 12V 直流,从输入端输入的即 为 5V 直流。为了尽可能降低电源干扰,需要集成块在稳压前加滤波电容。电 路如图 4.4 所示。

4.4 电源电路图

第四节 最小系统
单片机控制模块主要由单片机、晶振电路和复位电路组成,其图如 4.5 所 示。

- 25 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

图 4.5

最小系统

整个控制都是依靠单片机完成。从功能和价位以及本题目要求来看,本设 计选择 51 系列 STC89C52 作为本方案的控制核心。

一、 时钟电路
时钟是单片机的心脏,各部分都以时钟频率为基准,有条不紊的一拍一拍 的工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响 单片机系统的稳定性。对于 MCS-51 系列的单片机,常用的时钟电路设计方式 有内部时钟和外部时钟两种。利用 STC89C52 单片机内部一个高增益的反相放 大器,把一个晶振体和两个电容器组成自激励振荡电路,接于 XTAL1 和 XTAL2 之间。这样振荡器发出的脉冲直接送入内部时钟电路,振荡频率为 12MHz,电 容器为 30pF 电容。

二、 复位电路
单片机在启动或断电后, 程序需要从头开始执行, 机器内全部寄存器、 I/O 接口等都必须重新复位。复位方式有自动复位和手动复位两种。 在 STC89C52RC 的 ALE 及 PSEN 两引脚输出高电平,RST 引脚高电平到时, 单片机复位。RST 端的高电平直接由上电瞬间产生为上电复位,即自动复位; 若通过按动按钮产生高电平复位,则称为手动复位。该复位电路在刚上电接通 电源时,电容相当于瞬间短路,+5V 的高电平立刻加到了 RST 端,该高电平使 STC89C52 全机复位。若运行过程中,需要程序从头执行,只需按动按钮即可。 按下并联开关,则直接把+5V 高电平加到了 RST 端,从而使其复位,这称为手 动复位。显然,该电路既可上电复位又可手动复位。复位后,P0~P3 四个并行 接口全为高电平,其它寄存器全部清零,只有 SBUF 寄存器状态不确定。

第五节 模拟信号的 A/D 转换
来自于电源的模拟信号经过 A/D 转换后才能进入单片机。A/D 转换就是将 连续的模拟电压转换成相对应的数字量, 输入的电压与输出的数字量有严格的 对应关系。 A/D 转换器输出的数字量有 8 位、10 位、12 位等多种,位数的多少决定了

- 26 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

A/D 转换器的分辨率。 在本次设计中采集模拟信号是使用的转换器是 ADC0804, 它是典型的八位逐次逼近型 A/D 转换器。最多可以允许把为模拟量的输入,借 助三位的地址锁存器与译码电路, 多路模拟开关可以选择此八路模拟量中的一 个, 所有的模拟量转换共用一个 A/D 转换器。 ADC0804 与节点主控制器 STC89C52 的连接方式如图 4.6 所示。

图 4.6 ADC0804 与主控制器的连接电路

第六节 数字信号的 D/A 转换
来自于 CAN-BUS 总线上的信号经过单片机变成数字信号。 输出的数字信号 只有经过 D/A 转换才能实现模拟量的输出。 D/A 转换常用芯片有 MX7541 和 DAC0832。 本系统采用 DAC0832, DAC0832 是一种常用的 8 位数字/模拟转换芯片。DAC0832 最具有特色是输入为双缓 冲结构,数字信号在进入 D/A 转换前,需经过两个独立控制的 8 位锁存器传 送。其优点是 D/A 转换的同时,DAC 寄存器中保留现有的数据,而在输入寄 存器中可送入新的数据。 系统中多个 D/A 转换器内容可用一公共的选通信号 选通输出。本系统是基于 51 系列单片机的数控电源的设计,8 位的单片机, 而如果选用 MX7541,MX7541 是 12 位数字输入的,因此须用锁存器。而此数

- 27 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

控电源要求单步 1V 和 0.1V,DAC0832 完全可以达到,综合考虑选择常用的 DAC0832。 DAC0832 与节点主控制器 STC89C52 的连接方式如图 4.7 所示。

图 4.7 ADC0804 与主控制器的连接电路

- 28 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

系统软件设计及实验设计 第五章 系统软件设计及实验设计
第一节 软件开发工具
本系统均采用编程软件 KEIL C51 来编写程序,KEIL C51 集采集、编译、 仿真为一体,支持汇编、PLM 语言和 C 语言的程序设计,界面友好,容易使用, 是目前对单片机进行调试最好的软件之一,采用汇编语言进行编写具有指令 快、效率高、代码少等特点,但是编写比较麻烦,数学运算程序需要自己编写, 用 C 语言编程,虽然生成的代码较大,但是简单易学,不用自己考虑系统自定 义寄存器问题,系统自动生成,尤其是数字运算比较容易实现。鉴于本系统资 源充足,实时性强,采用 C 语言编写。 KEIL C51 在程序通过编译后能生成可执行 hex 文件,本课题 STC89C52 单 片机具有在线烧录的功能,采用宏晶 ISP 软件烧录,烧录时 PC 机与单片机之 间通过串口连接。

第二节 节点的程序软件
本设计中各模块均要求实时工作,对软件设计要求比较高,软件设计就成 为了本设计能否成功的重点,也是难点。本设计采用 KEIL C51 编写源程序, 整个程序采用模块化结构,各部分子模块分工明确,具有代码效率高、维护方 便。占用内存少等特点。系统软件设计思想为:系统上点后,首先对微处理器 STC89C52 进行复位,复位后,STC89C52 对自身和 CAN 模块进行初始化。之后, 对于主控节点、数模转换器和模数转换器要涉及不同的程序:主控节点主要负 责发送控制信号到 CAN 总线,数模转换器负责在 CAN 总线上接收信号。各程序 具体介绍如下所述。

一、节点的初始化
CAN 控制器初始化是 CAN 总线系统设计中重要一环, 控制器在上电或硬 CAN 件复位后必须进行初始化设置,其中主要设置以下几项内容:操作模式、验收 滤波器、总线定时、中断控制器等。CAN 初始化流程图如 5.1 所示

- 29 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

MCP2515 初始 化子程序入口

请求进入配置模式 CANCTRL=0x90 配置波特率 CNF3=0x05 CNF2=0x31 CNF1=0x01 配置中断使能寄存器 CANINTE=0x04

进入配置模式?

配置验收滤波器 RXF0SIDH=0x0 0 RXF0SIDL =0x08 配置接受引脚控制寄存器 BFPCTRL=0x0f

清除中断标识寄存器 CANINTF=0x00

配置发送引脚控制寄存器 TXRTSCTRL=0x0f

请求进入正常模式 CANCTRL=0x80

进 入 正 常 模 配置验收屏蔽器 RXM0SIDH=0x00 RXM0SIDL =0x00 RXM0EID8=0x00 RXM0EID0=0x00

结束

图 5.1 MCP2515 流程图

初始化程序如下: void mcp2515_init(void) { u08 temp[4] = { 0, 0, 0, 0 }; //初始化 MCU 的 SPI 总线// SPI_MasterInit(); // MCP2515 启动前进行软件复位

- 30 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

SPI_PORT &= ~(1<<SPI_CS); SPI_MasterTransmit( SPI_RESET ); SPI_PORT |= (1<<SPI_CS); mcp2515_bit_modify( CANCTRL, 0xE0, (1<<REQOP2) ); mcp2515_write_register( CNF1, (1<<BRP0)|(1<<BRP1)|(1<<BRP2) ); mcp2515_write_register( CNF2, (1<<BTLMODE)|(1<<PHSEG11) ); mcp2515_write_register( CNF3, (1<<PHSEG21) ); mcp2515_write_register( CNF1, (1<<BRP0)|(1<<BRP1) ); mcp2515_write_register(CNF1,(1<<SJW0)); mcp2515_write_register( CNF2,(1<<BTLMODE)|(1<<PHSEG11)|(1<<P SEG10)|(1<<PRSEG2) ); mcp2515_write_register( CNF3, (1<<PHSEG21) ); mcp2515_write_register( CANINTE, /*(1<<RX1IE)|(1<<RX0IE)*/ 0 ); mcp2515_write_register( CANINTE, (1<<RX1IE)|(1<<RX0IE) ); mcp2515_write_register( RXB0CTRL, (1<<RXM1)|(1<<RXM0) ); // 设置 RXM[1:0]=11,关闭接收缓冲器 1 屏蔽/滤波功能,接收所有报 文; mcp2515_write_register( RXB1CTRL, (1<<RXM1)|(1<<RXM0) ); //设置 6 个验收滤波寄存器为 0, mcp2515_write_register_p( RXF0SIDH, temp, 4 ); mcp2515_write_register_p( RXF1SIDH, temp, 4 ); mcp2515_write_register_p( RXF2SIDH, temp, 4 ); mcp2515_write_register_p( RXF3SIDH, temp, 4 ); mcp2515_write_register_p( RXF4SIDH, temp, 4 ); mcp2515_write_register_p( RXF5SIDH, temp, 4 ); //设置 2 个验收滤波寄存器为 0, mcp2515_write_register_p( RXM0SIDH, temp, 4 ); mcp2515_write_register_p( RXM1SIDH, temp, 4 ); // 设 置 接 收 相 关 引 脚 控 制 寄 存 器 , 配 置 它 们 禁 用 第 二 功 能 mcp2515_write_register( BFPCTRL, 0 ); //调试使用,设置 BFPCTRL 使 RX0BF,RX1BF 设置为数字输出。 mcp2515_bit_modify(BFPCTRL,(1<<B1BFE)|(1<<B0BFE)|(1<<B1BFM)|(1 <<B0BFM), (1<<B1BFE)|(1<<B0BFE) );

- 31 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

// 设 置 发 送 相 关 引 脚 控 制 寄 存 器 , 配 置 它 们 禁 用 第 二 功 能 mcp2515_write_register( TXRTSCTRL, 0 ); mcp2515_bit_modify( CANCTRL, 0xE0, 0); }

二、发送程序
此系统采用中断方式发送信息,这样能节省资源,提高通信效率。需要发 送信息时,现将信息组合成一帧报文:数据帧或远程帧。进入发送程序后,首 先关闭中断,保护现场,读中断寄存器是否为发送中断,将报文写入发送缓冲 区,设置命令寄存器允许发送,开中断。发送程序流程图,如图 5.2 所示
入 口

关中断

置发送标志

开中断 读中断寄存器 中断返回 写控制字,允许 CAN 发送

图 5.2 发送程序流程图

发送程序的片段如下: void CAN_Send_onebyte(unsigned char k) { unsigned char tempdata; tempdata=SPIByteRead(CAN_RD_STATUS); SPIByteWrite(TXB0D0,k); if(tempdata&0x04)//判断 TXREQ 标志位 {

- 32 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

delay_ms(1); SPIByteWrite(TXB0CTRL,0);//清除 TXREQ 标志位 while(SPIByteRead(CAN_RD_STATUS)&0x04);//等待 TXREQ 清零 } CS=LOW; WriteSPI(CAN_RTS_TXB0);//发送缓冲器 0 请求发送 CS=HIGH; }

三、接收程序
此系统仍采用中断方式接收信息。接受程序比较复杂,需要对错报警,接 受溢出等情况作进一步的处理。信息报文通过 CAN 总线被送入接受缓冲器中, 接受中断被置位,处理器从控制器 MCP2515 的缓存器内读取信息,再设置新的 接受标志,关中断。接受程序流程图如图 5.3 所示。
从接收缓冲器接收数据

入口 是否接收完 关中断 置新接受标志 读中断寄存器 开中断 取描述符寄存器的数据信息 中断返回

图 5.3 接受程序流程图

接收程序的片段如下: void CAN_Receive(unsigned char *CAN_RX_Buf) { unsigned char tempdata;

- 33 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

tempdata=SPIByteRead(CAN_RX_STATUS); { delay_ms(1); CS=LOW; WriteSPI(CAN_RX_BUFF);//将接收的首地址定为 RXB0D0 CAN_RX_Buf[0]=SPIByteRead(RXB0D0); CAN_RX_Buf[1]=SPIByteRead(RXB0D1); CAN_RX_Buf[2]=SPIByteRead(RXB0D2); CAN_RX_Buf[3]=SPIByteRead(RXB0D3); CAN_RX_Buf[4]=SPIByteRead(RXB0D4); CAN_RX_Buf[5]=SPIByteRead(RXB0D5); CAN_RX_Buf[6]=SPIByteRead(RXB0D6); CAN_RX_Buf[7]=SPIByteRead(RXB0D7); SPIByteWrite(CANINTF,0); CS=HIGH; } }

第三节 实验内容设计
一、系统构成
通过各节点的 CANH 和 CANL 端口并联到双绞线上, 然后在双绞线两端各接 上一个 120 左右的电阻 R 作为 CAN 总线的终端器,使得两线构成一个闭环电 路,搭建起多主式 CAN 总线系统结构。实验中 2~3 个学生可分为一组,如图 5.4 所示,实物图如图 5.5 所示。 1
节点 1 节点 2 节点 N

图 5.4 实验系统结构图

- 34 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

图 5.5 实验系统实物图

二、实验内容
点到点方式:是整个系统能够顺利实现通信任务的基础和关键,重点加以 探讨。CAN 为多主方式工作,网络上任一节点均可在任意时刻主动向另外一节 点发送报文,而不分主从。为了便于说明问题,我们选取节点 0 和节点 1 为 从节点进行数据传送实验。 1、节点 0 主动发送报文到节点 1。对于节点 1,接收的报文在验收滤波 器的作用下,只有当报文标识符和验收滤波器预定义的位值完全相等时,CAN 控制器才允许将已接收到的报文存入 RXFIFO 中。节点 1 收到报文后将该报 文返回给发送报文的节点 0。对于节点 0,把发送的数据字节区内容与接收到 的返回内容比较,如果相等即为一次成功的发送。 2、两节点间发送的报文可分为单帧,多帧。实验单帧发送报文时,可设 计发送 1 个字节的数据,实验多帧发送报文时,可连续或间隔一段时间节点 0 向节点 1 发送一组 8 个字节的数据或小于 8 个字节的数据。 3、数据帧和远程帧的处节点 0 发送报文是数据帧还是远程帧主要通过写 入发送缓冲器 TXB 帧格式中的结构信息 SFF 获取。RTR=1:远程请求发送,即

- 35 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

一个节点向另一个节点请求报文。远程帧无数据字节区。RTR=0:发送数据帧。 接收到远程帧的节点应在总线空闲时主动向申请节点发送报文。 4、基于 CAN 实验平台能够通信的基础上实验模拟量的输入输出。 5、基于此平台增加相应的外设设备还可以实现数字量输入输出、开关量 的输入输出、继电器输出、热电偶输入、热电阻输入、计数器模块等。

- 36 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计





本课题在分析国内外 CAN 总线技术的研究现状和新发展以及当前高校机 电专业实验教学改革迫切需要的基础上,提出了搭建一种基于 CAN 总线技术 的实验教学系统的设计目标。论文完成的主要工作如下: 1、对现有几大类单片机 STC51、PIC 系列和 ARM 系列集成了 CAN 总线 技术的芯片资料进行了总结比较,为今后的研究提供了实用的参考价值。 2、设计开发的 CAN 实验节点通信模块具有结构简单合理,可靠性高,易 于扩展等特点,可在此实验系统上完成 CAN 通信基本实验,了解 CAN 应用系 统基本的开发与调试步骤,掌握 CAN-bus 网络的一般通讯协议,初始化、帧发 送、帧接收,通讯速率设置,验收滤波设置等等。实现点到点或者一点到多点 的单帧与多帧,标准帧与扩展帧,数据帧与远程帧的接收发送,使实验者获得 对 CAN 总线的直观认识和了解,为今后的应用打下坚实基础。 3、通过此 CAN 总线实验平台可实现模拟量的输入输出。经此实验使实验 者更好掌握 CAN-bus 网络的基本协议、运行原理、设计步骤、高层协议等。 4、CAN 现场总线实验教学平台向我们展示了一个具体直观的现场总线系 统。从 CAN 总线的协议规范到总线应用系统,提供了全面的教学支持。目前, 已经完成了对整个实验系统的整体设计方案和电路设计图的充分论证, 并初步 组建了系统的实验电路,进行了软件前期测试。初步实验表明,本实验系统能 够充分发挥 CAN 总线技术的特点和优点,解决了单片机原理、自动化控制、 机电一体化和现场总线技术等应用性强的课程知识点多、涉及面广、内容更新 快、难度大等困难,满足了机电专业学生培养的教学需要。

- 37 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计





大学四年就快画上一个句号,毕业设计是我在学校交的最后一份答卷。在 论文完成之际,感受收获喜悦的同时,心中充满了更多的感激之情。 我首先要感谢我的导师曾黔蜀以及仇国庆老师在课题进行中给予的悉心 指导,在我对知识的理解上有偏差的情况下,指导教师给我耐心的讲解使我 正确的理解了相关知识,在原理图出现错误的情况下,指导教师在我找出错 误的情况下耐心的帮我分析,同时我也了解了错误的原因。本论文经过多番 修改终于顺利完成。 在这个过程中由始至终都离不开老师的辛勤。 借此机会, 我也感谢大学四年期间所有指导过我的老师, 感谢他们对我无私的教诲和帮 助,感谢他们的谆谆教导。 在此同时也要非常感谢一直陪伴在我身边给予我精神支持和行动支持 的同学们。正是由于你们的帮助和支持,我才能克服一个又一个的困难和疑 惑。同时在你们身上我也学到了不少受益的东西。

- 38 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

参考文献
[1] 张海波,赵伟.现场总线测控领域中的几个关键问题[J].电测与仪表, 2000. [2] 章昌南.我国工业自动化市场现状分析报告[J/OL].中国工控网,2001. [3] 阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社,1999. [4] 邬宽明.CAN 总线原理与应用系统设计[M].北京:北京航空航天出版社, 1996. [5] 饶运涛,邹继军等.现场总线 CAN 原理与应用技术[M].北京:北京航空 航天出版社,2003. [6] 夏石头.开放研究型专业实验室管理的改革与探索[J].实验室研究与探 索,2004. [7] 史九根,张陪仁,陈真勇.CAN 现场总线系统设计技术[M] .北京:国防 工业出版社,2004. [8] 孙传友,孙晓斌,汉泽西等.测控系统原理与设计[M].北京:北京航空 航天出版社,2002. [9] 汤竞南,钱昊,国海欣.PIC 单片机基础与应用[M] .北京:人民邮电出 版社,2006. [10] 张培仁.基于 C 语言编程 MCS-51 单片机原理与应用[M]. 北京:清 华大学出版社,2003. [11] 胡伟,季晓衡.单片机 C 程序设计及应用实例[M] .北京:人民邮电出版 社,2003. [12] 邹红.数字电路与逻辑设计[M]. 北京:人民邮电出版社,2008. [13] 张毅刚. MCS-51 单片机原理及应用. 哈尔滨工业大学出版社,2004. [14] 童诗白,华成英. 模拟电子技术基础[M]. 北京:高等教育出版社,2006. [15] Power Integration, Inc.National semiconductor datasheets[R].2005. [16] SCHARBARG J L,BOYERM,FRABOULC.CAN-EtIlernet architeetures for real-time application . Emerging Technologies and Factory Automation.IEEE Press,2005

- 39 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计


一、英文原文



SJA1000 Stand-alone CAN controller
1. INTRODUCTION The SJA1000 is a stand-alone CAN Controller product with advanced features for use in automotive and general industrial applications. It is intended to replace the PCA82C200 because it is hardware and software compatible. Due to an enhanced set of functions this device is well suited for many applications especially when system optimization, diagnosis and maintenance are important. This report is intended to guide the user in designing complete CAN nodes based on the SJA1000. The report provides typical application circuit diagrams and flow charts for programming. 2. OVERVIEW The stand-alone CAN controller SJA1000 ?1??has two different Modes of Operation: - BasicCAN Mode (PCA82C200 compatible) - PeliCAN Mode Upon Power-up the BasicCAN Mode is the default mode of operation. Consequently, existing hardware and software developed for the PCA82C200 can be used without any change. In addition to the functions known from the PCA82C200 [7], some extra features have been implemented in this mode which make the device more attractive. However, they do not influence the compatibility to the PCA82C200. The PeliCAN Mode is a new mode of operation which is able to handle all frame types according to CAN specification 2.0B [8]. Furthermore it provides a couple of enhanced features which makes the SJA1000 suitable for a wide range of applications.

- 40 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

2.1 CAN Node Architecture Generally each CAN module can be divided into different functional blocks. The connection to the CAN bus lines is usually built with a CAN Transceiver optimized for the applications [3], [4], [5]. The transceiver controls the logic level signals from the CAN controller into the physical levels on the bus and vice versa. The next upper level is a CAN Controller which implements the complete CAN protocol defined in the CAN Specification [8]. Often it also covers message buffering and acceptance filtering. All these CAN functions are controlled by a Module Controller which performs the functionality of the application. For example, it controls actuators, reads sensors and handles the man-machine interface (MMI). As shown in Figure 1 the SJA1000 stand-alone CAN controller is always located between a microcontroller and the transceiver, which is an integrated circuit in most cases. 2.2 Block Diagram The following figure shows the block diagram of the SJA1000. The CAN Core Block controls the transmission and reception of CAN frames according to the CAN specification. The Interface Management Logic block performs a link to the external host controller which can be a microcontroller or any other device. Every register access via the SJA1000 multiplexed address/data bus and controlling of the read/write strobes is handled in this unit. Additionally to the BasicCAN functions known from the PCA82C200, new PeliCAN features have been added. As a consequence of this, additional registers and logic have been implemented mainly in this block. The Transmit Buffer of the SJA1000 is able to store one complete message (Extended or Standard). Whenever a transmission is initiated by the host controller the Interface Management Logic forces the CAN Core Block to read the CAN message from the Transmit Buffer. When receiving a message, the CAN Core Block converts the serial bit stream into parallel data for the Acceptance Filter. With this programmable filter the SJA1000 decides which messages actually are received by the host controller. All received messages accepted by the acceptance filter are stored within a Receive FIFO. Depending on the mode of operation and the data length up to 32 messages

- 41 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

can be stored. This enables the user to be more flexible when specifying interrupt services and interrupt priorities for the system because the probability of data overrun conditions is reduced extremely. 3. SYSTEM For connection to the host controller, the SJA1000 provides a multiplexed address/data bus and additional read/write control signals. The SJA1000 could be seen as a peripheral memory mapped I/O device for the host controller. 3.1 SJA1000 Application Configuration Registers and pins of the SJA1000 allow to use all kinds of integrated or discrete CAN transceivers. Due to the flexible microcontroller interface applications with different microcontrollers are possible. In Figure 3 a typical SJA1000 application diagram including 80C51 microcontroller and PCA82C251 transceiver is shown. The CAN controller functions as a clock source and the reset signal is generated by an external reset circuitry. In this example the chip select of the SJA1000 is controlled by the microcontroller port function P2.7. Instead of this, the chip select input could be tied to VSS. Control via an address decoder is possible, e.g., when the address/data bus is used for other peripherals. 3.2 Power Supply The SJA1000 has three pairs of voltage supply pins which are used for different digital and analog internal blocks of the CAN controller. VDD1 / VSS1: internal logic (digital) VDD2 / VSS2: input comparator (analog) VDD3 / VSS3: output driver (analog) The supply has been separated for better EME behaviour. For instance the VDD2 can be de-coupled via an RC 3.3 Reset For a proper reset of the SJA1000 a stable oscillator clock has to be provided at XTAL1 of the CAN controller, see also chapter 3.4. An external reset on pin 17 is synchronized and internally lengthened to 15 . This guarantees a correct reset of all SJA1000 registers (see [1]). Note that an oscillator start-up time has to be taken into account upon power-up.

- 42 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

3.4 Oscillator and Clocking Strategy The SJA1000 can operate with the on-chip oscillator or with external clock sources. Additionally the CLK OUT pin can be enabled to output the clock frequency for the host controller. Figure 4 shows four different clocking principles for applications with the SJA1000. If the CLK OUT signal is not needed, it can be switched off with the Clock Divider register (Clock Off = 1). This will improve the EME performance of the CAN node. The frequency of the CLK OUT signal can be changed with the Clock Divider Register: f CLK OUT = f XTAL / Clock Divider factor (1,2,4,6,8,10,12,14). Upon power up or hardware reset the default value for the Clock Divider factor depends on the selected interface mode (pin 11). If a 16 MHz crystal is used in Intel mode, the frequency at CLK OUT is 8 MHz. In Motorola mode a Clock Divider factor of 12 is used upon reset which results in 1,33 MHz in this case. 3.4.1 Sleep and Wake-up Upon setting the Go To Sleep bit in the Command Register (BasicCAN mode) or the Sleep Mode bit in the Mode Register (PeliCAN mode) the SJA1000 will enter Sleep Mode if there is no bus activity and no interrupt is pending. The oscillator keeps on running until 15 CAN bit times have been passed. This allows a microcontroller clocked with the CLK OUT frequency to enter its own low power consumption mode. If one of three possible wake-up conditions ?1??occurs the oscillator is started again and a Wake-up interrupt is generated. As soon as the oscillator is stable the CLK OUT frequency is active. 3.5 CPU Interface The SJA1000 supports the direct connection to two famous microcontroller families: 80C51 and 68xx. With the MODE pin of the SJA1000 the interface mode is selected. Intel Mode: MODE = high Motorola Mode: MODE = low The connection for the address/data bus and the read/write control signals in both Intel and Motorola mode is shown in Figure 5. For Philips 8-bit microcontrollers based on the 80C51 family and the 16-bit microcontrollers with XA architecture the

- 43 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

Intel Mode is used. For other controllers additional glue logic is necessary for adaptation of the address/data bus and the control signals. However, it has to be made sure that no write pulses are generated during power-up. Another possibility is to disable the CAN controller with a high-level on the chip select input in this time. 3.6 Physical Layer Interface For compatibility purposes with the PCA82C200, the SJA1000 includes an analog receive input comparator circuit. This integrated comparator can be used if the transceiver function is realized with discrete components. If an external integrated transceiver circuit is used and the comparator bypass function is not enabled in the Clock Divider Register, the RX1 input has to be connected to a reference voltage of 2.5V (reference voltage output of existing transceiver circuits). Figure 6 shows the equivalent circuits for both configurations: CBP = active and CBP = inactive. Additionally the path for the wake-up signal is drawn. For all new applications where an integrated transceiver circuit is used, it is recommended to activate the comparator bypass function of the SJA1000 (Figure 7). If this function is enabled, a schmitt-trigger input is used and the internal propagation delay tD2 is much shorter as the delay tD1. of the receive comparator. This has a positive impact on the maximum bus length [6]. Additionally, it will reduce the supply current in sleep mode significantly.

- 44 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

英文翻译 二 、 英文 翻译 SJA1000 独立的 CAN 控制器应用指南
1 介绍
SJA1000是一个独立的CAN控制器, 它在汽车和普通的工业应用上有先进的 特征。由于它和PCA82C200 在硬件和软件都兼容,因此它将会替代PCA82C200。 SJA1000有一系列先进的功能适合于多种应用,特别在系统优化、诊断和维护 方面非常重要。 本文是要指导用户设计基于SJA1000 的完整的CAN节点。同时本文还提供 典型的应用电路图和编程的流程图。

2 概述
SJA1000 独立的CAN控制器有2个不同的操作模式: BasicCAN模式(和PCA82C200)兼容 PeliCAN模式 BasicCAN模式是上电后默认的操作模式。因此,用PCA82C200开发的已有 硬件和软件可以直接在SJA1000上使用,而不用作任何修改。 PeliCAN模式是新的操作模式,它能够处理所有CAN2.0B 规范的帧类型。 而且它还提供一些增强功能使SJA1000能应用于更宽的领域。

2.1 CAN 节点结构
通常,每个CAN 模块能够被分成不同的功能块。SJA1000使用[3] [4] [5] 最优化的CAN收发器连接到CAN 。 收发器控制从CAN控制器到总线物理层或相反 的逻辑电平信号。 上面一层是一个CAN 控制器,它执行在CAN规范[8]里规定的完整的CAN协 议。它通常用于报文缓冲和验收滤波,而所有这些CAN功能,都由一个模块控 制器控制它负责执行应用的功能。例如,控制执行器、读传感器和处理人机接 口(MMI)。 如图1所示, SJA1000独立的CAN控制器通常位于微型控制器和收发器之间, 大多数情况下这个控制器是一个集成电路。

2.2 2.2 结构图
根据CAN规范,CAN核心模块控制CAN帧的发送和接收。 接口管理逻辑负责连接外部主控制器, 该控制器可以是微型控制器或任何 其他器件。经过SJA1000复用的地址/数据总线访问寄存器和控制读/写选通信

- 45 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

号都在这里处理。另外,除了PCA82C200已有的BasicCAN功能,还加入了一个 新的PeliCAN 功能。因此,附加的寄存器和逻辑电路主要在这块里生效。 SJA1000的发送缓冲器能够存储一个完整的报文(扩展的或标准的)。当 主控制器初始化发送, 接口管理逻辑会使CAN 核心模块从发送缓冲器读CAN 报 文。 当收到一个报文时,CAN核心模块将串行位流转换成用于验收滤波器的并 行数据。通过这个可编程的滤波器SJA1000 能确定主控制器要接收哪些报文。 所有收到的报文由验收滤波器验收并存储在接收FIFO。 储存报文的多少由 工作模式决定,而最多能存储32个报文。因为数据超载可能性被大大降低,这 使用户能更灵活地指定中断服务和中断优先级。

3 系统
为了连接到主控制器, SJA1000提供一个复用的地址/数据总线和附加的读 /写控制信号。SJA1000可以作为主控制器外围存储器映射的I/O器件。

3.1 SJA1000 的应用
SJA1000 的寄存器和管脚配置使它可以使用各种各样集成或分立的CAN收 发器。由于有不同的微控制器接口,应用可以使用不同的微控制器。 CAN 控制器功能像是一个时钟源,复位信号由外部复位电路产生。在这个 例子里,SJA1000 的片选由微控制器的P2.7口控制。否则,这个片选输入必须 接到VSS。它也可以通过地址译码器控制,例如,当地址/数据总线用于其他外 围器件的时侯。

3.2 电源
SJA1000有三对电源引脚,用于CAN 控制器内部不同的数字和模拟模块。 VDD1/VSS1:内部逻辑 (数字) VDD2/VSS2:输入比较器 (模拟) VDD3/VSS3: 输出驱动器 (模拟) 为了有更好的EME性能,电源应该分隔开来。例如为了抑制比较器的噪声, VDD2 可以用一个RC滤波器来退耦。

3.3 复位
为了使SJA1000正确复位,CAN控制器的XTAL1管脚必须连接一个稳定的振 荡器时钟(见3.4)节。引脚17的外部复位信号要同步并被内部延长到15个 tXTAL。这保证了SJA1000 所有寄存器能够正确复位(见[1] )。要注意的是 上电后的振荡器的起振时间必须要考虑。

3.4 振荡器和时钟策略

- 46 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

SJA1000能用片内振荡器或片外时钟源工作。另外CLKOUT管脚可被使能, 向主控制器输出时钟频率。图4显示了SJA1000应用的四个不同的定时原理。如 果不需要CLKOUT信号,可以通过置位时钟分频寄存器(Clock Off=1)关断。 这将改善CAN节点的EME性能。CLKOUT信号的频率可以通过时钟分频寄存器改 变: fCLKOUT = fXTAL / 时钟分频因子(1,2,4,6,8 ,10 ,12 ,14)。 上电或硬件复位后,时钟分频因子的默认值由所选的接口模式(引脚11) 决定。 如果使用16MHz的晶振, Intel 模式下CLKOUT 的频率是8 MHz, Motorola 模式中复位后的时钟分频因子是12,这种情况CLKOUT会产生1.33MHz的频率。 3.4.1 睡眠和唤醒 置位命令寄存器的进入睡眠位(BasicCAN )模式或模式寄存器(PeliCAN 模式)的睡眠模式位后,如果没有总线活动和中断等待,SJA1000就会进入睡 眠模式。振荡器在15个CAN位时间内保持运行状态。此时,微型控制器用CLKOUT 频率来计时,进入自己的低功耗模式。如果出现三个唤醒条件之中的一个[1], 振荡器会再次启动并产生一个唤醒中断。振荡器稳定后,CLKOUT频率被激活。

CPU接口 3.5 CPU接口
SJA1000支持直接连接到两个著名的微型控制器系列:80C51和68xx。通过 SJA1000的MODE引脚可选择接口模式: Intel模式: MODE 高 Motorola模式: MODE 低 地址/数据总线和读/写控制信号在Intel模式和Motorola模式的连接如图 5所示。 Philips基于80C51系列的8位微控制器和XA结构的16位微型控制器都使 用Intel 模式。 为了和其他控制器的地址数据总线和控制信号匹配,必须要附加逻辑电 路。但是必须确保在上电期间不产生写脉冲。另一个方法在这个时候使片选输 入是高电平,禁能CAN 控制器。 3.6 物理层接口 为了和PCA82C200兼容,SJA1000包括一个模拟接收输入比较器电路。 如 果收发器的功能由分立元件实现,就要用到这个集成的比较器。 如果使用外部集成收发器电路, 而且没有在时钟分频寄存器里使能比较器 旁路功能,RX1输出要被连接到2.5V 的参考电压(现有的收发器电路参考电压 输出) 图6显示了两种设置的相应电路: 。 CBP=激活和CBP=非激活另外唤醒信号 的通道被下拉对于使用集成的收发器电路的所有新应用我们建议激活(使用)

- 47 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

SJA1000的比较器旁路功能(图7) 。如果这个功能被使能,施密特触发器的输 入有效,内部的传播延迟tD2比接收比较器的延迟tD1要小得多。它对最大的总 线长度[6]有正面的影响。另外,休眠模式的电流将显著降低。

- 48 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

三、本设计原理图

- 49 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

四、源程序: 源程序
#include "reg51.h" #include "2515.h" #include "SPI.h" #include "Function.h" #include "CAN.h" #include "CAN0.h" #define TEST PORTA_BIT5 #ifndef __SPI_h__ sbit P10=P1^0; sbit P11=P1^1; sbit P12=P1^2; sbit P13=P1^3; sbit P14=P1^4; sbit P15=P1^5; sbit P16=P1^6; sbit P17=P1^7; sbit P37=P3^7; sbit P34=P3^4; sbit key=P2^5; sbit P3_5=P3^5; sbit P2_6=P2^6; unsigned char msg; unsigned char kflag = 0; unsigned char gRXFlag = 0; void ex1_int(void) interrupt 2 using 1 { unsigned char tt,tt1,length,i; gRXFlag = 1; msg++; if(msg==2)

- 50 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

{ msg=0; P34=0; P10=!P10; #define __SPI_h__ #include <string.h> #include <intrins.h> #include <stdio.h> #include "Function.h" sbit SCK=P2^3; sbit SI=P2^2; sbit SO=P2^1; sbit CS=P2^0; #define SCK PORTA_BIT3 #define SI PORTA_BIT2 #define SO PORTA_BIT1 #define CS PORTA_BIT0 #define HIGH 1 #define LOW 0 void WriteSPI(unsigned char DataOut) { unsigned char n; SCK = 0; for(n=0; n<8; n++) { SCK = 0; if(DataOut & 0x80) SI = 1; else SI = 0; SCK = 1; DataOut<<=1; mSCK = 0;

- 51 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

} } unsigned char ReadSPI( void ) { unsigned char n, DataIn = 0; SCK = 0; for(n=0; n<7; n++) { SCK = 1; DataIn = DataIn + SO; DataIn = (DataIn << 1); SCK = 0; } SCK = 1; DataIn = DataIn + SO; SCK = 0; return DataIn; } //功能说明:CAN 接受程序 void CAN_Receive(unsigned char *CAN_RX_Buf) { unsigned char tempdata; tempdata=SPIByteRead(CAN_RX_STATUS); { delay_ms(1); CS=LOW; WriteSPI(CAN_RX_BUFF); CAN_RX_Buf[0]=SPIByteRead(RXB0D0); CAN_RX_Buf[1]=SPIByteRead(RXB0D1); CAN_RX_Buf[2]=SPIByteRead(RXB0D2); CAN_RX_Buf[3]=SPIByteRead(RXB0D3); CAN_RX_Buf[4]=SPIByteRead(RXB0D4); CAN_RX_Buf[5]=SPIByteRead(RXB0D5);

- 52 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

CAN_RX_Buf[6]=SPIByteRead(RXB0D6); CAN_RX_Buf[7]=SPIByteRead(RXB0D7); SPIByteWrite(CANINTF,0); CS=HIGH; } } //功能函数:CAN 发送发送程序 void CAN_Send_onebyte(unsigned char k) { unsigned char tempdata; tempdata=SPIByteRead(CAN_RD_STATUS); SPIByteWrite(TXB0D0,k); if(tempdata&0x04)//判断 TXREQ 标志位 { delay_ms(1); SPIByteWrite(TXB0CTRL,0);//清除 TXREQ 标志位 while(SPIByteRead(CAN_RD_STATUS)&0x04);//等待 TXREQ 清零 } CS=LOW; WriteSPI(CAN_RTS_TXB0);//发送缓冲器 0 请求发送 CS=HIGH; } //向 2515 指定地址 addr 写一个字节数据 value void SPIByteWrite(unsigned char addr,unsigned char value) { CS=LOW; WriteSPI(CAN_WRITE); WriteSPI(addr); WriteSPI(value); CS=HIGH; }

- 53 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

// 从 2515 指定地址 addr 读取一个字节数据 value unsigned char SPIByteRead(unsigned char addr) { unsigned char tempdata; CS=LOW; WriteSPI(CAN_READ); WriteSPI(addr); tempdata=ReadSPI(); CS=HIGH; return tempdata; } //SPI 复位 void SPIReset(void) { CS=LOW; WriteSPI(CAN_RESET); CS=HIGH; } void BitModiMcp2515(char addr,char mask,char udata) { unsigned char i; CS=LOW; for(i = 10;i > 0;i--) ; WriteSPI(CAN_BIT_MODIFY); WriteSPI(addr); WriteSPI(mask); WriteSPI(udata); CS=HIGH; return; } #endif P11=!P11; //短暂延时 //位修改送命令

- 54 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

P12=!P12; P13=!P13; P14=!P14; P15=!P15; P16=!P16; P17=!P17; } gRXFlag = 1; } unsigned char code table[]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0 xa1,0x86,0x8e}; void display(unsigned char num) { P3_5=0; P2_6=0; P1=table[num]; } void Init_Cpu(void) { PX1=1; EX1=1; IT1=0; EA=1; } void main() { unsigned char num=0; unsigned char b[8]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}; Init2515(); Init_Cpu(); P34=0; display(10); //显示该板号 A

- 55 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

while(1) { if(key==0) { delay10ms(); wela=1; P0=0; adwr=0; _nop_(); adwr=1; P0=0xff; delay(10); wela=0; for(a=20;a>0;a--) { display(A1,A2,A3); } wela=1; P1=0xff; P0=0; adrd=0; adval=P1; adrd=1; P0=0xff; adwr=0; P1=adval; A1=adval/100; A2t=adval%100; A2=A2t/10; A3=A2t%10; while(key==0); num=num+1;if(num==16) num=0; CAN_Send_onebyte(num);//发送按键状态 CAN_Receive(num);

- 56 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

display(num); if(num==16) num=0; delay10ms(); } } } #define __2515_h__ 0x0E 0x0F 0x0C 0x1C 0x1D 0x28 0x29 0x2A 0x2B 0x2C 0x2D 0x0D 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x60 0x61 0x62 /* Configuration Registers */ #define CANSTAT #define CANCTRL #define BFPCTRL #define TEC #define REC #define CNF3 #define CNF2 #define CNF1 #define CANINTE #define CANINTF #define EFLG #define TXRTSCTRL /* Receive Masks */ #define RXM0SIDH #define RXM0SIDL #define RXM0EID8 #define RXM0EID0 #define RXM1SIDH #define RXM1SIDL #define RXM1EID8 #define RXM1EID0 /* Rx Buffer 0 */ #define RXB0CTRL #define RXB0SIDH #define RXB0SIDL

- 57 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

#define RXB0EID8 #define RXB0EID0 #define RXB0DLC #define RXB0D0 #define RXB0D1 #define RXB0D2 #define RXB0D3 #define RXB0D4 #define RXB0D5 #define RXB0D6 #define RXB0D7 /* Rx Buffer 1 */ #define RXB1CTRL #define RXB1SIDH #define RXB1SIDL #define RXB1EID8 #define RXB1EID0 #define RXB1DLC #define RXB1D0 #define RXB1D1 #define RXB1D2 #define RXB1D3 #define RXB1D4 #define RXB1D5 #define RXB1D6 #define RXB1D7 /* TXBnCTRL */ #define TXREQ #define TXP /* RXBnCTRL */ #define RXM #define BUKT /* CANCTRL */

0x63 0x64 0x65 0x66 0x67 0x68 0x69 0x6A 0x6B 0x6C 0x6D 0x70 0x71 0x72 0x73 0x74 0x75 0x76 0x77 0x78 0x79 0x7A 0x7B 0x7C 0x7D 0x08 0x03 0x60 0x04

- 58 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

#define REQOP #define ABAT #define OSM #define CLKEN #define CLKPRE /* CANSTAT */ #define REQOP #define ICOD /* CANINTE */ #define RX0IE #define RX1IE #define TX0IE #define TX1IE #define TX2IE #define ERRIE #define WAKIE #define MERRE /* CNF1 Masks */ #define SJW #define BRP /* CNF2 Masks */ #define BTLMODE #define SAM #define PHSEG1 #define PRSEG /* CNF3 Masks */ #define WAKFIL #define PHSEG2 /* TXRTSCTRL Masks */ #define TXB2RTS #define TXB1RTS #define TXB0RTS /* CANSTAT */

0xE0 0x10 0x08 0x04 0x03 0xE0 0x0E 0x01 0x02 0x04 0x80 0x10 0x20 0x40 0x80 0xC0 0x3F 0x80 0x40 0x38 0x07 0x40 0x07 0x04 0x02 0x01

- 59 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

#define OPMODE_CONFIG #define OPMODE_LISTEN #define OPMODE_SLEEP #define OPMODE_NORMAL #define CAN_RD_STATUS #define CAN_BIT_MODIFY #define CAN_RX_STATUS #define CAN_RD_RX_BUFF #define CAN_LOAD_TX #define DUMMY_BYTE #define TXB0 #define TXB1 #define TXB2 #define RXB0 #define RXB1 #define EXIDE_SET #define EXIDE_RESET #define CS #endif #define CAN_10Kbps 0x31 #define CAN_25Kbps 0x13 #define CAN_50Kbps 0x09 #define CAN_100Kbps 0x04 #define CAN_125Kbps 0x03 #define CAN_250Kbps 0x01 #define CAN_500Kbps 0x00 void SPIReset(void);

0x80 0x60 0x20 0x00 0xA0 0x05 0xB0 0x90 0X40 0x00 0x31 0x41 0x51 0x61 0x71 0x08 0x00

#define OPMODE_LOOPBACK 0x40

PORTAbits.RA2

void SPIByteWrite(unsigned char ,unsigned char ); unsigned char SPIByteRead(unsigned char ); unsigned char dummy; void Init2515(void)

- 60 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

{ SPIReset(); delay_ms(1); SPIByteWrite(CANCTRL,0x80); SPIByteWrite(RXM0SIDH, 0x00); SPIByteWrite(RXM0SIDL,0x00); SPIByteWrite(RXF0SIDH,0x00); SPIByteWrite(RXF0SIDL,0x00); SPIByteWrite(CNF1,CAN_125Kbps); //set CNF2,SAM=0,在采样点对总线进行一次采样,PHSEG1=(2+1) TQ=3TQ,PRSEG=(0+1)TQ=1TQ SPIByteWrite(CNF2,0x80|PHSEG1_3TQ|PRSEG_1TQ); //set CNF3,PHSEG2=(2+1)TQ=3TQ,同时当 CANCTRL.CLKEN=1 时设定 CLKOUT 引脚为时间输出使能位 SPIByteWrite(CNF3,PHSEG2_3TQ); //set TXB0,设置发送缓冲器 0 的标识符和发送的数据,以及发送的数 据长度 SPIByteWrite(TXB0SIDH,0xFF);//设置发送缓冲器 0 的标准标识符,待 修改*** SPIByteWrite(TXB0SIDL,0xE0);//用到标准标识符 SPIByteWrite(TXB0DLC,DLC_1);//设置发送数据的长度为 8 个字节 //SPIByteWrite(TXB0D0,0x1E);//有待修改及确定是否使用 //SPIByteWrite(TXB0D1,0x10);//有待修改及确定是否使用 /*set TXB1 SPIByteWrite(TXB1SIDH,0x50); SPIByteWrite(TXB1SIDL,0x00); SPIByteWrite(RXB0SIDH,0x00); //Set TXB0 SIDH //Set TXB0 SIDL

SPIByteWrite(TXB1DLC,0x40 | DLC_8);

- 61 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

SPIByteWrite(RXB0SIDL,0x60); SPIByteWrite(RXB0CTRL,0x60); SPIByteWrite(RXB0DLC,DLC_8); SPIByteWrite(RXF0SIDH,0xFF); SPIByteWrite(RXF0SIDL,0xE0); SPIByteWrite(RXM0SIDH,0xFF); SPIByteWrite(RXM0SIDL,0xE0); //设置接收缓冲器 0 中断 SPIByteWrite(CANINTF,0x00);//清空中断标志位 SPIByteWrite(CANINTE,0x01);//接收缓冲器 0 满中断使能位 SPIByteWrite(CANCTRL,REQOP_NORMAL | CLKOUT_ENABLED);//设置正常 模式 dummy=SPIByteRead(CANSTAT); if (OPMODE_NORMAL != (dummy && 0xE0)) SPIByteWrite(CANCTRL,REQOP_NORMAL | CLKOUT_ENABLED); SPIByteWrite(CANCTRL,0x00); } //AD 转换程序 sbit adrd=P3^7; sbit adwr=P3^6; sbit diola=P2^5; sbit dula=P2^6; sbit wela=P2^7; unsigned char j,k,adval; void delay(unsigned char i) { for(j=i;j>0;j--) for(k=125;k>0;k--); //延时程序 //IO 口定义

- 62 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

} ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ,0x77,0x7c,0x39,0x5e,0x79,0x71}; void display(uchar bai_c,uchar sh_c,uchar g_c) { P0=table[bai_c]; dula=1; dula=0; P0=0xfe; wela=1; wela=0; delay(5); dula=0; P0=table[sh_c]; dula=1; dula=0; wela=0; P0=0xfd; wela=1; wela=0; delay(5); P0=table[g_c]; dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(5); } //DA 转换程序 void { WR=1; seDAC(uchar DACdat) //显示个位 //显示十位 //显示百位 //显示程序

- 63 -

重庆邮电大学本科毕业设计(论文) 重庆邮电大学本科毕业设计(论文) 毕业设计

_Nop(); _Nop(); DAT=DAdat; WR=0; _Nop(); _Nop(); WR=1; }

- 64 -


相关文章:
基于CAN总线数据采集系统的设计与实现
XXX 大学 XXX 学院本科毕业设计 基于 CAN 总线数据采集系统的设计与实现 ——CAN ——CAN 总线通信实验 学生: 指导教师: 内容提要 :以 CAN (Controller Area ...
基于CAN总线的直流(DC)电机调速系统设计
iCAN 教学实验开发平台涉及: CAN-bus 网络通信、iCAN 协议、基本的输入、输出...的数字监测控制模块的主从式现场总线网络上,将现代化的微机测控技术和传统的电机...
基于CAN总线的温度控制系统设计开题报告
基于CAN总线的温度控制系统设计开题报告_电子/电路_工程...本课题研究的目的和意义 现场总线是应用在生产最底层...利用实验室提供的现有仪器和设备来搭建, 从可操作...
基于CAN总线的温度采集系统的设计
本设计主要研究基于 CAN 总线的温度采集系统在工业领域中各种控制场合中的 应用。采用单片机外接传感器的结构框架,保证了系统现场温度信号采集的实时性和准确性,...
现场总线实验报告
基于 CAN-bus 总线的分布式控制系统的工作原理; 掌握通过组态软件存取并控制 CAN...实现在上位机采集CAN总线上节点的信号和控制现场的执行机构; 三、实验方法与步骤...
北航研究生CAN总线实验报告
实验内容(1) 将 USB-CAN 模块连接到计算机的 USB 口,启动试验程序,通过实验平台 软件,完成帧信息传送,帧信息传送模拟;帧传送信息应用试验-基于 CAN 总线聊天程序...
基于CAN总线的海洋浮标数据采集系统设计与实现
裴亮,付晓 (山东省科学院海洋仪器仪表研究所, 山东 青岛 266001) 摘要: 摘要: 根据海洋浮标的特点,运用现场总线技术,设计了基于 CAN 总线的浮标数据采集 系统。...
基于CAN bus现场总线的应用与介绍
基于CAN bus现场总线的应用与介绍_信息与通信_工程...操作系统下使用的测试软件,方便用户开发和调试 CAN ...CAN-bus现场总线实验室推... 13页 2下载券 ...
基于CAN总线的温度控制系统设计文献综述
在工业生产和实验 研究中,像电力、化工、石油、冶金、航空航天、机械制造、粮食...中可靠的工作"作为一种现场总线,基于 CAN总线的系统造价低廉,网络搭建极为方便,...
现场总线作业 CAN论文
现场总线作业 CAN论文_信息与通信_工程科技_专业资料。现场总线作业 CAN论文基于CAN 总线的变电站监控系统的设计摘要现场总线是自动化领域的计算机网络,是当今自动化领...
更多相关标签:
can现场总线 | 现场总线实验报告 | can总线实验报告 | can总线通信实验 | can总线实验报告stm32 | 北航can总线实验报告 | 现场总线 | 现场总线技术 |