|
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总线的研究,在实际的开发过程中深感此芯片的重要性,希望上述心得能为国内相关人士的深入研究提供一个参考。 |