CAN总线数据采集节点设计_第1页
CAN总线数据采集节点设计_第2页
CAN总线数据采集节点设计_第3页
CAN总线数据采集节点设计_第4页
CAN总线数据采集节点设计_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

本科毕业论文(设计)本科毕业论文(设计) 论文(设计)题目:论文(设计)题目:CAN 总线数据采集节点设计总线数据采集节点设计 学学 院:院: 电气工程学院电气工程学院 专专 业:业: 自动化自动化 班班 级:级: 自动自动 131131 学学 号:号: 13080403041308040304 学生姓名:学生姓名: 杨明虎杨明虎 指导教师:指导教师: 罗雪梅罗雪梅 2017 年 6 月 5 日 贵州大学本科毕业论文(设计)贵州大学本科毕业论文(设计) 诚信责任书诚信责任书 本人郑重声明:本人所呈交的毕业论文(设计) ,是在导师的指 导下独立进行研究所完成。毕业论文(设计)中凡引用他人已经发表或 未发表的成果、数据、观点等,均已明确注明出处。 特此声明。 论文(设计)作者签名: 日 期: 贵州大学毕业论文(设计) 第 I 页 目 录 CAN 总线数据采集节点设计 . III 摘要 III Abstract . IV 第一章 绪论 . 1 1.1 研究背景及意义 1 1.2 国内外发展状况 2 1.3 设计内容与安排 2 第二章 CAN 总线技术 . 4 2.1 CAN 总线结构 4 2.2 CAN 总线的特点 4 2.3 CAN 总线通信模型 4 2.4 CAN 总线帧结构 5 2.5.1 数据帧 5 2.5.2 远程帧 8 2.5.3 错误帧 8 2.5.4 超载帧 9 2.5 本章小结 9 第三章 节点硬件设计 . 10 3.1 节点设计整体结构 10 3.2 节点硬件结构 10 3.3 STC89C52 芯片介绍 11 3.4 CAN 控制器 SJA1000 介绍 . 11 3.5 复位电路 12 3.6 时钟电路 12 3.7 电源电路 13 3.8 CAN 节点通信电路 13 3.9 STC89C52 外围电路 14 贵州大学毕业论文(设计) 第 II 页 3.10 本章小结 15 第四章 节点软件设计 . 16 4.1 单片机软件设计的特点 16 4.2 软件设计整体结构 16 4.3 CAN 总线 SJA1000 初始化 . 17 4.4 BASECAN 模式程序设计 . 18 4.4.1 显示节点程序设计 18 4.4.2 节点一程序设计 20 4.4.3 节点二程序设计 22 4.5 PELICAN 模式程序设计 . 22 4.6 出现的问题与解决办法 24 4.7 本章小结 25 第五章 总结 . 26 参考文献 27 致谢 28 附录 1 . 29 附录 2 . 32 贵州大学毕业论文(设计) 第 III 页 CAN 总线数据采集节点设计 摘要 社会生产力的发展少不了自动化技术的推动,作为自动化数字通信网络底层的现场 总线技术, 实现了工业自动化现场设备之间的紧密联系。 CAN 总线作为一种现场总线, 提出的初衷便是使用在需要进行大量信息采集和通信的汽车总线上,因为 CAN 总线具 有杰出的性能,价格便宜、结构简单、抗扰性能好,大大的提高了总线的稳定性、可靠 性和安全性,减少了线缆的数量,因此其影响的领域越来越广1。 本设计是基于 CAN 总线的数据采集节点设计, 总线上的每个节点都使用 STC89C52 单片机作为微处理器, SJA1000 作为独立 CAN 控制器, PCA82C250 作为 CAN 驱动器。 在文中,详细介绍了 STC89C52、SJA1000、CAN 总线技术,并从硬件设计和软件设计 两方面进行了分析。硬件上设计了三个节点。软件的设计又分为 BASECAN 模式和 PELICAN 模式。 当工作在 BASECAN 模式时, 其中两个分别采集温度和红外遥控信号, 一个作为上位机节点,来显示上几个节点发来的数据,当工作于 PELICAN 模式时,设 计了每个节点采集按键信号的自收发程序。 关键词:自动化,现场总线,CAN 总线,数据采集 贵州大学毕业论文(设计) 第 IV 页 Design of Data Acquisition Node Based on CAN Bus Abstract The development of social productive forces, as well as the promotion of automation technology, as the field of automated digital communications network bus technology to achieve the industrial automation between the field equipment closely. CAN bus as a kind of field bus, the original intention is to use in the need for a lot of information collection and communication on the bus, because the CAN bus has good performance, low cost, simple structure, anti-interference ability, greatly improved Bus stability, reliability and security, reducing the number of cables, so in all areas have been very good use and promotion. The core of the design is based on the CAN bus data acquisition node design, CAN and then write on each node using STC89C51 microcontroller as a microcontroller, SJA1000 as an independent CAN controller, PCA82C250 as a CAN driver. Data is collected on the node with the sensor and transmitted to the other nodes via the CAN bus. Details of the STC89C52 microcontroller, SJA1000 chip, CAN bus technology, and from the hardware design and software design of two aspects of the analysis. Hardware design have three nodes, the software design is divided into BASECAN mode and PELICAN mode. When working in BASECAN mode, two of them collect temperature and infrared remote control signals, one as the host computer node, to display the data sent on several nodes, when working in the PELICAN mode, When working in PELICAN mode, each node can collect the key signal and realize the self-collection of the CAN bus. Key words: automatic,fieldbus,CAN bus,data acquisition 贵州大学毕业论文(设计) 第 1 页 第一章 绪论 1.1 研究背景及意义 随着计算机、微处理器等各种超大规模集成电路技术以及各种软硬件技术的飞速发 展,计算机已进入应用的时代,工业控制系统也因此取得了巨大进步。现场总线出现的 初衷就是代替传统的点对点连接方式。实现了工业控制现场的数字化通信网络,提高了 分布式控制系统数据通信的稳定性,实时性。现场总线不仅是一个物理层的网络,而且 更是一种全分布、开放式控制系统,融入了计算机、智能传感、控制、数字通讯等技术 2。现场总线控制系统将各个生产底层的智能设备及仪表联系起来,减少了点对点接线 的复杂性,将危险分散,控制集中,提高了可靠性、稳定性和安全性3。 传统工业控制系统通常是 DCS。其主要特点是,现场设备与处理器间的通信线路采 用一对一的 I/O 连接,大多采用 RS-485、20mA 电流环等信号通信。这种技术的特点将 导致如下问题: 1) 信息整合不是很大。 2) 它不能满足大量的 I/O 连接。当今的控制系统的范围广,I/O 点比以前多,模拟 量信号很容易受干扰,所有这一切系统不可靠性。 3) 系统的兼容性不好。可操作性和互换性差。该系统没有扩展空间,所以它是更 难以共享消息。 4) 实时性差。通信速度较慢,对媒体访问中的问题得不到很好的处理,使系统的 实时性不高。 5) 经济性差。在建设过程中需要大量的电缆和巨大的安装成本。 6) 除了以上的这些毛病之外,还存在血多其他方面的问题,比如传输报文的速度 慢、通讯传输的距离近、传输错误的概率大等问题。 基于 CAN 总线网络通讯新模式的实时工控系统克服了以上这些通信的缺陷。它具 有如更快的通信速度,更佳的实时性、更稳的可靠性等优点。因此,它将被大量应用于 实时控制系统。 CAN 总线是多主机通信且传输差分信号的网络,在总线上的每一单元皆能收发数 据,起初是为汽车控制而提出的。目前,CAN 总线协议得到了许多有名的大公司的支 贵州大学毕业论文(设计) 第 2 页 持和发展,因此 CAN 总线应用研究从未间断过,并向其他应用领域扩张。由此可见, CAN 总线是目前现场总线中的主流产品之一,有无限的前景,势如破竹。 1.2 国内外发展状况 20 世纪 80 年代初期,由于欧洲汽车工业的快速发展,对汽车的要求也越来越多, 功能越来复杂,这就导致了汽车上的设备越来越多,通信变得非常复杂。因此,需要一 种简单可靠的串行总线解决如此复杂的通信问题。而已有的串行总线普遍存在一些缺点, 无法满足汽车上的通信任务。从 1980 年开始,德国 BOSCH 公司开始研究汽车上的串 行通信总线。到了 1983 年前期,一种新型的串行总线被提出,这种串行总线减少了电 气连接,新增了很多的功能,德国的大学教授 Wolfhard Lawrenz 给出了新总线的名字为 “CONTROLLER AREA NETWORK” ,英文缩写为 CAN。Bosch 公司于 1986 年正式公 布了这一总线。 1987 年 Intel 公司历经 4 年时间,比计划提前两个月生产出了第一个 CAN 控制器 (82526) 。不久,Philips 公司也推出了 CAN 控制器 82C200。1993 年 CAN 成为国际标 准。从此,CAN 总线被越来越多的公司研究和使用,产品也越来越多,有集成在其他 处理器上的智能芯片,也有单独的 CAN 控制器和收发器。CAN 总线特别适用于需要大 量的数据采集、传输、控制的工业控制系统。 CAN 总线在国外得到了飞速的发展,除了像奔驰这样的汽车行业使用 CAN 之外, CAN 总线还用在了生产线上、智能楼宇、家用电器以及小区间建设中。CAN 总线在国 内的发展相对较晚,但凭借其高可靠性,高实时性,性能好等特点在我国得到了迅速的 普及和推广。 1.3 设计内容与安排 本设计首先深入学习了 CAN 总线协议、CAN 控制器 SJA1000 以及相关的芯片,为 设计出基于 CAN 总线的数据采集节点打下基础,最终能实现将节点采集的数据经 CAN 总线发送给另一个 CAN 节点进行表达。本课题研究的重点就是现场采集数据后,如何 经 CAN 总线实现接收和发送,了解设计流程,为以后的系统开发积累设计开发经验。 计划安排: 1) 首先了解本设计的内容,收集整理资料 2) 完成开题报告 贵州大学毕业论文(设计) 第 3 页 3) 系统设计方案 4) 完成原理图,制出 PCB 版 5) 完成节点软件的编写 6) 最后对设计产品进行调试与总结 论文结构: 第一章:绪论部分,阐述了本课题研究的背景和意义以及分析了国内外在该领域内 CAN 总线的发展情况,最后说明了本设计的内容、计划安排和论文结构。 第二章:详述了 CAN 总线协议,图文并茂。 第三章:对 CAN 总线数据采集节点所涉及的硬件电路进行了详细的讲解。 第四章:分 BASECAN 模式和 PELICAN 模式介绍了软件的设计。 第五章:总结此次设计完成的工作,说明了此次设计中的不足之处和需要改进的地 方。 贵州大学毕业论文(设计) 第 4 页 第二章 CAN 总线技术 2.1 CAN 总线结构 在 CAN 协议 2.0 中主要是对数据链路层和物理层中的位编码,位解码以及位定时 等进行了详细的表述,但是没有定义物理层中接收器,驱动器的特性,也没有定义信号 电瓶与传输介质的内容,因此起节点间的物理连接是具体情况而定,当今双绞线是最常 用的传输媒介4。CAN 总线上的节点没有主从之分,每个节点皆可主动地收发数据,通 信方式灵活,不需要专门的“调度“算法。 CAN 总线属于总线型拓扑结构。如图 2.1 所示。 图2.1 CAN 总线网络结构 CAN 总线上每一个单元都通过 PCA82C250 等 CAN 收发器链接到总线上。根据 ISO11898 标准,在 CAN 总线两端都用 120的终端电阻连起来,可以起到抑制反射回 波的效果。节点间的物理连接采用双绞线作为传输介质,双绞线一根称为 CANH,另一 根称为 CANL,CAN 总线采用差分方式传输数据,提高了抗干扰能力。 2.2 CAN 总线的特点 1) 多主控制 2) 信息的发送没有地址,数据的收发都是通过 ID 的优先级来控制的。 3) 很高灵活性。 4) 通信速度在不同网络中可以不相同,可以根据距离来设置通信速度。 5) 可以发远程数据请求命令。 6) 错误处理功能强大 7) 逻辑上没有连接数量限制。 2.3 CAN 总线通信模型 CAN 总线也是参考 ISO 七层模型设计的,CAN 总线的分成结构和功能与 OSI 规范 贵州大学毕业论文(设计) 第 5 页 的关系如图 2.2 所示。 图2.2 CAN 总线网络结构 CAN 总线网络底层分别是物理层、数据链路层(包括 LLC 和 MAC)和应用层,工 作于工业控制的底层。在 CAN2.0 技术规范中没有定义驱动器和接收器特性,以便于进 行信息传输的优化。 2.4 CAN 总线帧结构 CAN 总线报文包括数据帧、远程帧、错误帧和超载帧 4 种帧类型4。 2.5.1 数据帧 数据帧包括 7 种不同的位场,依次是帧起始(Start of Frame) 、仲裁场(Arbitration Field) 、控制场(Control Field) 、数据场(Data Field) 、CRC 场(CRC Field) 、应答场 (ACK Field)和帧结束(End of Frame)5。数据帧组成如图 2.3 所示。 图2.3 CAN 总线数据帧结构 1) 帧起始 帧起始(SOF)由一个低电平构成,表示数据帧或者远程帧的起始。只有总线空闲 时才可以发送帧起始,任何节点只要检测到 SOF 就必须与其同步。 贵州大学毕业论文(设计) 第 6 页 2) 仲裁场 标准帧的仲裁场由 11 为 ID 和 1 位 RTR 组成,如图 2.4 所示。 图2.4 标准帧仲裁场 扩展帧的仲裁场由 11 为 ID 号、1 位 SRR、18 位扩展 ID 号及 1 位 RTR 构成,如图 2.5 所示。 图2.5 扩展帧仲裁场 标准帧与扩展帧由 RTR 和 IDE 来确定,RTR 是显现位,IDE 是隐性位。11 位 ID 号过后,如果出现的是显现电平,就是标准帧的 RTR,否则就是扩展帧的 IDE。 3) 控制场 控制场共 6 位,由 1 位 IDE/r1、1 位 r0 和 4 位 DLC 组成,如图 2.6 所示。 图2.6 控制场结构 DLC 由 4 位组成,定义需要发送数据的字节数(最多 8 字节) ,如表 2.1 所示,H 表示显现电平,L 表示隐形电平。 表2.1 数据字节数与 DLC 码的对应关系 数据字节数 DLC 码 DLC3 DLC2 DLC1 DLC0 0 H H H H 1 H H H L 2 H H L H 贵州大学毕业论文(设计) 第 7 页 表2.1 (续) 数据字节数 DLC 码 DLC3 DLC2 DLC1 DLC0 3 H H L L 4 H L H H 5 H L H L 6 H L L H 7 H L L L 8 L H H H 4) 数据场 数据场为 0-8 字节,首先收发的是字节的最高位,收发字节数由 DLC 码规定。 5) CRC 场 CRC 场由 15 位验证码与 1 为界定符组成,如图 2.7 所示。 图2.7 CRC 场结构 6) 应答场 应答场由1位 ACK 和1位 ACK构成。 发送单元发完数据之后, 发送一位隐性电平。 当数据被别的单元无误接收时,接收单元发出显性电平。两个电平线与之后成显现,被 发送节点检测到,就代表数据收发已完成。 图2.8 应答场结构 7) 帧结束 帧结束包括 7 个隐形位。 贵州大学毕业论文(设计) 第 8 页 2.5.2 远程帧 远程帧由帧起始 (Start of Frame) 、 仲裁场 (Arbitration Field) 、 控制场 (Control Field) CRC 场(CRC Field) 、应答场(ACK Field)和帧结束(End of Frame)6 个位场组成。 远程帧也有标准帧和扩展帧两种, 远程帧的 RTR 位呈隐性。 远程帧和数据帧的区别是, 远程帧无数据场并且 RTR 位是隐性电平。远程帧如图 2.9 所示。 图2.9 远程帧结构 2.5.3 错误帧 错误帧的结构如图 2.10 所示。 图2.10 错误帧结构 CAN 总线虽然稳定性很高,但难免会出错,错误类型如下: 1) CRC 错误:接收到的报文经 CRC 验证不一致时产生此错误。. 2) 格式错误:帧格式不合法发生该错误。 3) 应答错误:发送节点发完数据之后,收不到应答信息时产生此错误。 4) 位发送错误:发送的电平与检测的电平不一致时产生此错误。 5) 位填充错误:发现了超过 5 位连续的显性或者隐性位产生的错误。 为了错误产生时不影响其他节点间的通信,CAN 协议规定了错误被动、错误主动 与总线关闭这三个状态。这三种状态的转换如图 2.11 所示。 贵州大学毕业论文(设计) 第 9 页 图2.11 三种状态切换 2.5.4 超载帧 当某节点在帧空间里发现了非法“显性”电平时,将产生过载帧信号回送给发送单 元,由超载标志和超载界定符 2 个场组成。超载标志共 6 为显现电平,与错误帧形式相 似,因为改变了正常格式,所以其它单元都能发现此帧。超载界定符由 8 为隐性电平组 成。如图 2.12 所示。 图2.12 超载帧结构 2.5 本章小结 本章依次介绍了 CAN 总线结构,CAN 总线的特点,CAN 总线的通信模型以及 CAN 总线的帧格式,最后分别对数据帧、远程帧、错误帧、过载帧进行了详细的介绍。 贵州大学毕业论文(设计) 第 10 页 第三章 节点硬件设计 3.1 节点设计整体结构 本设计采用 STC89C52 作为微处理器,采用 SJA1000 作为独立的 CAN 控制器,为 了验证 CAN 数据采集的准确性以及 CAN 总线的通信问题, 还是采用了多个节点的设计 方式。本设计采用了三个节点,由于 CAN 总线不分主从节点,在 BASECAN 模式下可 以理解为把主节点作为上位机来使用,模拟上位机的功能,其他的作为从节点,负责数 据的采集,这样子的话,就不必在用电脑作为上位机来控制了。 3.2 节点硬件结构 节点硬件结构主要组成元器件包括微处理器,CAN 控制器,传感器以及 CAN 驱动 器,当然还有一些不可缺少的组成模块:电源电路,信息电路等,如图 3.1 所示。 图3.1 CAN 节点硬件结构 CAN 总线数据采集节点硬件电路并不复杂, 关键技术在于传感器和 CAN 接口一体 化,和节点通讯电路的硬件连接。微处理器是数据采集的核心,采用 STC89C52 芯片作 为数据采集单元的控制器。本设计的 CAN 控制器选取 PHILIPS 公司的 SJA1000 芯片, 因为其支持 CAN 2.0A/B 协议。CAN 驱动器选用 82C250,82C250 能够挂载一百多个 CAN 节点,驱动能力强6。SJA1000 并不是直接链接 82C250,而是在它们之间加了高 速光耦芯片 6N137 作为隔离,这样的设计是为了提高抗干扰能力。 微处理器 复位电路 电源电路 多路传感器 A/D 转换器 CAN 控制器 光电隔离 CAN 驱动 显示电路 时钟电路 CAN 总线 贵州大学毕业论文(设计) 第 11 页 3.3 STC89C52 芯片介绍 STC89C52 是兼容 8051 内核的单片机,是 STC 公司生产的一种低功耗、高性能 CMOS8 位微控制器。有 8K 字节程序存储空间,512 字节数据存储空间,4 个 8 位并行 I/O 口,三个 16 位定时器/计数器,全双工串行口,可直接串口下载程序。传统 51 单片 机几乎都是 5 向量 2 级中断结构,而 STC89C52 是 7 向量 4 级中断结构,并且能与传统 51单片机兼容。 支持0Hz静态逻辑操作, 新增了2种节电模式, 最高工作频率为35MHz, 比 STC89C51RC 系列稍低一些。 3.4 CAN 控制器 SJA1000 介绍 SJA1000 是 PHILIPS 半导体 PCA82C200 CAN 控制器 Basic CAN 的替代产品, 在原 来的基础上增加了一种支持 CAN2.0B 协议的新工作模式PeliCAN7。SJA1000 对于 82C200 来说,更加的优秀,特别在抗干扰能力和检测纠错能力方面有了很大的提高, 并且硬件设计和软件设计与 82C200 兼容。SJA1000 通讯线路简单。SJA1000 内部结构 图如图 3.2 所示。 图3.2 SJA1000 内部结构图 SJA1000 位于 STC89C52 和 PCA82C250 之间。 CAN 核心模块 SJA1000 负责接收和 发送信息的框架,以及实现 CAN 协议。接口管理逻辑操作连接主控制器外部接口,所 贵州大学毕业论文(设计) 第 12 页 以 STC89C52 操作 SJA1000 等于操作主控制器的外部 RAM。数据信息通过接收过滤后 将被完整地发送到接收 FIFO 缓冲区。STC89C52 通过读写 SJA1000 的内置 RAM,来实 现 CAN 总线数据的收发。 并且, 连接 SJA1000 的 INT 引脚和 STC89C52 的 INT0 引脚, STC89C52 与 SJA1000 可以通过中断技术实现通信8。 3.5 复位电路 复位电路用于重启系统。系统执行错误或者上电之后都需进行初始处理。复位电路 有三个功能:一是系统一上电就进行复位,二是可以通过按下按钮来实现复位;三是用 于系统的自动复位。 复位电路只要几个电阻、 电容和开关组合就能完成, 如图 3.3 所示。 图3.3 STC89C52 复位电路 3.6 时钟电路 时钟电路为数据处理设备产生时钟信号和为特定系统提供基准信号,是整个系统运 行的心脏。STC89C52 是这样,SJA1000 也是这样,只是 STC89C52 的时钟源通常采用 的是 6MHz 或者 12MHz 或者 11.0592MHz 的石英晶振,并且两端通过 30pF 电容接地。 而 SJA1000 的外部时钟源通常采用 16MHz 的石英晶振,最高可以是 24MHz,晶振两端 必须经 15pF 的电容接地,才能为 SJA1000 提供正确的时钟信号。本设计中 STC89C52 的振荡器使用 11.0592MHz 的无源晶振,这样可以产生的波特率种类多,精确度高。 SJA1000 采用 16MHz 的标准晶振,也是为了方便计算波特率,因为 BRT0 和 BRT 寄存 器的波特率预设值最大乘积为 1600,时钟电路图 3.4 所示。 a.单片机时钟电路 b.SJA1000 时钟电路 图3.4 时钟电路 贵州大学毕业论文(设计) 第 13 页 3.7 电源电路 电源的设计是整个系统设计中最重要的一部分之一,它影响信号传输的稳定性和准 确性,设计好电源部分能减少因干扰而浪费的调试时间,提高效率。本设计由于采用了 隔离技术,电源不可以用同一个,因此需要为每个节点提供两路电源。也就是说需要两 个稳压芯片分别产生隔离前后的 5V 电压源,否则就起不到隔离作用。 图3.5 电源电路 如图 3.5 所示,图中 5V 标号为控制端的电源,5V-C 标号为驱动端的电源。稳压芯 片 LM1117 为台湾亿光研发生产的稳压器,在电流被限制的情况下,稳压效果不错,电 压基本不变。LM1117 提供电流限制和热保护,输出电压的精度在1%以内,有固定输 出电压和可调节电压两个版本。 LM1117 比 7805 等稳压芯片价格便宜, 稳压性能也不错, 并且本设计基本都是 5V 工作电压,因此本设计采用 LM1117-5 芯片作为稳压芯片。 3.8 CAN 节点通信电路 CAN 总线上每个节点通讯电路都一样,只需将 SJA1000 的 MODE 引脚链接到电 源的正极,就可以让 SJA1000 工作在 INTEL 模式。将 STC89C52 芯片的数据/地址复用 I/O 口 P0 连接到 SJA1000 的 AD0-AD7,作为访问 SJA1000 的地址和数据总线,此时 SJA1000 作为 STC89C52 的外部存储器,如想实现地址/数据线共用,就要将 STC89C52 的 RD、WR、ALE 引脚与 SJA1000 的 RD、WR 、ALE 引脚分别相连。为了更好的控 制STC89C52的外部地址, P2.0口与P2.1口分别连接到SJA1000的CS引脚和复位引脚, 如图 3.6 所示。 图3.6 CAN 节点通信电路 贵州大学毕业论文(设计) 第 14 页 虽然 CAN 控制器 SJA1000 已经具有完整的 CAN 通信协议, 可以实现 CAN 通信任 务,但是我们一般不这样使用,因为 SJA1000 的总线驱动能力不足,为了稳定通信,因 此一定要外加驱动器芯片9。常用的 CAN 总线驱动芯片有 82C250/251,TJA1040 和 TJA1050。 82C250 速度可达到 1Mbps,可实现对总线的差动接收和发送能力10。82C250 采用 斜率控制的方式可防止射频干扰,带有过热保护功能,至少可连接 110 个节点11。 SJA1050 与 SJA1040 比 82C250 具有更好的性能,它们的对称性能非常好,不需要斜率 控制,并且抗干扰能力也较强,但是 82C250 已经完全满足要求了。82C250 的查分信号 输出引脚更 CAN 总线之间都接 5的电阻,能防止过流冲击。CANH 和 CANL 与地之 间还分别并联了一个 30pF 的电容和一个反向瞬态二极管,小电容用来过滤来自总线上 的高频干扰,瞬态抑制二极管起到瞬变干扰饱和作用。82C250 的 RS 引脚接一个 16K -145K的电阻可让 82C250 工作在斜率控制模式。 为了更好地抑制干扰, 82C250 与 SJA1000 通过光隔芯片 6N137 连接, 以实现 CAN 节点与 CAN 总线间的电气分离,提升总线的抗干扰性能。6N137 是用于单通道的高速 光耦,在 6N137 输入和输出的两端提供的电源必须完全地隔离,否则高速光耦 6N137 就起不到作用。虽然这样接线使硬件连接变得很有点多,但这样实现的好处是改变了通 信的稳定性,有保护 CAN 控制器 SJA1000 的作用。 3.9 STC89C52 外围电路 此设计主要采集开关量数据和一些模拟量数据, 对于开关量数据, 我通过 STC89C52 采集开关按键的状态,再通过 CAN 总线发送到另一个节点去显示。还有温度的采集和 红外遥控器的采集。也是通过 STC89C52 采集温度或者是红外遥控键值,再通过 CAN 总线发送到另一个节点去显示。 采用 DS18B20 作为温度传感器。 当 STC89C52 经 DS18B20 采集到数据后, 经 CAN 总线发送到另一个单元去处理。DS18B20 温度传感器如图 3.7 所示。 图3.7 DS18B20 温度传感器 贵州大学毕业论文(设计) 第 15 页 DS18B20 工作电压为 3.0-5.5V, 温度测量范围-55-+125, DS18B20 与 STC89C52 的通讯连接可以不接其他外围元件,只需一个引脚即能实现与 STC89C52 的串行通信。 但 DS18B20 与单片机 STC89C52 的连接引脚如果接一个 4.7K电阻作为上拉,通信效 果会更好。DS18B20 的模数转换精度高,数度快,接反不会烧坏,可以多个并接在一起 使用,实现多个 DS18B20 组网测量。 由于需要显示特殊的字符, 不可以用数码管来实现。 LCD1602 液晶显示屏的显示能 力也有限,只能显示两行 ASCII 码数据。所以此次设计选择显示分辨率为 128X64 的可 以显示汉子的 LCD12864 作为显示器。 红外线是一种波长为760nm至400um的电磁波。 红外遥控在我们生活中随处可见, 比如空调、电视机、影碟机等播放设备,都可以通过红外遥控的方式进行实现控制。红 外线发送采用 NEC 协议,即按下按键后,会首先发送 9ms 高脉冲信号,再发送 4.5ms 低脉冲信号,这段时间是没有任何传输信息的。在发送玩 9ms 高脉冲与 4.5ms 低脉冲的 引导码后, 才进行发送 4 个字节的数据, 分别是地址码、 地址反码、 命令码和命令反码, 最后还有 1 位停止位12,发送的逻辑结构如图 3.8 所示。 图3.8 红外发送数据结构 本设计采用 1838B 红外接收头作为数据采集的对象。 由于接收头接收到的电平与遥 控端发出的电平正好相反,一开始的高电平引导码变成了低电平,所以这中断接收是个 不错的选择。当按下遥控端的按键时,1838B 就会发出低电平让 STC89C52 产生中断, 此时单片机就可以接收数据了。 3.10 本章小结 本章主要介绍了基于 CAN 总线数据采集节点硬件组成结构。 详细介绍了 STC89C52 和 CAN 控制器 SJA1000 的特点和工作原理。最后对外围数据采集硬件电路的设计进行 了简单的介绍。 贵州大学毕业论文(设计) 第 16 页 第四章 节点软件设计 4.1 单片机软件设计的特点 对于嵌入式开发来说,软件的设计也非常的重要。自底向上和自顶向下是两种常用 的软件编写方法,自顶向下首先关注的是栈顶层的应用,从上往下编写软件,寻找优化 的问题和机会。 而自底向上自软件底层开始编写, 逐渐向上编写整个应用程序。 采用 “自 底向上” 和 “自顶向下” 结合编程的方法效果不错, 把复杂的底层完善了, 功能实现了, 然后编写应用层,最后对不满足要求的底层再进行适当的修改。 嵌入式系统的软件开发可以使用汇编语言和 C 语言。 用汇编语言编写的程序效率很 高,但是可读性较差,对软件修改也很不方便。考虑到本设计的程序非常的大,我就采 用 C 语言来进行软件的设计1314。 本设计系统的开发环境采用 KEIL C51 集成开发环境,KEIL C51 是美国 KEIL Software 公司开发出来的集成环境。 KEIL C51 集成了项目构建所需要的工具, 使用集成 开发环境的优点是效率高、速度快、容易发现错误,不用编写 MAKEFILE 文件来编译 C 语言的代码。 4.2 软件设计整体结构 软件的设计采用了模块化与自底向上的方式,先测试了硬件上的各个模块,再编写 了功能不同的库函数以方便调用。要尽量细分程序的功能,以方便以后的修改。编写通 用的工具类函数,尽量使接口程序的兼容性更好,使接口程序的调用更简单方便。本设 计主要采用了 SJA1000 的 BASECAN 模式来传输采集到的数据,也做了采用 PELICAN 模式的自收发程序。 BASECAN 模式是最简单的模式, 需要设定的寄存器较少。 当系统工作于 BASECAN 模式时,我设计了三个节点,那么我所谓的上位机是怎么判断是哪个节点发来的数据的 呢, 在这里我采用了接收和发送缓冲区的第三个字节存放发送节点的验收寄存器的值来 当作发送节点的地址,只需判断这个字节的内容就可以知道数据是来自哪一个节点。这 三个节点的其中一个节点作为上位机来使用,负责数据的显示,另外还有两个节点模拟 现场设备,分别用于采集红外信号和温度信号,拓扑结构如图 4.1 所示。 贵州大学毕业论文(设计) 第 17 页 图4.1 工作在 BASECAN 模式的拓扑结构 PELICAN 模式可配置和使用的寄存器多达 100 多个,比起 BASECAN 来说,就复 杂很多。当系统采用 PELICAN 模式时,我只设计了简单的自发自收程序。为了减少调 试时的硬件连接,PELICAN 模式的自发自收是最佳的选择,因为要让节点工作与自发 自收,BASECAN 模式是不行的,不好判断是不是节点硬件的问题。PELICAN 模式的 配置是非常复杂的, 我设计 PELICAN 模式的初衷就是为了检测我 PCB 版的硬件连接是 否正确,只有硬件连接正确了,每个节点都没有故障时,BASECAN 模式的通信才会畅 通无阻。 4.3 CAN 总线 SJA1000 初始化 CAN 总线上每个节点开始工作时都需要对 SJA1000 进行初始处理,这一步非常重 要,也是 CAN 总线程序实现的基础和难点。在系统上电复位开始运行之第一步,就是 必须完成 CAN 总线等控制器的初始化处理。 如果没有扎实掌握 CAN 总线的协议和不了 解寄存器的配置, 那就很难完成 CAN 总线的通信。 不管 PELICAN 模式还是 BASECAN 模式,CAN 总线初始化流程都是先检测 SJA1000 与 STC89C52 等微处理器的连接是否 正常。如果测试寄存器连接正常的话,就让 SJA1000 工作在复位模式,然后才是寄存器 的配置,最后设置 SJA1000 工作于工作模式。SJA1000 的复位可以有两种方式,一种是 通过 STC89C52 给 SJA1000 的 RST 引脚低电平来实现。 另一种则通过将 SJA1000 的 CR 寄存器或者 MODR 寄存器的最低位置 1 来实现。 CAN 初始化一般都在 CPU 上电之初, 但是不排除程序在工作中会进行初始化,所以会先关闭中断,直到初始化完成才开启中 断。PELICAN 模式和 BASECAN 模式的配置流程几乎一样,如图 4.2 所示。 数据显示 节点 1 节点 2 节点 3 红外遥控 温度 贵州大学毕业论文(设计) 第 18 页 图4.2 BASECAN 模式(左) PELICAN 模式(右)初始化流程图 在 SJA1000 初始化里设置 SJA1000 的工作方式,传输波特率,中断使能,错误处 理等15。 4.4 BASECAN 模式程序设计 4.4.1 显示节点程序设计 此节点主要用来显示其他节点发来的信息的,接收其他节点的报文信息然后使用 是是 否 是 是 否 否 否 初始化开始 关中断 硬件复位 进入复位工作模式 复位模式? 设置总线定时寄存器 检测设备连接 设置验收屏蔽寄存器 配置时钟分频寄存器 配置输出控制寄存器 配置中断使能寄存器 进入正常工作模式 工作模式? 开中断 结束配置 初始化开始 关中断 硬件复位 进入复位工作模式 复位模式? 设置时钟分频寄存器,进入 PELICAN 模式 检测设备连接 设置验收屏蔽寄存器组 配置总线定时寄存器 配置输出控制寄存器 配置中断使能寄存器 进入自收发模式 自收发模式? 开中断 结束配置 贵州大学毕业论文(设计) 第 19 页 LCD2864 显示屏来显示。此节点报文的获取都使用中断方式。此节点一供电就首先对 LCD12864 与 SJA000 进行了初始化处理并开启 SJA1000 接收中断。然后定时的从外部 数据缓冲区取出数据,然后判断数据是来自哪一个节点并拷贝到相应的显示缓冲区,最 终分别在 LCD12864 上显示出来,如图 4.3 所示。 图4.3 显示节点主程序流程图 当 CAN 总线上有数据时,就进入了中断的处理流程。在这里首先进行关中断,然 后判断是不是接收中断,如果不是就重启 CAN 总线,如果是就把 SJA1000 缓冲区中的 数据转存到外部缓存器中,在读完缓冲区内容之后,还必须写释放缓冲区命令,否则下 一次的接收就会受到影响而产生错误中断,最后有开启中断,中断软件流程图如图 4.4 所示。 是 否 否 是 开始 SJA1000 寄存器初始化 CAN 总线中断初始化 LCD12864 初始化 获取接收缓冲区结构体中的数据 节点 1? 节点 2? 拷贝数据到红外代码缓冲区 拷贝数据到温度数值缓冲区 显示红外代码和温度值 延时一段时间 贵州大学毕业论文(设计) 第 20 页 图4.4 显示节点中断接收流程图 4.4.2 节点一程序设计 节点一的主程序流程图如图 4.5 所示。 图4.5 节点一主程序流程图 是 中断入口 读取 CAN 中断寄存器 否 是 否 接收中断? 读接收缓冲区 写释放缓冲区命令 重启 CAN 总线 缓冲区状 态满? 读状态寄存器 中断返回 开始 SJA1000 寄存器初始化 CAN 总线中断初始化 获取红外遥控键值 在一位数码管上显示键值 延时一段时间 红外遥控中断初始化 贵州大学毕业论文(设计) 第 21 页 节点一用于采集的是红外遥控信号,此节点的工作主流程与显示单元有点相同,系 统一供电就首先对 SJA1000 进行初始化设置,包括波特率和运行模式等,SJA1000 初始 化完成之后就对红外接收和 CAN 总线中断进行初始化,最后也是定时从红外接收代码 缓存器中取出数据来显示在一位数码管上。 此节点采用中断的方式接收红外遥控信号并通过 CAN 总线发出去,等待其他节点 的接收处理。只要进入中断就首先关闭中断源,在确认是中断之后开始接收数据,接收 玩还需进行数据的校验, 数据校验无误之后将有用的部分写入 SJA1000 发送缓冲区并启 动 SJA1000 发送最后开启中断,流程图如图 4.6 所示。 图4.6 节点一中断处理程序流程图 否 是 红外中断入口 延时一下 否 是 是中断? 写入发送缓冲结构体 开总中断 等待引导码 中断返回 关总中断 校验数据准确? 接收数据存数组 写入SJA1000发送缓冲区 写开始发送命令 贵州大学毕业论文(设计) 第 22 页 4.4.3 节点二程序设计 节点二主流程与节点一相似,不同的是节点一采用中断的方式采集和发送数据,而 节点二采用定时的方式采集温度信息并通过 CAN 总线发出去。 温度传感器 DS18B20 采 用单总线进行读写,对时序要求非常高,在读写 18B20 时,如果延时不当就会出现读不 了数据。DS18B20 将温度值存入了它的第 0、第 1 个字节单元中,所以只需要读取第 0 和第 1 个字节就可以了。在读取温度之后还要经过 STC89C52 处理之后,才能得到争取 的温度值。 对 DS18B20 的操作流程为:首先对 DS18B20 初始化,在进行 ROM 操作,然后对 其内存操作,最后读取温度值。其操作时序主要是 DS18B20 的初始化时序、读时序以 及写时序。节点二的程序流程,如图 4.7 所示。 图4.7 节点二程序流程图 4.5 PELICAN 模式程序设计 在硬件连接之后,要检测节点的通信是否正常,采用 PELICAN 模式的自收发模式 是最好的选择,因为这样的测试可以不影响其他节点的工作,而且减少了硬件连接的复 杂度, 纠错的工作会减轻。 PELICAN 模式的难点就在于初始化, 它的初始化比 BASECAN 开始 SJA1000 寄存器初始化 CAN 总线中断初始化 在一位数码管上显示温度值 延时一段时间 初始化 DS18B20 温度值写入发送缓冲结构体 写跳过 ROM 操作命令 写入SJA1000发送缓冲区 写开始发送命令 写温度转换命令 写跳过 ROM 操作命令 写读取温度命令 读取 DS18B20 高速缓存器中的第一第二字节 计算温度值 贵州大学毕业论文(设计) 第 23 页 模式的初始化更加麻烦,所配置的寄存器很多,但是流程都差不多。通过查询方式来发 送按键按下的次数,如果有按键中断产生,就将按键计数器加 1 发送出去,又自己收回 来,最后通过数码管分别显示发送和接收到的数据。PELICAN 模式主程序流程中主要 做的就是初始化处理,然后不断地循环判断是否有数据要发送和接收,如果有就进行相 应的处理,然后显示发送和接收到的数据,主程序流程图如图 4.8 所示。 图4.8 PELICAN 模式主程序流程图 在此模式下,数据的发送和接收都采用中断方式,但是中断中并不直接处理接收和 发送的数据,只是通过置位标志来告知主程序来处理。当按下按键时,产生外部中断, 进入中断处理,按键计数器加 1,然后置位发送标志。当 SJA1000 收到自己发送的数据 后产生接收中断,并置位接收标志,如果不是接收中断就对 SJA1000 重新初始化。按键 是 否 开始 SJA1000 寄存器初始化 CAN 总线中断初始化 发送按键计数器值 分别显示发送和接收的数据 延时一段时间 按键中断初始化 是 否 接收标志为 1? 释放缓冲区、ECC 和 EMLR 取接收缓冲区 发送标志为 1? 接收标志清 0 发送标志清 0 贵州大学毕业论文(设计) 第 24 页 中断与接收中断处理流程如图 4.9 所示。 图4.9 PELICAN 模式按键中断(左)与接收中断(右)程序流程图 4.6 出现的问题与解决办法 CAN总线通信部分是整个软件设计调试的重要部分。 本次设计中出现了一些问题, 板子上的数据采集等模块,几乎都没问题,能采集数据,能显示信息,但 CAN 总线通 信不成功。读取 SJA1000 的状态寄存器发现一直有错误中断产生,而且检测到错误中断 后又用软件对 SJA1000 进行初始化,还是没有结果。为了解决这个问题,我想到了两个 办法:第一是采

温馨提示

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

评论

0/150

提交评论