历史上的今天
返回首页

历史上的今天

今天是:2025年03月11日(星期二)

正在发生

2021年03月11日 | STM32的CAN总线中继器设计及应用

2021-03-11 来源:21ic

引言

CAN总线是一种多主方式的串行通信总线,具有优良的稳定性、实时性、远程通信能力以及超强的硬件CRC纠错等特性;CAN总线技术的应用不再仅限于汽车行业,而是扩展到了机械、纺织、控制等行业,并被公认为是最有前途的现场总线之一。然而由于受制于CAN收发器,CAN总线通信距离和网络中节点数被分别限制在10 km和110个之内。但是在稍大型的CAN总线系统中,这往往是不够的,这时就需要用CAN总线中继器对CAN总线网络进行扩展。


CAN中继器是系统组网的关键技术设备之一,使用中继器可以提高网络设计的灵活性,并且通过中继器还可以连接两个不同波特率的CAN总线网络;在两个网络间进行数据转发,极大地扩展其使用范围。基于此,本文设计出一款基于STM32的CAN总线中继器,并将其应用到齐玛印花机上,完成圆网印花机通信系统的工程改造。


1 系统整体方案及硬件实现

以往的CAN中继器设计大多采用MCU加CAN控制器的双芯片或多芯片解决方案。例如,参考文献使用1片MCU加2路CAN控制器的结构实现中继器;参考文献使用双MCU结构设计CAN总线中继器;参考文献使用独立双CAN控制器作为2路CAN接口的控制器来设计CAN中继器。上述方案电路复杂,MCU与CAN控制器通过外部总线连接,数据吞吐速度慢,整体可靠性也比较差。


意法半导体的STM32是以ARM Cortex-M3为内核的32位微处理器,主频可高达72 MHz,内置Flash和SRAM,其容量可分别高达512 KB和64 KB;内部集成双bxCAN控制器。它支持CAN协议V2.0A和V2.OB,波特率最高可达1 Mb/s,具有3个发送邮箱和2个3级深度的FIFO,能够以最小的CPU负荷来高效处理大量收到的报文。基于此,选用STM32F105作为主控制器,设计出一款基于STM32的CAN总线中继器。其整体方案如


图1所示。

由于STM32F105内部集成了双路CAN控制器,CAN中继器的节点电路变得十分简单,其硬件电路如图2所示。

以往的节点电路,为了降低生产现场的抗干扰能力,保证中继器工作的可靠性,都采用多重的抗干扰措施。例如,大部分的节点电路都是采用在CAN控制器和收发器之间加入光电隔离器6N137来实现CAN节点之间的电气隔离,采用外加DC/DC电源模块的方法切断系统电源的干扰。同样着眼于提高系统的抗干扰能力和可靠性的问题,本设计中一反常规的设计方法,直接采用广州致远电子有限公司生产的CAN通用收发器CTM8251。


CTM8251是一款带隔离的通用CAN收发器芯片,该芯片内部集成了所有必需的CAN隔离及CAN收发器件,这些都被集成在不到3 cm2的芯片上。芯片的主要功能是将CAN控制器的逻辑电平转换为CAN总线的差分电平,并且具有DC 2500 V的隔离功能。该芯片符合ISO11898标准,因此,它可以和其他遵从ISO11898标准的CAN收发器产品互操作。


实践证明采用CTM8251不仅使系统真正与外接隔离开,抑制了干扰的串入提高系统的可靠性,简化了CAN节点外围电路的复杂度,还降低了成本,有较高的性价比。


图2中120 Ω为可选用的终端匹配电阻,如果网络中已经有一对匹配电阻,则不使用该电阻。另外,电路中设计有相应的拨码开关电路用于CAN网络的ID标志和设置相应的波特率。


2 中继器的软件实现

CAN中继器的主要任务是在两个网络中进行数据的过滤和转发。其软件主要包括以下模块:初始化模块、数据发送模块和接收模块等。


2.1 初始化模块

CAN初始化直接关系到CAN控制器能否正常工作,在很多情况下,软件不能正常工作并不是CAN的收发程序有问题,往往是初始化配置不正确造成的。STM32的CAN初始化主要包括CAN寄存器初始化、CAN单元初始化(包括CAN模式和波特率的设置)、CAN过滤器的初始化。由于STM32开发商提供了大量的固件库函数,所以只需在调用的时间作出相应的设置即可。初始化子程序如下所示:


①CAN单元初始化子程序。

在该初始化子程序中最关键的环节是怎么设置CAN的波特率,STM32数据手册给出了波特率的计算公式:

其中tq为CAN时钟周期。如上述CAN单元初始化子程序中:SJW=tq,BS1=8tq,BS2=7tq,STM32的CAN时钟有APB1提供。假设系统时钟为72 MHz,APB1为系统时钟的9分频,结合初始化子程序,CAN_Prescaler=1,带入波特率计算公式即可求的其波特率为500 kb/s。


②CAN过滤器的初始化子程序。

CAN过滤器设置的得当与否是CAN是否能够成功接收信息的关键,尤其在过滤器组位宽和模式设计上,如何将节点的ID号准确地映射到过滤器组位宽设置寄存器上是过滤器的核心。为了过滤出一组标识符,设置过滤器工作在屏蔽位模式下,对标识符的任何一位采用“必须匹配”或“不用关心”的原则处理。2.2 数据发送模块


中继器的任务之一就是实现报文的转发。STM32F105内部集成了双bxCAN控制器,它包括3个发送邮箱和2个3级深度的FIFO。结合STM32-F105的特性,采用双FIFO的转发机制,其原理如图3所示。


依据图3,当STM32F105接收到新的报文时,经过数据处理模块处理,在主监控程序负责下,对两路bxCAN控制器的接收FIFO缓冲区进行监视,如某一路缓冲区非空则向另一路转发。


STM32F105发送报文的流程为:应用程序选择1个空置的发送邮箱;设置标识符,数据长度和待发送数据;然后对CAN_TIxR寄存器的TXRQ位置1,来请求发送。TXRQ位置1后,邮箱就不再是空邮箱;而一旦邮箱不再为空置,软件对邮箱寄存器就不再有写的权限。TXRQ位置1后,邮箱马上进入挂号状态,并等待成为最高优先级的邮箱。一旦邮箱成为最高优先级的邮箱,其状态就变为预定发送状态。当CAN总线进入空闲状态,预定发送邮箱中的报文就马上被发送(进入发送状态)。在邮箱中的报文被成功发送后,它马上变为空置邮箱;硬件相应地对CAN_TSR寄存器的RQCP和TXOK位置1,来表明一次成功发送。


2.3 数据接收模块

为了提高中继器数据传输的实时性,CAN报文的接收采用中断方式。所以在CAN初始化过程中应该通过调用STM32固件库函数voidCAN_IT-Config(CAN_TypeDef*CANx,uint32_t CAN_IT,FunctionalState Newstate)来开启CAN1和CAN2的中断。在接收时通过判断其标志位来确定是CAN1还是CAN2产生的中断,以此进入中断函数void CAN1_RX0_IRQHandler(void)和voidCAN2 RX0_IRQHandler(void)对收到的报文进行处理。即:在接收一个报文时,其标识符首先与配置在标识符列表模式下的过滤器相比较。如果匹配上,报文就被存放到相关联的FIFO中,并且所匹配的过滤器的序号被存入过滤器匹配序号中;如果没有匹配,报文标识符接着与配置在屏蔽位模式下的过滤器进行比较;如果报文标识符没有跟过滤器中的任何标识符相匹配,那么硬件就丢弃该报文,且不会对软件有任何打扰。数据接收模块流程如图4所示。

3 系统在齐玛印花机上的应用

在齐玛印花机CAN通信系统中,CF101板是控制主板,上面具有CAN中继器的功能,其他3个操作板是从节点。系统利用中继器将整个网络的通信系统分为两层,由中继器对主节点和从节点之间的报文进行转发。为了完成对工程的改造,将笔者所设计的CAN中继器代替CF101主板,另外3个节点电路同样采用STM32来设计。


笔者所设计的CAN中继器现在绍兴某公司进行测试。在实际应用中,将中继器的一端和网络主干线连接,另一端和操作板及显示板连接。就最近3个月的测试结果表明:该系统能够和原设备正常通信,保证印花机的正常工作且性能稳定可靠;维护和扩容方便,大大提高了印花机工作效率,并更大程度地降低了设备成本。


4 结论

本文所设计的CAN总线中继器,充分利用以Cortex-M3为内核的STM32的优势,内部集成双bxCAN控制器简化了硬件电路的设计;丰富的固件库函数缩短了开发周期。实践表明,基于STM32的CAN中继器完成了各项设计指标,符合工程的要求,在齐玛印花机系统中能够有效的完成数据的转发和网络的拓展,具有较高的性价比。


推荐阅读

史海拾趣

芯旺微电子(ChipON)公司的发展小趣事

芯旺微电子自2012年成立以来,始终致力于高可靠性MCU器件的研发设计。公司凭借其自主研发的KungFu内核架构处理器,迅速在汽车级和工业级混合信号MCU领域崭露头角。随着技术的不断积累和市场的深入拓展,芯旺微电子逐渐从一家初创公司发展成为国内车规级MCU市场的领军企业。

天二科技(EVER OHMS)公司的发展小趣事

天二科技始终将产品质量视为企业的生命线。为了不断提升产品品质,公司引进了先进的自动化设备和生产工艺,并建立了严格的质量控制体系。经过多年的努力,天二科技的产品质量得到了显著提升,并先后通过了ISO9001、TS16949等多项国际质量管理体系认证。这些认证的取得不仅证明了天二科技在产品品质方面的卓越表现,更为公司赢得了客户的信任和市场的认可。

飞翼科技(FEIYI)公司的发展小趣事

2004年,天二科技迈出了全球化布局的重要一步,在全球范围内建立了销售和技术支持网络。同年,公司在中国大陆成立了分公司,进一步加深了与中国市场的联系。通过全球化布局,天二科技不仅成功拓展了海外市场,还积累了丰富的国际经验,为公司未来的发展提供了有力支持。

登丰微(GSTEK)公司的发展小趣事

歌普电子始终将产品质量视为企业的生命线。公司采用精细化管理模式,并严格执行ISO9001质量管理体系,确保每一件产品都达到高标准。同时,歌普的产品还通过了UL、CSA、TUV等国际安全认证及RoHS2.0、REACH欧盟绿色环保检测,进一步证明了其产品的可靠性和环保性。这些努力使得歌普在市场上获得了广泛的认可,与众多知名企业建立了长期稳定的合作关系。

BETA Transformer Technology Corp公司的发展小趣事

为了进一步扩大市场份额,BETA Transformer Technology Corp公司开始实施国际化战略。公司积极参加国际电子展览,与国际同行进行深入交流与合作。同时,BETA公司还在海外设立了研发中心和生产基地,以便更好地服务全球客户。通过不断拓展国际市场,BETA公司的品牌影响力和市场竞争力得到了显著提升。

Gemmy Electronics Co Ltd公司的发展小趣事
对于声波或超声波驱赶式捕鼠器,需检查发声元件和发射模块是否工作正常。

问答坊 | AI 解惑

有没CE5.0下的半透明按钮控件(C#的)

EVC的不怎么看得懂(.net搞多了,变懒了!) …

查看全部问答>

KBDHID 键盘布局定制问题(USAGE-TO-SCANCODE)

在kbdhid.cpp文件下 有3个USAGE-TO-SCANCODE类型的数组,不清楚顺序是根据什么来的?请大家指点下…

查看全部问答>

系统

怎样将隐藏盘合并到系统盘里…

查看全部问答>

Ctree 控件如何使头结点点击不收缩啊??

Ctree 控件如何使头结点点击不收缩啊??…

查看全部问答>

想把A主机显示的图像发送到B主机上,除了抓屏还有什么效率比较高的方法

如题,好多天了,没有找到比较好的解决方法。想从底层的驱动来考虑,不知道怎么弄,也没有驱动基础。大家给点建议,谢谢了…

查看全部问答>

【低功耗】Xilinx的FPGA低功耗相关文章下载(四)

这是我的一些Xilinx的FPGA的论文,传上来给大家分享一下!大家多多支持啊! 我会分批上传,方便大家选择性的交流与下载! [ 本帖最后由 jjkwz 于 2011-11-16 17:08 编辑 ]…

查看全部问答>

vmware 中怎么使用sharefolder

在虚拟机中安装了vmtools ,在虚拟机设置里也添加了共享文件夹,而且也在虚拟机linux中运行了vmware-config-tools.pl,但是我设置的那个文件夹似乎还是没有和windows7实现直接共享,无论在哪个系统中的共享文件夹中有什么操作,另一个系统的共享文件 ...…

查看全部问答>

基于单片机原理的数字直流电压源设计。

要求输出电压的范围为0V~9.9V,纹波不大于10mV,步进0.1v,输出电流大于500mA,能预制置输出初值,输出电压值由数码管显示。单片机选用51系列的。DA转换电路芯片网上看了下DAC0832最简单普遍。有朋友能指导我做下吗?…

查看全部问答>

高压交流信号测量

我要测量的是可控硅移相触发电路,波形如下图中的实线部分所示: 其峰值电压接近于230V,如此高的电压,而且波形奇怪,并不适合直接测量,所以想到把信号转换成低压的方波信号,方便测量,做了个如下图的转换电路: 但是实际的测量结果并没有达到 ...…

查看全部问答>