基于STM32F105微控制器的双CAN冗余设计方案基于STM32F105微控制器的双CAN冗余设计方案控制器局域网(ControllerAreaNetwork,CAN)是一种多主方式的串行通讯总线。CAN总线具有较高的位速率,很强的抗电磁干扰性,完善的错误检测机制,在汽车、制造业以及航空工业领域中得到广泛应用。由于船舶机舱环境极为恶劣,且船舶航行过程中维修条件不如陆上,对CAN通信的可靠性要求很高,采取双CAN冗余总线提高通信可靠性。本文提出一种基于STM32F105微控制器的双CAN冗余设计方案。  1硬件平台组成STM32F105是STMicroelectronics公司推出的一款基于ARMCortex-M3内核的32位微控制器,其内核是专门设计于满足高性能、低功耗、实时应用的嵌入式领域的要求。由于采用Thumb-2指令集,与ARM7微控制器相比STM32运行速度最多可快35%且代码最多节省45%。较高的主频和代码执行效率使系统在进行CAN总线数据收发的同时仍可运行总线冗余算法。STM32F105微控制器内部集成2路独立的CAN控制器,控制器集成在芯片内部,避免了总线外扩引入的干扰,同时简化了电路设计、降低成本。  系统使用两条完全独立的CAN总线,两个CAN总线收发器和总线控制器,实现物理层、数据链路层的全面冗余。在初始化时两个控制器被同时激活,一个作为主CAN,另一个作为从CAN,为主控制器的备份。正常运作时,数据通过主CAN优先发送;当主CAN总线繁忙时,从CAN总线分担部分通信流量;而当主CAN总线发生故障时,数据转移至从CAN控制器传输,反之亦然。在任一总线发生故障时,数据都能经由另一条总线传输,而当两条总线都正常时,使用两总线同时传输,增加约1倍的通信带宽,这样在保证了通信可靠性