您的位置: turnitin查重官网> 计算机 >> 计算机网络 >> 计算机网络安全 >有关于主设备软件实现不同运转周期以设备和主设备时钟同步串口通信要求

有关于主设备软件实现不同运转周期以设备和主设备时钟同步串口通信要求

收藏本文 2024-02-29 点赞:22299 浏览:90608 作者:网友投稿原创标记本站原创

摘要:通过对定时中断的灵活运用,软件实现了以VC33DSP为中心处理器的从设备的Tms周期的定时器时钟与主设备2Tms周期的定时器时钟的同步,消除了不同时钟源之间误差的积累,使得从设备与主设备之间的运行拍数始终保持为2:1的关系,保持了系统的稳定。
关键词:VC33;定时中断;串口通信,误差积累
中图分类号:TP311
在为某从设备(处理器为DSPVC33)设计软件的工作中,需要在以下约束下实现与主设备的RS422串口通信:

摘自:毕业论文目录www.udooo.com

(1)主设备以2Tms的运行周期运行,在每个周期中发送一帧固定长度的数据给从设备,且发送数据的周期精度为2Tms±0.02ms,先发后收;(2)从设备以Tms的运行周期运行,在收到主设备的数据后立即返回一帧固定数据给主设备,先收后发。(3)为保持系统稳定,从设备每运行两拍宜更新一次收到的主设备发送的数据。
1分析
从设备串口接收的缓存区足够大,允许从设备软件在接收的数据都进入缓存区后再读取数据。而且从设备自身有运行周期,不宜受到干扰,因此宜采取查询接收的方式接收主设备的数据。
从设备的处理器为VC33,自身带有两个定时器,可以通过起用一个定时器中断,达到从设备以Tms运行的目的。理想情况下,在第一次正确接收到主设备的数据帧后开启Tms定时中断就可以了,时序关系如图1:

图1理想情况主从设备时序关系图
但实际上主设备的时钟计时存在误差,从设备的时钟也存在误差,经过一段时间的误差积累,很难保证从设备以与主设备运行拍数始终保持为2:1的关系一直可靠接收到主设备的数据。可能出现问题的时序图见图2。

图2实际可能的主从设备时序关系图
从图2中可以看到实际的通信中可能会存在当从设备运行到多拍后,随着时钟误差的积累,到6T后从设备进入定时中断程序时,对应的主设备还没有将发送数据帧传输完,这样从设备接收不到完整的数据帧,造成通信出错。
通过计算分析也可以很清楚的看到这个问题:检测设主设备的时钟误差为0.1%(即主设备运行2T时间,实际时间为2.002T),从设备的时钟误差为-0.01%(即从设备运行T时间,实际时间为0.9999T),这样当主设备运行10000拍的时候,实际运行时间为20020T,而从设备运行了约20022拍,两设备之间的运行拍数的对应关系已经改变。
2VC33的定时中断
VC33中有三个与中断有关的寄存器,它们相应的位可控制中断的操作,它们是状态寄存器(ST)、中断使能寄存器(IE)、中断标志寄存器(IF)。(1)状态寄存器中的全局中断使能位GIE置1时,CPU响应相应的中断;该位置0时,所有中断禁止。(2)通过对中断使能寄存器的D8位操作,可以使能或禁止定时器中断。当对D8位写1,则使能定时中断0,当对D8位写0则禁止定时中断0。(3)中断标志寄存器包含了中断标志位,当定时中断0发生时,IF寄存器D8位被置1,从而进入相应的定时中断处理程序。复位时,该寄存器的内容为0。通过软件对D8位置1(IF|=0x0100;)也能引起定时中断0的中断,但应注意前提是IE寄存器已经设置了使能该位中断。
定时器使用三个存储器映射寄存器。功能如下:(1)全局控制寄存器:该寄存器确定了定时器的工作模式,监控定时器的状况,控制定时器I/O引脚的功能。(2)周期寄存器:该寄存器存放预定的计数值,用来指定定时器发出信号的频率。(3)计数寄存器:该寄存器包含了不断增长的计数器的当前值。可以在输入时钟上升沿或下降沿到来的时候增加定时器的值。当它的值等于周期寄存器的值时,计数器被清零,并产生定时中断。通过设置全局控制寄存器的D6和D7位为1可以使定时器复位并开始运行(计数寄存器重新开始计数)。
3设计
针对上述分析,需要消除时间的多拍误差积累,因此设计上以主设备的时钟为基准,从设备每运行两拍后,就与主设备重新时钟同步一次。
同步的实现的关键为灵活运用了VC33定时器中断机制。在主程序中进行查询接收判断,当接收到主设备发送来的一帧完整数据帧即进入定时中断处理程序,这时实际上不是由于定时时间到触发中断引起的,而是通过软件人为设置触发的(通过将VC33中断标志寄存器IF的D8位置1IF|=0x0100;)。
其次是要理清程序运行的状态,比如是第一次接收主设备数据的定时中断处理,还是第二次定时中断处理,在定时中断处理程序中应有判定。当为奇拍时,重新启动定时器并延迟0.2ms(延迟是为了保证能够在从设备在后续的第二次定时中断到来之前接收完正常的主设备通信数据)后再重新启动定时器,这样从设备的定时器就会在每次接收到主设备的正常完整数据帧以后重新启动,相当与对了次表,前2T时间内产生的时钟误差就在重新启动后丢掉,解决了时钟误差积累的问题。主程序简化流程图如图3,其反映了主要的状态判定和设计思路,其中G_iSelfIntF为是否要运行2T周期内的第二次T定时中断处理程序标志,为零表示不运行,为非零表示要运行。

图3主程序简化流程图
实现本方法的同步还有一个需要注意的地方就是需要精确的延迟,如果延迟不精确,可能造成时序错误,从而不能很好的实现时钟同步。因此不宜采用while循环的延迟的方法,这种方法延迟不精确,通过采用嵌入汇编的延迟语句的延迟精度较高,可以达到几十纳秒的量级。
4结论
按照本方法设计实现的从设备软件,经过设备的外场试验的检验,证明了方法是安全可行的。本方法还可以推广到主设备运行周期是从设备的运行周期是多倍的情况下,具有一定程度的适用性。
参考文献:
党瑞荣.TMS320C3X系列DSP原理与开发技术[M].西安:西安电子科技大学出版社,2011.
作者简介:李博(197

7.8-),男,江南机电设计研究所,本科,工程师,研究方向:软件开发与测试。

copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号