关键词:SERCON816 SERCOS总线 总线控制器
1 引言
SERCOS总线是一种连接运动控制器与驱动器的运动控制总线。它出现的较晚,但一面世便受到世界各种设备供应商的广泛关注。SERCOS总线特有的开放性、同步性与抗干扰性有力支持了目前各先进工业国家对开放式数控系统的研究与应用,因此其协议很快便被采纳为国际标准。2002年中国也正式颁布了SERCOS协议的国家标准。在此之前,SERCOS总线已被应用于实践,如今全球有70多家公司能提供带有SERCOS接口的数字产品,国外生产的各类印刷机、食品包装机、装配机器人、半导体加工设备、纺织机及其它具有特殊用途的机器中也不乏SERCOS总线的应用。因内也开始尝试应用这一后起之秀,相关的研究也在日益增多。文中从应用角度,结合笔者实际使用中的经验,着重介绍一款主流的SERCOS总线控制器一SERCON816,希望能借此对国内数控技术的发展起到抛砖引玉的作用。
2 SERCON816简介
SERCON816是由欧洲SERCOS协会推出的第二代SERCOS总线控制器。该芯片集成了SERCOS总线的数据链路层,通过设定片内寄存器和读写结构化的双口RAM便可实现总线的通讯。这款芯片报文处理的时钟频率最大可达16MHz,即可在最短为62.5μs的固定周期内实现一主多从的环形通讯。SERCON816资源丰富,功能强大,内部有43个16位的控制寄存器、2kB的双口RAM、2个外部中断引脚、34个内部中断源、1个看门狗定时器及DMA控制器。另外,该电路的接口方式也灵活多样,与微处理器互联的总线宽度即可为8位,也可为16位;读/写控制的模式既可遵循Intel标准,也可遵循Motorola标准。而串行接口的通讯也可选用光纤或电缆来实现。SERCON816的内部功能结构如图1所示。
3 SERCON816的应用
3.1 SERCON816与微处理器的接口
SERCON816以总线的形式与微处理器接口。总线操作有两种模式,第一种是总线分离模式。在该模式下,数据总线上只传递数据,地址总线上只传递地址;第二种是总线复用模式。此时,对于片外数据总线而言,既传递数据也传递地址,不过,在芯片内部通过地址锁存器将二者分开了,具体说明见表1。
表1 SERCON816与微处理器接口
ADMUX | 0 | 总线分离模式 |
1 | 总线复用模式 | |
BUSWIDTH | 0 | 数据总线宽度为8位 |
1 | 数据总线宽度为16位 | |
A0 | A0、BHEN=00,数据总线有效位D0-D15;A0、BHDEN=01,为D0-D7;A0、BHEN=DIR=1,D0-D7代表高字节,D8-D15代表低字节 | |
BHEN | ||
BYTEDIR | 16位数据总线 | BYTEDIR=0,D0-D7代表低字节,D8-D15代表高字节,BYTEDIR=1,D0-D7代表高字节,D8-D15代表低字节 |
8位数据总线 | BYTEDIR=0时,A0=0传递低字节,A0=1传递高字节,BYTEDIR=1时,A0=0传递高字节,A0=1传递低字节 |
在总线分离模式下,首先要将BUSWIDTH置1,以选择16位宽的数据总线。然后将A0、BHEN都接地,使数据总线16位均有效。还要注意BYTEDIR的选择,由于内部寄存器或RAM单元都是16位的,分离、低二个字节,当BYTEDIR=0时,数据总线上传送的低8位数据作为低字节存入,高8位数据作为高字节存入;而当BYTEDIR=1时,低8位数据作为高字节存入,高8位数据作为低字节存入。通常情况下,将BYTEDIR接地。
总线复用模式主要是为了与8位微处理器进行接口。在这种模式下,片外数据总线首先传送地址信号,稳定后,打开内部锁存器将地址输入到内部地址总线,随后锁存器关闭,将地址锁存,最后再从片外数据总线将8位数据传入内部数据总线。由于内部寄存器或RAM单元由高、低二个字节构成,读/写时总是一个字节一个字节的进行,次序由BYTEDIR的设写与A0的变化来确定。值得注意的是,当与Motorola微处理器或8051系列微处理器进行接口时,BYTEDIR通常被设为1;而当与非8051系列的其它Intel微处理器接口时,BYTEDIR通常被设为0。
SERCON816总线的读写控制可选用Intel或Motorola二种标准之一,具体说明见表2。
表2 读写操作的标准说明
BUSMODEO | BUSMODE1 | 标准 | WRN | RDN |
0 | X | Intel | WRN | RDN |
1 | 0 | Motorola | R/WN | 低电平WRN有效 |
1 | 1 | Motorola | R/WN | 高电平WRN有效 |
当BUSMODE0为0时,采用Intel标准。此时,若WRN为低、RDN为高,进行写操作;若RDN为低、WRN为高,进行读操作。当BUSMODE0=1时,采用Motorola标准,只有在这种标准下,BUSMODE1才有意义。如果此时的BUSMODE1=0,说明当控制线RDN上出现低电平时,控制线WRN的控制信号有效;而如果BUSMODE1=1,说明当控制线RDN上出现高电平时,控制线WRN的控制信号有效。当WRN有效时,高电平表示读,低电平表示写。
SERCON816内部有2048字的双口RAM和大量的控制寄存器。由于对它们访问的地址上有重叠,所以必须事先确认访问的是双口RAM还是控制寄存器。当MCSN0=0,MCS=1时,对RAM进行读写操作;而当PCSN0=0,PCS1=1时,则对寄存器进行读写操作。
图2
3.2 时钟与复位
SERCON816需要二个时钟。一个由SCLK引脚输入,作为基准源;另一个由MCLK引脚输入,用于报文处理。作为新一代的SERCOS接口控制器,为了能够很好地与上一代控制器兼容,SERCON816提供了一个可选的设置引脚SBAUD16。通常,将SBAUD16接5V电源,可使SERCON816工作在兼容模式下。注意:SCLK最高输入频率为64MHz,MCLK输入频率在12MHz~64MHz之间。
SERCON816有硬件复位和软件复位二种方式。硬件复位是通过在RSTN引脚上加一个宽度不小于50ns的负脉冲来完成。不过,在非兼容模式下或掉电复位时,负脉冲的宽度不应小于10ms。此外,还要注意在复位电路中加上具有低通滤波器特性的电路以防止毛刺噪声的干扰。软件复位则是通过向SERCON816的控制寄存器SWRST位写1来完成。如果SERCON816未能正常复位,则可以通过软件进行复位。
3.3 通信波特率的设置
波特率也可通过硬件或软件来设置。寄存器ENTSBAUD决定着波特率的设置方式。当ENTSBAUD=0时,通常硬件设置;而当ENTSBAUD=1时,通过软件设置,具体见表3,此表是在fmclk=64MHz时的波特率选择。
表3 通信波特率的设置
ENTSBAUD | SBAUD | SBAUD16 | SWSABUD | SWSBUAD16 | 波特率 |
0 | 1 | 1 | X | X | 2M(fsclk/32) |
0 | 0 | 1 | X | X | 4M(fsclk/16) |
1 | X | 1 | 1 | X | 2M(fsclk/32) |
1 | X | 1 | 0 | X | 4M(fsclk/16) |
0 | 1 | 0 | X | X | 8M(fsclk/8) |
0 | 0 | 0 | X | X | 16M(fsclk/4) |
1 | X | 0 | 1 | 1 | 2M(fsclk/32) |
1 | X | 0 | 0 | 1 | 4M(fsclk/16) |
1 | X | 0 | 1 | 0 | 8M(fsclk/8) |
1 | X | 0 | 0 | 0 | 16M(fsclk/4) |
当芯片工作在与SERCON410B兼容的模式下时,如果选择硬件设置波特率则控制寄存器SWSBAUD和SWSBAUD16无效,此时,可以通过引脚SBAUD选择2MHz或4MHz的波特率;如果选择软件设置波特率,则引脚SBAUD无效,此时,可以通过寄存器SWSBAUD选择2MHz或4MHz的波特率。同理,可设置非兼容模式下的波特率。
实际应用中,会出现波特率的实际值与设置值不相等的情况。造成这种情况的实际值与设置值不相等的情况。造成这种情况的原因可能是由于信号变形过大或通讯回路堵塞。此时,在SERCON816内部会产生相同的中断和错误标志,用户由此可以判断错误产生的原因。在通信正常以后,错误标志会自动复位,而中断标志则必须通过软件来清除。
3.4 输入/输出引脚的设置
SERCOS总线一般采用光通讯的方式,以提高抗干扰能力。接口的光电转换通过光电接头自动完成。为了能调节输出电流的大小,使得输出信号具有不同的驱动能力,SERCON816提供了6个输出引脚。这样便可以通过使能输出引脚的多少来调节输出电流的大小。通常将6根输出引脚并联起来,可以得到60mA的最大静态输出电流和120mA的最大动态输出电流。另外还需在每一根输出引脚上外接一个电阻器和并联一个RC电路,其目的是来用电阻器传递静态电流,利用RC电容来稳定信号快速变化时产生的动态电流。
SERCON816与51单片机接口连接如图2所示。
3.5 软件设计
软件设计主要集中在对SERCON816进行初始化。初始化主要包括:RAM报文数据初始化、硬件配置初始化和通讯初始化。其流程图如图3所示。
硬件配置初始化和通讯初始化主要通过设置控制寄存器中的相应位来完成,推荐的寄存器配置见表4,而RAM的初始化则是按照电路要求的数据结构在RAM开辟特定的数据空间。
表4 控制寄存器的配置
硬件配置寄存器参数 | REGMODE | 1 | 报文处理寄存器参数 | ENTMT | 1 |
SYNCWR | 1 | COMBLK0 | 0 | ||
TXDMODE | 0 | COMBLK1 | 0 | ||
ENTXD1_6 | 111111B | PHASO | 1 | ||
TMODE0_2 | 111B | PHAS1 | 2 | ||
REG_06H | 0008H | MSTTCHK | 0 | ||
REG_07H | 0001H | ||||
REG_09H | 0223H | ||||
REG-08H | 4100H | ||||
通讯寄存器参数 | REG_09H | 1 | MCLKST | 6 | |
ENTSBAUD | 0 | TCNTST | 2 | ||
SWBAUD | 1 | JTSYC1 | -1 | ||
MSTEN | 0 | JTSCYC2 | 6 | ||
REPON | 1 | TSCYC0 | 1000 | ||
MCLKDIV | 15 | PHAS12 | 1 |
4 结束语
SERCON816是实现SERCOS通讯的核心电路,使SERCOS总线在国际数控领域得到了很好的应用。笔者近一二年通过对SERCOS总线的研究,在实际的开发过程中深感此芯片的重要性,希望上述心得能为国内相关人士的深入研究提供一个参考。