基于ADμC812的CAN总线智能节点的设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于 ADμC812 的 CAN 总线智能节点的设计 摘要介绍了一种用单片机 μ812、 总线控制器 1000 和总线驱动器 82250 组成的总线智能节点的设计方案,给出了该节点的硬件结构和软件设计方 法,同时介绍了总线的主要特点。

关键词总线;μ812;数据采集卡1 引言CANControllerAreaNetwork总线协 议最初是以研发和生产汽车电子产品著称的德国BOSCH公司开发的, 它是一种支持分布式实时控制系统的串行通信局域网。

目前,CAN总线以其高性能、高可靠性、实时性等优点,而被广泛 应用于控制系统中的检测和执行机构之间的数据通信中。

CAN总线具有以下一些技术特性●多主方式工作,采用非破坏性的 基于优先权的总线仲裁技术; ●借助接收滤波可实现多地址的帧传送; ● 数据采用短帧结构,抗干扰性强,数据帧的信息CRC校验及其它错误检 测措施完善; ●发送期间丢失仲裁或由于出错而遭破获的帧可以自动重发; ●严重错误时可自动关闭总线功能,以使总线其它操作不受影响。

范文先生网收集整理CAN总线符合ISO11898标准,最大传 输速率为1MB/s时 传输距离最大为40m;传输速率为5kB/s
时的最大传输距离为10km。




CAN总线的传输介质可为双绞线、同轴电缆等。

由于CAN总线是一种很有发展前景的现场总线,因此 得到了国际
上很多大公司的支持,加之基于CAN总线的硬件接口简单,编程方便, 系统容易集成。

因此 它特别适用于系统分布比较分散、实时性要求高、现场环境干
扰大的场合。

2 系统结构由于CAN总线采用多主方式工作,所以它具有与DCS控 制系统不一样的拓扑结构。

其控制系统的构成由计算机和智能节点组成,图1所示是其系统结构。

该系统最大的特点就是所有的节点包括上位PC机都能以平等的地 位挂接在总线上。

一个CAN总线节点通常至少包括三个部分,即负责节点任务控制的 单片机、CAN总线控制器以及CAN总线收发器。

本文给出的就是一个可完成数据采集功能的CAN节点的设计方法。

3 CAN节点的硬件设计本CAN节点的电路原理简图如图2所示。

该电路的三个核心器件是单片机ADμC812 1 、独立的CA
N总线控制器SJA1000和CAN总线驱动器PCA82C250。

其中SJA1000 2 和PCA82C250两者的组合应用
已经在很多CAN总线节点的设计中用到,而本设计的特点就在于,它是 根据要完成数据采集功能这一具体要求来选用微控制器ADμC812。




图2中的串行接口芯片MAX232作为AD μC812与PC机的 串口连接,它的使用是由该单片机的调试特点决定的。

ADμC812是高度集成、高精度12位数据采集系统,该产品在 其内核中集成了带有片内可重编程非易失性闪速/电擦除程序存储器的 高性能8位与8051兼容MCU和多通道8个输入通道12位ADC。

由于ADμC812只需要通过其串口模块和计算机的串口进行连接, 而不需要额外的仿真器,因而可利用ADI公司的QUICKSTART 软件来实现程序的在线下载、在线调试和在线仿真,从而极大地提高了工 作效率。

这也是本设计使用MAX232的原因。

该系统在工作时,首先将从前面传感器送来的工业标准信号4~20 mA或1~5V通过调理电路变为0~2.5V的模拟电压信号输入至A DμC812的P0.0~P0.7AD0~AD7引脚根据实际情况确 定所需AD端口的数量,然后通过程序控制,再将A/D转换所得的数字 信息通过SJA1000和PCA82C250送到CAN总线上的相 关节点。

SJA1000作为微控制器的片外扩展芯片,其片选引脚CS应接 在微控制器的P2.0上,以用于决定CAN控制器各寄存器的地址。

SJA1000通过CAN总线驱动器PCA82C250连接在 物理总线上。

PCA82C250器件可提供对总线的差动发送能力和对CAN 控制器的差动接受能力,它同时完全和ISO11898标准兼容。




为进一步提高系统的抗干扰能力 ,一般在CAN总线控制器SJA1000和CAN总线驱动器PC A82C250之间加接6N137光电隔离芯片,只不过在图2中没有 表示出来。

由于通信信号传输到导线的端点时会发生反射,而且反射信号会干扰 正常信号的传输,因此,总线两端应接有终端电阻R1、R2,以消除反 射信号,其阻值应当与传输电缆的特性阻抗大致相当。

4 CAN节点的软件设计本节点的软件编程主要包括A/D转换AD C、CAN控制器的初始化、CAN总线数据的发送和接收等几个部分。

主程序的流程图如图3所示。

下面分别对这几个主要部分的程序设计做一介绍。

4.1A/D转换部分笔者在本设计中采用的是单步A/D转换模式, 并将A/D转换结果存入指定的数据存储区。

具体步骤如下1通过设置ADC控制寄存器ADCCON1和AD CCON2的值来确定A/D转换的工作状态和采样通道号;2使能AD C中断,置位SCONV位以启动单步A/D转换;3等待响应ADC中 断,并进入中断服务程序;4把采样所得的数据从ADCDATAL和A DC-DATAH两个特殊寄存器中取出, 并存入预设的片内数据存储器中, 然后退出中断服务程序;5判断所需通道是否采样完毕,如果未完成,则 设置采样通道号并返回步骤2,若完成则退出A/D转换子程序。

通过该程序可随时根据实际需要更改采样通道数,并将采样结果直接


存入指定数据存储区,以为今后向CAN总线发送所得数据提供便利。

4.2SJA1000的初始化CAN的通信协议主要是由CAN控 制器完成的,因此,要想实现CAN节点的数据传送,对CAN控制器的 初始化是十分关键的。

这个步骤直接决定着该CAN网络系统各节点所共同遵守的协议。

对SJA1000进行初始化实际上就是通过单片机向其片内的各 个寄存器写入控制字的过程,其寄存器包括以下几个REGCONTRO L—内部控制寄存器地址; REGCOMMAND—内部命令寄存器地址; REGSTATUS—内部状态寄存器地址;REGINTERRUPT —内部中断寄存器地址;REGACR—内部验收代码寄存器地址;RE GAMR—内部验收屏蔽寄存器地址;REGBTR0—总线定时寄存器 0;REGBTR1—总线定时寄存器1;REGOCR—输出控制寄存 器。

其中BTR0、BTR1寄存器的内容可用于决定系统通信的波特率 和CAN协议物理层中的同步跳转宽度,因此,对于一个系统中的所有节 点,这两个寄存器的内容必须相同包括上位机,否则将无法进行通信;O CR寄存器的内容用于决定CAN控制器的输出方式;而写入ACR、A MR寄存器的内容则要根据实际的网络系统和报文标志符来决定。

本设计中,笔者采用的是BasicCAN模式。

完成初始化后,CAN控制器就能正常运行了,但是要实现具体的数 据收发任务,还必须编制特定的收、发程序。

4.3CAN总线数据的发送和接收1发送部分的程序设计


用CAN总线发送数据的流程图如图4所示。

实际上,在程序运行过程中,常常会在发送某一帧数据时发现上一帧 的数据还没有完全发送完毕可以通过查询状态寄存器REGSTATU S的第4位BITTCS的显、隐状态可了解上次数据的发送情况。

因此,笔者采用的处理方法是通过指令启动本次发送之后,就不停地 查询状态寄存器,以判断本次发送是否完成,直到确定完成为止。

这样可以为下次发送提供便利,同时也有利于程序的顺利执行,从而 避免出现错误。

2接收部分的程序设计图5所示是该系统接收部分的软件流程图。

实际上,在对响应速度要求不太高的场合,以查询方式来设计接收子 程序是最简单、最可靠的方式。

如果总线上有数据发往本节点,则通过查询状态寄存器的第1位BI T_RBS的位状态,便可得知接收缓冲区RXFIFO中的可用信息, 然后通过软件将RXFIFO中的数据逐个移入到指定的片内存储空间 即可。

对于这样一个主要以数据采集功能为主的CAN节点,这些数据多半 是由CAN网络中的控制中心发来的控制信号,设计时把它们留给AD μ C812进一步处理就可以了。

还应注意的是在接收查询过程中, 要观察是否有总线关闭、 总线出错、 接收缓冲器超载等状态,如果有的话,必须要进行相应的错误处理,否则 也不能正常进行数据接收,还有一个问题是关于远程帧的处理。

限于篇幅,本文不作介绍。




5 结束语实践证明本文所介绍的CAN总线智能节点能够很好地实现 对工业标准模拟输出信号的采集以及与CAN总线上其它节点的通信。

由于该节点是基于单片机AD μC812开发的,因此它的体积小巧 且扩展灵活。

笔者相信,基于该单片机的各种总线节点一定会得到广泛的应用。









相关文档
最新文档