基于CAN总线应用设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件Hale Waihona Puke Baidu计
本设计中CAN控制器SJA1000工作模式为增强模式,支持CAN2.0B协议。 帧格式采用扩展帧,扩展帧有29个标识符,占用4个字节空间。高16 位为接收节点的ID (当为广播报文时,就为0x00),低16位为发送节 点的ID(这些配置是在节点初始化 SJA1000中进行)。对SJA1000配置, 采用是双滤波验收,以决定该报文是否可以被节点接收。本设计用 CAN总线4种帧类型中的数据帧制定自己的通信规则。该系统数据通信 是由中心监控主机发起,中心监控主机发送命令,然后温控节点接收 命令再执行相应的操作,比如回送当前的温度数据、当温度异常时执 行解除温度异常的行为(通过继电器切断电路)等。接收报文采用中断 方法。即当CAN总线控制器接收到一帧有效报文(通过滤波验收),其 INT引脚跳变为低电平触发单片机的外中断l,然后通过中断子程序将 报文读人单片机。SJA1000可以产生4种中断,但占用的是一个硬件中 断资源,因此,需要软件区分中断源。对于接收中断,将最多8字节 的数据放入在内存中开辟的缓冲区,置相应标志通知主程序,主程序 在合适的地方再进行数据处理。数据接收后,必须执行一次释放CAN 接收缓冲器的命令,以便下一次数据的接收。
尾
谢 谢!
基于CAN总线应用设计
智能家居方面的应用
序言
CAN总线因其卓越的性能,应用不再局限于汽车 工业,已被广泛应用到自动控制、楼宇自动化、 医学设备等各个领域。针对目前智能家居控制器 功能较少、通信能力差的特点,我们在智能家居 环境中,采用分布式系统的思想,构建了一个安全 快速的CAN网络通讯系统,实现各子系统间的通 信,实验证明该方案可以提升家居环境的智能化、 人性化。本文重点就基于单片机的CAN总线通信 设计的实现进行介绍。
发送报文必须经过以下两个步骤:
步骤1:将待发送信息按SJA1000的要求送入系统发送缓冲 区,由于本系统采用CAN2.0B的扩展帧,因此缓冲区总共 为13字节,包括帧信息(1字节)、ID码(4字节)及8字节数 据。 步骤2:按下面流程图的要求进行报文的发送。需要注意 的是,在将系统发送缓冲区数据移至CAN控制器发送缓冲 区前,必须判断缓冲区是否被锁定。如果缓冲区被锁定, 则不能写入数据。
温度自动控制系统图
系统总图
温度自动控制系统结构
硬件设计
温度自动控制系统由一个中心监控主机节点、两 个温控点组成,三者之间通过CAN总线发送接收 数据包。节点的通信核心芯片为CAN控制器和 CAN驱动收发器。 1)CAN控制器sJA1000 SJA1000可完成链路层的全部功能。基本模式 支持 CAN2.0A协议,增强模式支持CAN2.0B 协议。 由接口管理逻辑、发送缓冲器、接收缓冲 器(RXFIF0)、接收过滤器、位流处理器 (BSP)、 位时序逻辑 (BTL)和错误管理逻辑(EML)等组成。
报文发送程序流程图
举一反三
在基于温度节点CAN总线通信调试成功后,我们 将其扩充应用于整个智能家居系统。各个子系统 在主控模块的控制下协同工作。主控模块到子系 统传输的主要是控制流,这些控制流完成子系统 的配置或者命令子系统完成特定的任务。子系统 到主机传输的主要是数据流,数据流主要包含子 系统中各设备的运行状态或传感器数据等。系统 结构如下图所示。
CAN总线在智能家居应用的原因
CAN总线具有优良的性能和极高的可靠性,在智 能家居环境中采用CAN总线技术,提高了系统内部 的通信速率、实时性,降低了误码传送率。已实现 且运行在智能家居系统中的内部通信,工作可靠, 性能稳定。
实验模块
智能家居环境包含很多方面,各设备、子系统不 但要相互联系而且整个系统还要与外界联系,还完 成错误检测、仲裁、总线填充和错误处理等功能。 所以通信可分成基于总线的内部通信网络和基于 电话以及计算机的远程通信网络。本文仅涉及内部 通信网络,虽然各种设备繁多,但通信机理是相 同的,所以下文以温度自动控制系统为例进行实 验,系统结构如下图所示。
PCA82C250的结构框图
2)CAN驱动收发器PCA82C250 PCA82C25O驱动收发器是CAN控制器(SJA1000)和物 理传输线路之间的接口。可以用高达 1Mbps的位 速率实现在两条差动电压总线电缆上的数据传输。
CAN总线接口模块电路
解图
接口电路如上所示,sJA1000的ADO—AD7口直接 与与单片机 AT89S52的P2口连接,SJAl000的ALE、 RD、wR和单片机 AT89S52对应 AIE、RD、WR相连,SJAl000的片选 CS接单片的一 个普通 I/O 口P1.3, MODE接+5V设置SJA1000控制器为Intel模 式,中断输出信号INT与单片机的INT1连,使CAN通信可以采用中断 或查询两种方式。时钟晶振统一采用 12MHz,频率调整电容C5、C6 一般取 15~30pF,设计中取20pF。 R11、R12连接控制器和驱动器 为限流保护电阻,为避免当驱 动器失效时出现过流导致控制器损坏, 设计中取 390欧姆。R14为终端电阻,设计中取120欧姆。CAN 驱动 器 PCA82C250的RS脚为工作模式选择位,接地工作于高速模式, 接高工作于待机模式 。 本设计系统通过电阻R13将芯片设定于斜率 控制模式,电阻值通常为16~140k欧姆,这里取为20~33k欧姆,这时 CAN总线应工作于低速模式,可提高CAN总线抵抗射频干扰的能力。 在这种情况下,可直接使用非屏蔽双绞线或平行线作为总线。
主控模块和子系统的can总线网络
系统与测试
通信性能测试主要体现在通信质量和通信速度上,为了获得这些参数需要测试 主控模块和子系统之间的数据传输能力。测试方法是:(1)无竞争点对点 双向数据传输测试(2)有竞争点对点双向数据传输测试。测试指标是:传 输时间和误码率。结果表明:主控模块和子系统之间通信比较稳定,数据传 输比较快,可以满足实时要求。