浅谈基于单片机的CAN总线通讯应用设计

时间:2022-08-30 08:29:36

浅谈基于单片机的CAN总线通讯应用设计

【摘要】目前,CAN的高性能与可靠性已经获得了普遍认可,并且在工业自动化、医疗设备、船舶等方面具有广泛的应用。现场总线是目前自动化技术领域发展的重点,其为数据在各节点之间的传输提供了技术支撑。本文介绍了CAN总线的特点,详述了通讯设计方案,及分析了基于单片机的CAN总线通讯应用设计过程中需要解决的问题。

【关键词】单片机;CAN总线;通讯

CAN(Controller Area Network)即控制器局域网,属于一种低成本和易开发的现场总线,它可对分布式控制与实时控制有效支撑,并且采用了优先级的协议仲裁总线。CAN总线允许同时发送多个站点,在确保实时、高效处理信息的同时,促使CAN总线网络组成多主从结构系统,进一步保证了系统的稳定性。

一、CAN总线特点

(一)物理层

CAN对没有定义的物理层内容进行了规范,可以联系现实情况实行优化与选择。例如双绞线,一般采用的方法是差分传输,当两条线都是2.5V电压时,差分电压数值与0V非常接近,总线呈现隐性,表示为逻辑1;当一条线是3.5V电压,另一条线是1.5V电压时,差分电压数值为2V,总线为显性,表示为逻辑0。CAN控制器和CAN驱动收发器共同实现了总线的节点通信。例如使用的驱动收发器是PCA82C250,可以达到110个节点。传输速率为5kb/s时可以产生10km的通讯距离,传输速率为1Mb/s时可以产生40m的通讯距离。

(二)链路层

2.0A和2.0B分别是CAN两个规范标准,其中CAN1.2的报文格式被2.0采用,在CAN规范的2.0B中称这一格式为报文的标准格式,报文的扩展格式在2.0B中与之对应,标准格式和扩展格式在2.0B中能够兼容。报文标准格式的标识符可以达到2032种,报文标识符的扩展格式基本不会受到限制。

(三)帧格式

CAN规范定义了不同类型的4种帧:

数据帧:自发送器数据帧向各个接收器传送数据;

远程帧:远程帧发送的数据帧为相同的标识符;

出错帧:任何单元检验到总线错误立即发送出错帧;

超载帧:利用超载帧在先行或者后续的数据帧和远程帧间提供一段附加延时。

(四)可靠性

CAN总线规定了5种错误类型:位错误、填充错误、CRC错误、格式错误和应答错误;采用的措施包括:检测发送、循环冗余校验、填充位和检查报文格式等,错误节点被检测到会回发出错帧,没有检测出错误的概率低于4.7×10-11。由于界限的设定,能够自行关闭有故障的节点,使之与总线脱离。

(五)同步

在总线上传输的数据包含了CAN总线同步信息,为隐性至显性总线数值跳变提供了同步信息。假如出现多个连续且相同的总线数值,CAN应用了填充规则,也就是在即将发送的比特流中,发送器检测到了相同数值的5个连续位,在实际发送的比特流中自动插入一个反码位。

二、通讯设计方案

(一)硬件设计方案

单片机CAN通讯具体包含:CPU、CAN控制器和串行收发器。

在设计方案中选择C8050F02X系列CPU,选择PHIPS公司的SJA1000CAN总线独立控制器和CPU实施总线连接,之后与串行收发器形成CAN接收总线串行通讯。在这一设计方案中采用了3.3V的CPU工作电压,采用5V的SJA1000工作电压,虽然能够直接连接2种芯片的数据总线与控制总线,但是假如外挂器件的位置在总线上,应当隔离处理总线。

SJA1000CAN控制器具有独立特点,它替代了PHIPS半导体PCA82C200CAN控制器产品的同时,添加了一种新工作模式,这一模式可以对CAN2.0B协议有效支持,能够对标准帧与2种扩展帧结构数据流有效收发。

引脚与串行收发器直接连接并且利用一个电阻连接总线,电阻发挥了限流功能。两个小电容在CANH、CANL与地之间连接,能够将总线上的高频干扰有效滤除并且发挥防电磁辐射作用。

(二)软件方案设计

初始阶段的CPU单元需要利用数据总线与控制总线配置CAN接口控制器,将待发送数据在处理数据阶段写入SJA1000,利用CAN总线进行发送,通过中断方式对CAN数据进行接收后实施处理。CAN报文传输包含有不同类型的4种帧。其中数据帧与远程帧可以采用标准帧和扩展帧,它们通过一个帧间空间分隔前面的帧。

假如在实现通讯过程后直接使用CAN总线,仅需要对CAN寄存器重点配置与操作进行掌握。利用地址与数据总线CIP-51对CAN控制器中的CAN模式寄存器、命令寄存器、状态寄存器等进行访问。

当模式寄存器MOD位置为1时初始化CAN软件,这时该节点的全部接收工作是停止接收发送报文。初始化过程中利用定时寄存器设定准确的波特率与位时序,以便确保CAN整个网络凭借统一的波特率进行通讯。寄存器利用中断寄存器与中断使能寄存器设定准确的中断模式实现正确收发CAN数据。清零MOD位使CAN软件初始化结束。

(三)结果测试

这一方案设计采用SJA1000对CAN2.0A和CAN2.0B协议模式进行支持,它能够对id号发送的CAN总线数据进行接收,将3倍采样应用在总线上,这样有利于总线过滤毛刺波。2种模式与标准帧格式和扩展帧格式进行了对应。

通过CAN接口控制器发送处理的数据波形如图1所示。

图1 CAN总线传输波形

通过分析图1可知,假如5个相同位出现在数据码流中,则将1个反向位进行插入,同时CRC序列所包含的CRC循环冗余码进一步得到了可靠的数据。

三、基于单片机的CAN总线通讯应用设计需要解决的问题

(一)CAN帧格式

当单片机系统内部自带CAN控制器时,仅能按照消息对象的帧格式,对固定数据序列有效接收,而这一设计方案通过CAN接口控制器对2种标准帧与扩展帧格式积极支持,可以按照数据流对帧格式进行判断,对识别码不同的数据信息准确接收。

(二)收发数据流

利用外部电平触发中断方式CPU处理CAN数据。当数据输入节点时,中断控制器要求标记,在服务程序中断时实现接收数据,按照不同的id号把CAN接收到的数据放入相应的缓存数据中,分别处理对应的数据。

假如采用数据流方式发送数据,则可以运用发送查询的方式,在相应的发送缓存区中放置将要发送的数据,查询主函数中缓存数据是否够8个字节,一次进行发送,综合定时器,假如到了规定时间,缓存中的字节还不到8个,则对小于8字节的数据进行发送时,在控制器中写入数据可以利用中断发送以及允许中断对发送数据是否成功进行查询。

四、结束语

运用CAN总线通讯,通过系统联试,功能与指标都符合了应用需求。用户采用CAN总线通讯能够更好的对单板连线有效缩减,在不需要了解CAN口底层协议的前提下,实现了多点高效与快速的串口通讯,经过系统验证说明这是一种具有可行性的串口通讯设计方案。

参考文献

[1]刘涛.基于89C51和SJ A1000的CAN通信方法研究[J].电脑编程技巧与维护,2011(4).

[2]郭昌东,姚舜才.基C8051F040单片机的CAN总线系统设计[J].山西电子技术,2011(1).

作者简介:范留伟(1987―),男,河南沈丘人,硕士,主要研究方向:电路与系统。

上一篇:变压器微机保护数据采集模块设计 下一篇:留学生内科教学、临床实习及教学查房的带教效...