STM32的CAN总线中继器设计及应用_潘铜

uwb人员定位*基金项目:西安工程大学研究生创新基金资助(chx100813)。
STM32的CAN 总线中继器设计及应用
潘铜,叶小荣,张娜,范建峰
(西安工程大学电子信息学院,西安710048)
摘要:CA N 中继器是系统组网的关键,通过中继器可以扩展节点的数量和实现不同波特率之间的通信。本文充分利用ST M 32F105内部集成双bxCAN 控制器的特性,设计出一款基于ST M 32的单芯片CAN 总线中继器,并将其应用到齐玛印花机上。实践证明该方法有效可行,不仅实现了齐玛印花机的改造,还降低了系统设备的成本。关键词:CA N 总线;中继器;ST M 32F105;齐玛印花机中图分类号:T P336    文献标识码:A
Design an d Application of CAN Bus Repeater Based on STM32
Pan Tong ,Ye Xiaorong ,Zhang Na ,Fan Jianfeng
(Elect ronic Information College ,Xi 'an Polytechnic University ,Xi  an 710048,China )
Abstract :CAN repeater is the key to netw orking .The repeater can expand the num ber of nodes and realize communication betw een dif -ferent baud rates .M aking full use of internal integrated dual CAN controllers of S TM 32f105,the paper designs a single -chip CAN bus repeater based on STM32.The repeater can be applied to the Zimmer printing machine .The result proves that the method is effective and feasible ,not only realizing the transformation of Zimmer printing machine but also reducing the cost of system equipment .Key words :CAN bus ;repeater ;STM32F105;Zimmer printing machine
引 言
CAN 总线是一种多主方式的串行通信总线,具有优良的稳定性、实时性、远程通信能力以及超强的硬件CRC 纠错等特性;CAN 总线技术的应用不再仅限于汽车行业,而是扩展到了机械、纺织、控制等行业,并被公认为是最有前途的现场总线之一。然而由于受制于CAN 收发器,CAN 总线通信距离和网络中节点数被分别限制在10km 和110个之内。但是在稍大型的CAN 总线系统中,这往往是不够的,这时就需要用CAN 总线中继器对CAN 总线网络进行扩展。
CAN 中继器是系统组网的关键技术设备之一,使用中继器可以提高网络设计的灵活性,并且通过中继
器还可以连接两个不同波特率的CAN 总线网络;在两个网络间进行数据转发,极大地扩展其使用范围。基于此,本文设计出一款基于ST M 32的CA N 总线中继器,并将其应用到齐玛印花机上,完成圆网印花机通信系统的工程改造。
1 系统整体方案及硬件实现
以往的CAN 中继器设计大多采用M CU 加CAN 控制器的双芯片或多芯片解决方案。例如,参考文献[1]使用1片M CU 加2路CAN 控制器的结构实现中继器;参考文献[2]使用双M CU 结构设计CA N 总线中继器;参考文献[3]使用独立双CAN 控制器作为2路CAN 接口的控制器来设计CA N 中继器。上述方案电路复杂,MCU 与CA N 控制器通过外部总线连接,数据吞吐速度慢,整体可靠性也比较差。
意法半导体的STM 32是以A RM Cortex -M 3为内核的32位微处理器,主频可高达72M H z ,内置Flash 和SRAM ,其容量可分别高达512KB 和64K B ;内部集成双bxCA N 控制器。它支持CAN 协议V2.0A 和V2.0B ,波特率最高可达1M b /s ,具有3个发送邮箱和2个3级深度的FIFO ,能够以最小的CPU 负荷来高效处理大量收到的报文。基于此,选用STM 32F105作为主控制器,设计出一款基于STM 32的CAN 总线中继器。其整体方案如图1所示。
由于STM 32F105内部集成了双路CA N 控制器,CA N 中继器的节点电路变得十分简单,其硬件电路如图
图1 系统整体方案
2所示。
以往的节点电路,为了降低生产现场的抗干扰能力,保证中继器工作的可靠性,都采用多重的抗干扰
措施。例如,大部分的节点电路都是采用在CAN 控制器和收发器之间加
入光电隔离器6N137来实现CAN 节点之间的电气隔离,采用外加DC /DC 电源模块的方法切断系统电源的干扰。同样着眼于提高系统的抗干扰能力和可靠性的问题,本设
计中一反常规的设计方法,直接采用广州致远电子有限公司生产的CA N 通用收发器CTM 8251。
图2CAN 节点电路
CT M 8251是一款带隔离的通用CA N 收发器芯片,该芯片内部集成了所有必需的CAN 隔离及CAN 收发器件,这些都被集成在不到3cm 2
的芯片上。芯片的主要功能是将CA N 控制器的逻辑电平转换为CAN 总线的差分电平,并且具有DC 2500V 的隔离功能。该芯片符合ISO 11898标准,因此,它可以和其他遵从ISO 11898标准的CAN 收发器产品互操作。
实践证明采用CTM 8251不仅使系统真正与外接隔离开,抑制了干扰的串入提高系统的可靠性,简化了CAN 节点外围电路的复杂度,还降低了成本,有较高的性价比。
图2中120Ψ为可选用的终端匹配电阻,如果网络中已经有一对匹配电阻,则不使用该电阻。另外,电路中设计有相应的拨码开关电路用于CAN 网络的ID 标志和设置相应的波特率。
2 中继器的软件实现
CAN 中继器的主要任务是在两个网络中进行数据的过滤和转发。其软件主要包括以下模块:初始化模块、数据发送模块和接收模块等。
2.1 初始化模块
CA N 初始化直接关系到CAN 控制器能否正常工作,在很多情况下,软件不能正常工作并不是CAN 的收发程序有问题,往往是初始化配置不正确造成的。ST M 32的CA N 初始化主要包括CAN 寄存器初始化、CAN 单元初始化(包括CA N 模式和波特率的设置)、CAN 过滤器的初始化。由于STM 32开发商提供了大量的固件库函数,所以只需在调用的时间作出相应的设置即可。初始化子程
序如下所示:
①CA N 单元初始化子程序。
……
CAN  InitSt ructure .CAN  TTCM =DISABLE ;CAN  InitSt ructure .CAN  ABOM =DISABLE ;CAN  InitSt ructure .CAN  AWUM =DISABLE ;CAN  InitSt ructure .CAN  NART =DISABLE ;CAN  InitSt ructure .CAN  RFLM =DISABLE ;CAN  InitSt ructure .CAN  TXFP =DISABLE ;
CAN  InitSt ructure .CAN  Mode =CAN  Mode  Normal ;
//CAN 工作模式的选择CAN  InitSt ructure .CAN  SJW =CAN  SJW  1tq ;CAN  InitSt ructure .CAN  BS1=CAN  BS1 8tq ;CAN  InitSt ructure .CAN  BS2=CAN  BS2 7tq ;CAN  InitSt ructure .CAN  Prescaler =1;CAN  Init (CAN1,&CAN  InitS tructure );CAN  Init (CAN2,&CAN  InitS tructure );……
在该初始化子程序中最关键的环节是怎么设置CAN 的波特率,ST M 32数据手册给出了波特率的计算公式:
波特率=
1
1×t q +t BS 1+t BS2
其中t q 为CA N 时钟周期。如上述CA N 单元初始化子程序中:SJW =t q ,BS1=8t q ,BS2=7t q ,STM 32的CAN 时钟有A PB1提供。假设系统时钟为72M Hz ,A PB1为系统时钟的9分频,结合初始化子程序,CA N  P rescaler =1,带入波特率计算公式即可求的其波特率为500kb /s 。
②CA N 过滤器的初始化子程序。
……
CAN  FilterInitStructure .CAN  FilterNumber =0;
CAN  FilterInitS tructure .CAN  FilterMode =CAN  FilterMode  IdMask ;
CAN  FilterInitS tructure .CAN  FilterScale =CAN  FilterScale  32bit ;
CAN  FilterInitS tructure .CAN  FilterIdHigh =(0x0000 (CAN  ID <<1));
CAN  FilterInitStructure .CAN  FilterIdLow =0x0000;CAN  FilterInitStructure .CAN  FilterM askIdHigh =0x0FE0;CAN  FilterInitStructure .CAN  FilterM askIdLow =0x0000;
CAN FilterInitStructure.CAN FilterFIFOAssignment=0;
CAN FilterInitStructure.CAN FilterActivation=ENABLE;
CAN FilterInit(&CAN FilterInitStructure);
CAN过滤器设置的得当与否是CAN是否能够成功
接收信息的关键,尤其在过滤器组位宽和模式设计上,如
何将节点的ID号准确地映射到过滤器组位宽设置寄存器
上是过滤器的核心。为了过滤出一组标识符,设置过滤器
工作在屏蔽位模式下,对标识符的任何一位采用“必须匹
配”或“不用关心”的原则处理。
2.2 数据发送模块[4]
中继器的任务之一就是实现报文的转发。
ST M32F105内部集成了双bxCAN控制器,它包括3个发
送邮箱和2个3级深度的FIFO。结合ST M32F105的特
性,采用双FIFO的转发机制,其原理如图3所示。
图3 CAN中继器转发机制原理图
依据图3,当ST M32F105接收到新的报文时,经过数
据处理模块处理,在主监控程序负责下,对两路bxCAN
控制器的接收FIFO缓冲区进行监视,如某一路缓冲区非
空则向另一路转发。
ST M32F105发送报文的流程为:应用程序选择1个
空置的发送邮箱;设置标识符,数据长度和待发送数据;然
后对CA N T IxR寄存器的TX RQ位置1,来请求发送。
T XRQ位置1后,邮箱就不再是空邮箱;而一旦邮箱不再
为空置,软件对邮箱寄存器就不再有写的权限。TX RQ位
置1后,邮箱马上进入挂号状态,并等待成为最高优先级
的邮箱。一旦邮箱成为最高优先级的邮箱,其状态就变为
预定发送状态。当CA N总线进入空闲状态,预定发送邮
箱中的报文就马上被发送(进入发送状态)。在邮箱中的
报文被成功发送后,它马上变为空置邮箱;硬件相应地对
CAN T SR寄存器的RQCP和TXOK位置1,来表明一次
成功发送。
2.3 数据接收模块
为了提高中继器数据传输的实时性,CA N报文的接
收采用中断方式。所以在CAN初始化过程中应该通过
调用STM32固件库函数void CAN ITConfig(CA N T y-
peDef*CAN x,uint32t CA N IT,FunctionalState New-
State)来开启CAN1和CA N2的中断。在接收时通过判
断其标志位来确定是CAN1还是CAN2产生的中断,以
此进入中断函数void CAN1RX0IRQ Handler(void)和
pstangvoid CA N2RX0IRQ Handler(void)对收到的报文进行处
理。即:在接收一个报文时,其标识符首先与配置在标识
符列表模式下的过滤器相比较。如果匹配上,报文就被存
放到相关联的FIFO中,并且所匹配的过滤器的序号被存
入过滤器匹配序号中;如果没有匹配,报文标识符接着与
配置在屏蔽位模式下的过滤器进行比较;如果报文标识
符没有跟过滤器中的任何标识符相匹配,那么硬件就丢弃
该报文,且不会对软件有任何打扰[5]。数据接收模块流程
如图4所示。
图4 数据接收流程
3 系统在齐玛印花机上的应用
在齐玛印花机CAN通信系统中,CF101板是控制主
板,上面具有CA N中继器的功能,其他3个操作板是从
节点。系统利用中继器将整个网络的通信系统分为两
层,由中继器对主节点和从节点之间的报文进行转发。
为了完成对工程的改造,将笔者所设计的CAN中继器代
替CF101主板,另外3个节点电路同样采用STM32来
设计。
笔者所设计的CAN中继器现在绍兴某公司进行测
试。在实际应用中,将中继器的一端和网络主干线连接,
mppt算法另一端和操作板及显示板连接。就最近3个月的测试结
果表明:该系统能够和原设备正常通信,保证印花机的正
常工作且性能稳定可靠;维护和扩容方便,大大提高了印
花机工作效率,并更大程度地降低了设备成本。
4 结 论
本文所设计的CAN总线中继器,充分利用以Cortex-
钛合金型材M3为内核的STM32的优势,内部集成双bxCAN控制器
简化了硬件电路的设计;丰富的固件库函数缩短了开发周
eoa期。实践表明,基于ST M32的CA N中继器完成了57
酒盒
图6 ST A013解码芯片与DAB 系统连接电路
M P3解码的工作流程:
①解码芯片的初始化。初始化ST A013包括如下几个步骤:硬件复位ST A013;SPI 初始化;将由ST 公司提供的配置文件通过I 2C 接口写入解码芯片;对解码后的PCM 数据、PL L 、解码器工作模式以及输入比特流时钟极性等进行配置。
②音频数据的传送。由于ST A013具有较强的解码功能,因此当STA 013需要数据(DAT A  REQ 为高)时,须立即通过SDI 接口以尽可能快的速度(但要低于20M bps )传送给它。可以通过设置SPI 总线的SPICLK 来实现,这里将SPI 时钟设置为4M Hz 。数据以扇区为单位从M CU 发向解码芯片的缓冲器,注意在用SPI 传送数据时,需将BIT  EN 端口置高才能进行有效的传送。ST A013会自动决定数据输入与输出传输率的大小,当其缓冲存储器饱和时,它会终止数据请求。对于易变的比特流的M P3数据,ST A013也能自动处理。另外,它还能根据自动探测到的M P3的采样频率合理调整DAC 的时钟。
③对音频数据的解码。通过获取M P3文件帧头来获取一些解码参数,从而自动适应不同M P3音频流的解码。例如,可以通过解码参数中的采样频率来自动调整音频的输出时钟频率等。
④解码后音频流的输出。可将STA 013的SDO
(PCM 串行数据输出)、SCKT (PCM 串行时钟输出)、OCLK (采样时钟)和LRCLK (左右声道时钟输出)引脚,分别与M A X9850的SDIN (串行数据输入)、BCLK (数字音频位时钟输入)、M CLK (主时钟输入)和LRCLK (左右声道时钟输入)相连。解码后音频流经过DAC 转换为模拟音频信号后,再通过耳机功放,便可由耳机输出完整的PCM 音频。
结 语
该设计M P3解码方案是基于一种DA B 接收机所提出的。由于该款DAB 接收机采用的基带解码芯片ID200拥有极低功耗性(26mW /128kbps ),所以M P3解码功能的加入首先要从整机功耗和成本考虑。而STA 013解码芯片既满足低功耗的要求,又具备价格优势,且技术成熟度较高,故成为方案设计首选。但其体积相对较大,在PCB 布板时应优化设计,以便符合便携要求。随着数字化广播在我国的迅速普及与DAB 技术成熟度的提升,在DAB 基带解码芯片中融入M P3解码功能,对于提高整机的便携性、开发简易性起到至关重要的作用,这将是今后优化设计方案的一个重要方向。
参考文献
[1]田泽.ARM7嵌入式开发实验与实践[M ].北京:北京航空
航天大学出版社,2006.[2]陈义平.一种新型音频解码电路的设计[J ].煤炭技术,2003,
22(9).[3]李栋.数字声音广播[M ].北京:北京广播学院出版社,2001.[4]ST Com pany .S TA013S TA013B STA013T mpeg2.5layer
III audio decoder ,2004.[5]马忠梅.单片机的C 语言应用程序设计[M ].北京:北京航
空航天大学出版社,2003.
陆明莹(教授),主要研究方向为集成系统与电路设计、数字广播设计、数字多媒体广播基带芯片设计等;彭琨(硕士研究生),研究方向为微波/毫米波集成电路理论与设计;王国裕(教授),主要研究方向为音视频压缩、图像处理、DAB 及SoC 设计;张红升(讲师),主要研究方向为数字集成电路设计及嵌入式系统设计。
(收稿日期:2010-08-31)
48 各项设计指标,符合工程的要求,在齐玛印花机系统中能够有效的完成数据的转发和网络的拓展,具有较高的性价比。
参考文献
[1]邹继军,饶运涛.CAN 中继器设计及其应用[J ].电子技术应
用,2003,29(8):39-41.
[2]王亮,杜洪亮,等.基于多主型SPI 接口的CAN 总线中继器
设计[J ].自动化与仪表,2009,24(3):18-21.
[3]艾萱.基于独立双CAN 控制器的中继器设计与实现[J ].现
代电子技术,2007,30(21):9-11.[4]戴敏,曹杰.基于ARM 的单芯片CAN 总线中继器设计[J ].测控技术,2010,29(5):64-68.[5]王永虹,徐炜,郝立平,等.STM32系列ARM Cortex -M3微
控制器原理与实践[M ].北京航空航天大学出版社,2008.
潘铜(硕士研究生),研究方向为嵌入式与数控装备。
(收稿日期:2010-08-30)

本文发布于:2024-09-23 19:22:48,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/170228.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设计   数据   系统   解码
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议