快捷搜索:

基于STM32F105微控制器的CAN接口电路设计

节制器局域网( ControllerA reaN etwork, CAN)是一种多主要领的串行通讯总线。CAN 总线具有较高的位速度, 很强的抗电磁滋扰性, 完善的差错检测机制, 在汽车、制造业以及航空工业领域中获得广泛利用 。因为船舶机舱情况极为恶劣, 且船舶航行历程中维修前提不如陆上, 对CAN 通信的靠得住性要求很高, 采取双CAN 冗余总线提高通信靠得住性。

1 硬件平台组成

STM32F105是STM icroe lectron ics公司推出的一款基于ARM Cortex- M3内核的32位微节制器, 其内核是专门设计于满意高机能、低功耗、实时利用的嵌入式领域的要求。因为采纳Thumb - 2指令集,与ARM7微节制器比拟STM32运行速率最多可快35% 且代码最多节省45% 。较高的主频和代码履行效率使系统在进行CAN 总线数据收发的同时仍可运行总线冗余算法。STM32F105微节制器内部集成2路自力的CAN 节制器, 节制器集成在芯片内部, 避免了总线外扩引入的滋扰, 同时简化了电路设计、低落资源。

系统应用两条完全自力的CAN 总线, 两个CAN 总线收发器和总线节制器, 实现物理层、数据链路层的周全冗余。在初始化时两个节制器被同时激活, 一个作为主CAN, 另一个作为从CAN, 为主节制器的备份。正常运作时, 数据经由过程主CAN 优先发送; 当主CAN 总线忙碌时, 从CAN 总线分担部分通信流量; 而当主CAN 总线发生故障时, 数据转移至从CAN 节制器传输, 反之亦然。在任一总线发生故障时,数据都能经过另一条总线传输, 而当两条总线都正常时, 应用两总线同时传输, 增添约1倍的通信带宽,这样在包管了通信靠得住性的同时前进了实时性。

CAN 总线接口电路设计如图1所示, 应用T JA1050作为总线收发器, 它完成CAN 节制器与物理总线之间的电平转换和差动收发。只管TJA1050本身具备必然的保护能力, 但其与总线接口部分照样采纳必然的安然和抗滋扰步伐; T JA1050的CANH 和CANL与地之间并联两只10pF的小电容, 可以滤除总线上的高频滋扰; 别的, 为了增强CAN 总线节点的抗滋扰能力, 总线输入端与地之间分手接入一只瞬态抑制二极管, 当两输入与地之间呈现瞬变滋扰时, 收发器输入端电压被钳位在安然范围。

为防止总线过压造成节点毁坏, STM32F105内置CAN 节制器的数据收发引脚并不与TJA1050直接相连, 经由过程ADuM1201磁隔离器实现旌旗灯号隔离传输。与传统光耦隔离比拟, 磁隔离简化了隔离电路设计, 并且磁隔离芯片的功耗很低, 大年夜约相称于光耦隔离的1 /10。除了将CAN 数据旌旗灯号隔离外,TJA1050T应用的电源和地也必须与系统完全隔离, 应用5V 隔离输出的开关电源模块IB0505LS供给隔离电源。因为CAN 总线数据传输率较高, 为了前进旌旗灯号质量, 收集拓扑布局应只管即便设计成单线布局以避免旌旗灯号反射, 同时终端连接120欧姆阁下的匹配电阻

图1 CAN 接口电路设计

2 软件设计

CAN 协议规范定义的数据链路层和部分物理层并不完备, 双CAN 冗余利用必要实现总线状态监控、收集故障的诊断和标识, 这就要经由过程添加软件冗余模块来实现。冗余模块在法度榜样主轮回中调用, 根据不合总线差错状态履行收发通道切换。CAN 总线差错状态分为3类: 差错激活、差错认可、总线关闭。总线正常事情时处于差错激活状态,节制器检测履新错后将发送/接管差错计数器的值递增, 当值大年夜于127时进入差错认可, 大年夜于255时总线关闭状态, CAN 总线差错检测模块经由过程读取差错状态寄存器作为总线故障的测试前提, 在差错状态发生改变时调用冗余算法, 履行总线切换操作。

经由过程实际调试发明, 总线连接断开且只有1个节点赓续发送报文时孕育发生发送差错, 节制器进入差错认可状态, 但不进入总线关闭状态; 其它差错均使差错计数器增添, 依次进入差错认可状态、总线关闭状态, 后两种状态注解总线被严重滋扰, 必要采取响应步伐。为简化节制逻辑设计将差错认可和总线关闭合并为总线故障。

冗余算法应用状态机实现发送模式的切换, 根据不合总线故障选择发送应用的总线。状态切换流程图如图2所示, 法度榜样首先读取差错状态寄存器得到总线差错状态, 判断当前总线是否处于差错激活模式, 若检测到总线故障法度榜样置响应标志位向其他法度榜样模块唆使差错。为前进报文发送效率, 发送法度榜样一次将多个报文写入发送邮箱由硬件节制自动发送, 在切换总线时, 需先把故障总线发送邮箱中的报文中回读, 经由过程备份总线优先发送, 这一机制包管报文不会因总线切换而损掉。节制器向故障总线发送数据域为空的测试报文, 每成功发送1报文, 总线发送差错计数器的值递减, 直至其值小于128总线规复履新错被动状态; 每隔必然光阴冗余法度榜样读取差错状态寄存器, 检测故障总线是否规复正常。

在2总线同时传输模式, 发送法度榜样优先写入总线1邮箱, 当总线1邮箱满时写入总线2的邮箱, 因为报文按优先级仲裁发送, 若某一起发送邮箱常常为空, 阐明该路总线通信流量较小, 发送法度榜样将较多报文转由余暇总线发送, 实现报文的负载均衡。

图2 总线状态切换流程图。

3 双总线冗余的靠得住性阐发与测试

对双CAN 冗余系统的靠得住性进行定量阐发, 引入匀称无端障运行光阴(M ean T ime To Fa ilure, MTTF)的观点。MTTF描述一个系统从开始事情到发生故障的光阴距离, 也即匀称寿命。为简化阐发生发火如下假设: 每路CAN总线的故障率相同; CAN 总线的毁坏属于物理毁坏, 即弗成修复的毁坏。指数散播可以很好地用来描述电子元器件的寿命, 假设CAN总线的寿命散播屈服指数散播, CAN 总线的靠得住性模型如图3所示。

图3 CAN 总线靠得住性模型图

模型1为单总线的靠得住性模型, 由于总线寿命屈服指数散播, 根据单一CAN总线无端障运行光阴MTTF1 = 1 /λ。模型2为双CAN总线冗余靠得住性模型, 系统由两条自力的总线并联而成, 即只有当这2条总线都掉效时系统通信才会掉败, 于是系统的匀称寿命MTTF2 = 3 /2。采纳双线冗余设计使CAN 通信的匀称无端障光阴增添了50%。

双线CAN 冗余系统的另一关键指标是总线切换光阴, 它即是检测差错所需光阴与处置惩罚故障总线未发送报文所需光阴之和, 切换光阴越短, 总线故障对报文传输造成的延迟就越小。检测差错所需光阴,即从总线差错呈现到被冗余法度榜样检测到所需的光阴。以总线断开故障为例, 发送器每发送一个报文孕育发生一次应答差错, 差错计数器每次加8, 需继续进行16次发送, 使差错计数器值达到128引起总线切换。在位速度125kbps环境下, 发送最长为128位的报文, 若轻忽节制看重发距离光阴, 从故障发生到被检测到的相应光阴为:

为避免在总线切换时损掉报文, 冗余算法需回读故障节制器中未发送报文, 由此孕育发生额外的故障处置惩罚光阴, 由于每个发送邮箱最多存储3个报文, 假定位速度125kbps不变, 备份总线发送时即取得仲裁,最长故障处置惩罚光阴为:

是以总线切换光阴为16. 38+ 3. 07= 19. 45m s。

经由过程实验测得在125kbps位速度下继续发送不合报文长度的总线切换光阴如表1所示:

表1 总线切换光阴

在125kbps位速度下切换光阴为22. 80ms, 比理论谋略值稍长, 这是由总线切换时运行冗余算法及读取节制器差错寄存器( ESR)所额外耗损的, 但在实际利用中, 发送报文获取仲裁所需的等待光阴弘远年夜于切换光阴, 总线故障并不频繁发生, 冗余切换算法对系统的运行并无明显影响。

4 停止语

与传统单片机总线外扩两片CAN 节制器的冗余规划比拟, 本设计充分使用STM32F105微节制器内置的两路CAN 节制器, 简化电路设计, 相对低落了资源, 同时双CAN 冗余通信系统的采纳前进了系统整体靠得住性。所应用双总线负载均衡技巧, 可以前进总线带宽, 平衡通信负荷。系统船舶机舱监控系统的图像和数据旌旗灯号的传输中取得很好的效果。

滥觞;电子工程网

您可能还会对下面的文章感兴趣: