C8051F120与RS422息线的时钟同步技术
引 言
由于指令的速度不断加快,单片机在各个方面的性能大为提高,比如多个单片机之间的时钟同步。Silicon Labs公司的C8051F系列单片机的执行速度最高可以达到100MIPS,这使得更高精度的时钟同步成为可能。时钟同步是一个在多单片机相互配合时经常遇到的问题,主要有两种同步方式——绝对同步和相对同步。绝对同步是指各个控制器和一个标准的时间进行同步,比如北京时间、华盛顿时间等等;而相对时钟同步是指各个单片机和一个相对稳定的时钟进行同步,与外界的时间没有联系。本文主要针对RS422总线组成的网络的高精度时钟同步问题,提出了一种相对时钟同步解决方案。
1 整体框架结构
RS422网络中,多个单片机的连接如图1所示。这是一个典型的“一主多从”式结构:主单片机通过向从单片机发送命令,实现管理功能;从单片机主要执行具体的功能,比如数据采集、D/A转换输出等。为了使多个单片机能够同步工作,需要一种同步方式,所以从单片机不但要实现各自的具体功能,而且还要能够进行多个单片机的时钟同步。本方案设计了从单片机的几种工作状态。R和T分别表示R+、R-和T+、T-。
2 从单片机的状态机
本文重点介绍系统时钟同步功能的实现,但是在实际应用过程中,该系统必定要实现其他的功能,比如数据采集、模拟量输出等。主单片机的作用是控制从单片机工作,所以要使从单片机具有不同的工作状态。本文设计了3种工作状态:准备态、时钟同步态、工作态。3种工作状态之间的相互转换过程如图2所示。图中,①代表主单片机向从单片机发送“工作”命令;②代表主单片机向从单片机发送“时钟同步”命令;③代表主单片机向从单片机发送“工作态向时钟同步态转换”命令;④代表主单片机向从单片机发送“时钟同步态向工作态转换”命令。
准备态是从单片机上电后的工作状态,当主单片机向某一从单片机发送“是否准备好”命令后,若从单片机回复“准备好”,则说明从设备已经处于准备好的状态,可以向时钟同步态和工作态进行转换。如果从单片机处于工作态,主单片机发送“工作态向时钟同步态转换”命令,则从时钟进入时钟同步态;如果从单片机处于时钟同步态,主单片机发送“时钟同步态向工作态转换”命令,则从单片机由时钟同步态转换到工作态。
3 时钟同步设计的基本原理
本方案采用多个C8051F120单片机组成RS422网络。C8051F120单片机具有高达100MIPS的执行速度,也就是1μs可以执行100条单周期指令,所以定时器定时1μs可以达到1%的精度。而RS4.22总线组成的网络是“一主多从”式结构,网络中每个设备都有自己的时钟,时钟采用定时器实现,1μs触发一次。主设备和从设备的时钟偏差产生有两个原因;一是某些随机因素产生的误差;二是由于晶振的运行速度不同引起的误差,此误差的产生主要受温度的影响,而温度又是由工作环境来决定的。本文采用相对时钟同步的方法来减小这种误差的影响。
该方法分为2步:
①主设备每2 s进行一次时钟同步。主设备首先发送报文master_a(该报文本身不含发送时间),之后再发送一帧带有该报文发送时间信息的报文master_b。这样,从设备可以分析出主设备的同步报文的发送时间T1和接收时间T2(如无特殊标注,文中所涉及的时间变量都是以μs为单位的)。从设备再发送一个报文slave_c,并记下这个报文的发送时间T3,主设备接到该报文后记下接收时间T4,并把T4发给从设备,从设备就有了T1、T2、T3、T4的值。由于主设备和从设备都采用同一波特率进行串行通信,所以只要保证主设备的报文和从设备的报文发送的字节数相同,就可以看成主设备和从设备的发送时间和接收时间是相同的,即图3中的T1、T2、T3、T4四点构成的是等腰梯形。所以主设备和从设备之间的时间偏差:
从设备的时间T_Slave减去从设备和主设备之间的偏差△,即校正后的时间。但此时校正后的结果只是改变从设备的时钟误差,并没有改变从时钟的时钟频率。随着时间的增长,这个误差就又会出现,因此想要减小这个误差必须采用进一步的方法。
②进行时钟频率的校正。C8051F120单片机的指令速度很快(可达100MIPS),这就为单片机应用内部定时器实现频率可调时钟创造了有利条件。本文多次测量从设备和主设备之间的时间误差来求取平均值,作为主从时钟在规定时间内的从设备和主设备之间的误差,通过这个误差来修正从设备的时钟频率。具体做法为:测量5次从设备和主设备之间的偏差△1~△5,采用平均值滤波法得到的结果△z作为2 s的时间偏差。
其中,t代表1μs内时钟的偏差量,单位是0.01 μs。只须修改定时器的相应寄存器,就可以达到调整时钟频率的目的。
C8051F120 RS422息线 时钟同步技术 相关文章:
- 嵌入式SoC单片机在雕刻机数控系统中的应用(10-15)
- 基于嵌入式系统的实时控制模块设计方案(09-06)
- 51单片机和CPLD的望远镜伺服控制器设计(11-21)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)