基STM32单片机的单线CAN总线隔离中继器设计

发布者:塞上老马最新更新时间:2018-03-19 来源: eefocus关键字:STM32  单片机  单线CAN总线  隔离中继器 手机看文章 扫描二维码
随时随地手机看文章

    本文针对CAN总线在现场运用中存在的一些限制因素,及煤矿井下液压支架电液控制系统CAN总线组网控制中存在的问题,提出了一种基于意法半导体公司STM32单片机的单线CAN总线隔离中继器。充分利用了STM32F105系列单片机内部集成的双bxCAN控制器和飞思卡尔MC33879的单线CAN收发器的特性,构成了一种软中继器。实践证明该设计有效解决了多点供电、网络规模限制、电磁兼容性的问题,对提高煤矿自动化生产安全和效率具有较大意义。

    CAN总线是一种多主方式的串行通信总线,具有优良的稳定性、实时性、远程通信能力以及超强的硬件CRC纠错等特性;CAN总线技术的应用不再仅限于汽车行业,而扩展到了能源、制造等行业,并被公认为是最有前途的现场总线之一;因此,CAN总线在煤矿各种系统中得到了越来越多的应用。由于受制于CAN收发器,CAN总线通信距离和网络中节点数被分别限制在10 km和110个节点之内。但在煤矿现场设备节点多、距离长、供电系统复杂系统中需要用CAN总线中继器对CAN总线网络进行扩展。
    CAN中继器是系统组网的关键技术设备之一,使用中继器可以提高网络的节点数和通信距离,并且可以连接两个不同波特率的CAN总线网络,极大地扩展其使用范围。针对于此设计出了一种基于STM32的单线CAN总线隔离中继器,并将于此应用到液压支架电液控制系统中,实现了液压支架间、液压支架与上位机监控系统的通信。

1 系统整体方案
    CAN总线中继器的设计方法一般2种:一种采用硬中继方式,即只通过门电路与一些分立器件的组合来设计电路,但转发效率不高;另一种采用软中继方式,即采用CPU来接收、转发CAN总线两侧的数据,该方案虽然结构复杂,但转发效率较高。两侧的数据经过CPU接收后再转发到另一侧,软中继器的优势除了具有程序滤波和自诊断功能外,还能实现不同速率网段的连接,满足实际应用要求;故本设计采用软中继的方式。

a.JPG

    2 硬件设计
    2.1 主控电路设计
    为煤矿井下严酷的工业环境中设计的中继器硬件电路除了需稳定可靠外,还需保证其低功耗特性。该中继器的CPU采用ST公司基于Cort ex—M3内核的STM32F105系列单片机。STM32F105系列是专门针对快速和简单的编程而设计的,可用于高度集成与低功耗工业应用。STM32F105系列的工作频率可达到72 MHz,相对于同等性能的单片机,功耗却要小很多。另外,它还带有具有在系统编程(ISP)的128KB片上FLASH程序存储器,从而为数据存储与固件升级等操作带来极大的灵活性。STM32F105系列内部集成了2个独立的CAN控制器,简化了中继器的硬件电路设计;其CAN控制器的验收滤波器具有快速的硬件搜索算法,支持大量的CAN标识符,并且允许11位和29位CAN标识符的明确定义与分组定义,简化了系统的软件设计和运行负担。
2.2 通信电路设计
    CAN总线接口电路如图2所示。图中CAN收发器选用单线CAN收发器MC33897。它是飞思卡尔公司推出的用于由地构成回路的单总线CAN总线收发器芯片,主要用于多路传输应用方面。它为CAN总线控制器之间的数据传输提供一单线的物理接口,也就是说相对传统CAN总线收发器,它只需要一根信号线即可完成CAN总线通信,这为节点之间相互通信节省了通信成本,方便了系统的安装和后期的维护。另外,CAN总线接口与CPU之间采用双路磁耦ADuM1201隔离,相比于高速光耦,磁耦时延小且功耗小。该设计方法解决不同的支架间用不同电源供电信号不共地的传输问题,并且提高抗干扰的能力。

b.JPG


  3 软件设计
  3.1 初始化子程序
  STM32的CAN控制器初始化直接关系到CAN控制器能否正常工作。STM32的CAN控制器初始化主要包括CAN基本单元和过滤器的初始化。因为ST公司推出了一套针对于STM32的固件库,所以只需在程序开始时做出相应的设置即可。在该初始化子程序中关键的环节是设置CAN的波特率,STM32数据手册中的波特率的计算公式如下:    c.JPG
    其中tq=(BRP[9:0]+1)xtPCLK。如上述CAN单元初始化子程序中:tBS1=tq×(TS1[3:0]+1),tBS2=tqx(TS2[2:0]+1),BRP[9:0]、TS1[3:0]和TS2[2:0]均在CAN_BTR寄存器中设置,STM32的CAN时钟有APB1提供。假设系统时钟为72 MHz,APB1为系统时钟的9分频,结合初始化子程序,BRP[9:0]=0、TS1[3:0]=7、TS2[2:0]=6,代入波特率计算公式即可求的其波特率为500Kb/s。在该中继器中,CAN控制器的过滤器设置工作在屏蔽位模式下,对标识符的任何一位采用必须匹配或不用关心的原则处理。在中继器中,由于需要转发所有总线上的数据,则过滤器不必详细设置,只需设置接收任何ID号的数据即可。
3.2 数据转发子程序
    中继器的任务实质上就是实现报文的转发。STM32F105内部集成了双bxCAN控制器,它包括3个发送邮箱和2个3级深度的FIFO。结合STM32 F105的特性,采用双FIFO的转发机制,其原理如图3所示。依据图3,当STM32F105接收到新的报文时,经过数据处理模块处理,在数据转发进程的管理下,对两路bxCAN控制器的接收FIFO缓冲区进行监视,如某一路缓冲区非空则向另一路转发。

d.JPG

    
    STM32F105发送报文的流程为:应用程序选择1个空置的发送邮箱;设置标识符、数据长度和待发送数据;然后对CAN_TIxR寄存器的TXRQ位置1,来请求发送。TXRQ位置1后,邮箱就不再是空邮箱;一旦邮箱不再为空置,软件对邮箱寄存器就不再有写的权限。TXRQ位置1后,邮箱马上进入挂号状态,并等待成为最高优先级的邮箱。一旦邮箱成为最高优先级的邮箱,其状态就变为预定发送状态。当CAN总线进人空闲状态,预定发送邮箱中的报文就马上被发送。在邮箱中的报文被成功发送后,它马上变为空置邮箱;硬件相应地对CAN_TSR寄存器的RQCP和TXOK位置1,表明一次成功发送。
    为了提高中继器数据传输的实时性,CAN报文的接收采用中断方式。所以在CAN初始化过程中应使能CAN1和CAN2外设中断,并设置其相应的中断向量表,设定其相应的中断等级。数据接收模块流程如图4所示。

e.JPG

    
    另外,假设CAN总线上A点发出的数据总时间为t,则在软中继器另一侧B点接收到该数据的最短时间为t。当总线速率不大且对各总线设备时序要求不高时,该时间可以忽略。但在一些节点间交换数据频繁的CAN总线系统,则须注意这个问题,尽量使其对系统的影响降至最低。

  4 结论
    该CAN总线中继器充分利用内部集成双bxCAN控制器简化了硬件电路的设计,及丰富的固件库函数缩短了开发周期。实践表明,该单线CA N总线隔离中继器完成了各项设计指标,符合工程的要求,在液压支架电液控制系统中能够有效的完成数据的转发和网络的拓展,具有较高的实用价值。


关键字:STM32  单片机  单线CAN总线  隔离中继器 引用地址:基STM32单片机的单线CAN总线隔离中继器设计

上一篇:基于STM32处理器的硬件电路连接图和软件程序设计
下一篇:基于STM32闭环张力控制系统设计

推荐阅读最新更新时间:2024-03-16 15:57

STM32-串口实验学习笔记
USART1_IRQHandler(void)函数: 当串口1发生了相应的中断,就会跳到改函数执行。这里设计了一个小小的接收协议(系统并未定义):通过这个函数,配合一个数组USART_RX_BUF ,一个接收状态寄存器USART_RX_STA实现对串口的数据的接收管理。USART_RX_BUF 最大值为64,也就是一次接收的数据最大不能超过64字节。USART_RX_STA是一个接收状态寄存器,其各位的定义如表所示: (注意:这个是作者设计的协议,怎样判断串口接收一组数据完毕?由于每次接收的数据长度不一样,少的就3个8位数据,多的时候有十多个,这个数据个数是不定的,且没规律的数据,有什么好的方法让它接收完整? 协议的设
[单片机]
STM32-串口实验学习笔记
利用单片机PWM信号对舵机进行驱动控制
  在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。 图1 舵机的控制要求 舵机的控制
[单片机]
利用<font color='red'>单片机</font>PWM信号对舵机进行驱动控制
51单片机(计时器+时钟应用)
Ps: 使用的是51单片机, 晶振为11.0592M的, 时间选择5ms。 这篇博客好像是第一篇单片机博客诶~。 算法: 简单的计时器应用, 最开始 根据 2^16 - (t - f)/12 计算得到值, 将其转换为16进制 (注意:单位的改变, 例如晶振要乘上 10e6 时间 要转换为秒s 乘上 10e-3) 由此可以得到 TH0/TL0的值。 例如: 设计的是5ms, 则 算式为 2^16 - (5 * 10^-3 - 11.0592 * 10^6) / 12; 转换为16进制 为DC00; 所以 TH0 = 0XDC __ TL0 = 0X00; 显示: 拆字什么的 就不说了~~, 反正就是 分和秒 对 10取余 和
[单片机]
STM32的瞬态运动参数存储测试系统设计
在瞬态运动参数测试中,对存储测试系统的实时性和功耗提出了更高的要求。提出了一种基于STM32的嵌入式存储测试系统的设计方案,介绍了该系统关键部分的软硬件设计,主要包括模拟信号调理、数据采集存储和USB数据回读。该系统具有实时性好、体积小、功耗低的特点,适合于恶劣环境下加速度信号的采集存储。试验结果表明,该系统工作稳定,实现了设计目标。 存储测试技术是在特殊环境下记录运动物体参数行之有效的方法,先将测试数据存入存储器,待装置回收后通过特定接口与上位机进行通信,还原数据信息。在诸多领域的测试中,对数据采集存储系统的实时性和功耗提出了更高的要求,随着半导体技术的发展,各种技术的进步使得高速度、低功耗的存储测试系统能够实现。 本系
[单片机]
<font color='red'>STM32</font>的瞬态运动参数存储测试系统设计
stm32中GPIOB->BSRR这句话是什么意思
GPIOB- BSRR = 0x01就是把GPIOB port 0升为高电平 GPIOB- BRR = 0x01就是把GPIOB port 0降为低电平 GPIOB- BSRR = 0x02就是把GPIOB port 1升为高电平 GPIOB- BRR = 0x02就是把GPIOB port 1降为低电平 GPIOB- BSRR = 0x04就是把GPIOB port 2升为高电平 GPIOB- BRR = 0x04就是把GPIOB port 2降为低电平 GPIOB- BSRR = 0x08就是把GPIOB port 3升为高电平 GPIOB- BRR = 0x08就是把GPIOB port 3降为低电平
[单片机]
基于51单片机SPI器件的串口控制
0 引 言 串行外设接口(Serial Peripheral Interface,SPI)是一种高速同步串行输入/输出端口,近年来广泛应用于移位寄存器、D/A转换器、A/D转换器、串行E2PROM、LED显示驱动器等外部设备的扩展。SPI接口可以共享,便于组成带多个SPI接口器件的系统。其传送速率可编程,连接线少,具有良好的扩展性。 1 SPI接口介绍 SPI是摩托罗拉公司推出的一种同步串行通信接口,用于微处理器、微控制器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准。目前,各半导体公司推出了大量的带有SPI接口的具有各种各样功能的芯片,如RAM,E2PROM,FLASH ROM,A/D转换器、D/A转换器、LE
[单片机]
基于51<font color='red'>单片机</font>SPI器件的串口控制
22课:单片机串行口通信程序设计
1.串行口方式0应用编程 8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能扩展一个并行口。 单片机串行口通信程序设计硬件连接图 例:用8051单片机串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。 串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于TI或RI标志。串行发送时,能靠TI置位(发完一帧数据后)引起中断申请,在中断服务程序中发送下一帧数据,或者通过查询TI的状态,只要TI为0就继续查询,TI为1就结束查询,发送下一帧数据。在串行接收时,则由RI引起中断或对RI查询来确定何时接收下一帧数据。
[单片机]
22课:<font color='red'>单片机</font>串行口通信程序设计
单片机的结构原理详细说明
8051是MCS-51系列单片机的非常典型的产品,我们用这一个代表性的型号进行系统的单片机原理讲解。 8051单片机包含中央处理器、数据存储器(RAM)、定时/计数器、程序存储器(ROM)、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别对其原理加以说明: ·数据存储器(RAM): 8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。 ·中央处理器: 中央处理器(CPU)是整个单
[单片机]
<font color='red'>单片机</font>的结构原理详细说明
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved