基于USB接口的激光陀螺惯导系统数据通讯

时间:2011-04-02来源:网络

1.2 CY7C68013A的固件程序设计
CY7C68013A的固件程序主要用于USB芯片的端点配置、频率设置、数据宽度、可编程标志定义、中断定义及特定功能的8051程序编写等。固件程序主要完成如图2所示的任务流程。

b.JPG


在上述固件程序当中,CY7C68013A的初始化子程序TD_Init()的开发按照以下步骤进行:按图3中的规则配置端点;使CY7C68013A工作在SLAVE FIFO模式,选择BULK传输,使用3个端点EP2、EP4和EP6,全部采用双缓冲方式;3个端点FIFO标志分别定义为:FLGA为EP2的4字节接收可编程标志,FIGB为EP6的满标志,FLGC为EP2的空标志;数据宽度设为16位。

c.JPG


1.3 丢帧问题及解决措施
在导航计算机与PC机间通过USB接口进行了双向高速通讯测试。测试方法如下:PC机向导航计算机传输一个数据包,导航计算机接收后回传,PC机接收后进行正确性校验、传输、回传和校验过程循环进行。测试中发现偶尔有丢帧现象出现。尝试改变上位机中数据采集与后台实时写内存线程的优先级和改变CY7C68013A的端点大小及缓冲级别(如三缓冲、四缓冲)来解决这个问题,但是丢帧现象依然存在。
经过较长时间的分析与验证,找到了问题所在:PC机中运行的Windows操作系统是一个多任务的操作系统,同时运行着多个进程,系统在给每个进程分配时间片时也是有一定的优先级的,优先级高的进程占用时间片较多,如果PC机在执行某些其他进程时占用时间超过了一定的限度,就可能导致该读出的数据没有及时读出,而下一帧数据又已送到缓冲区,覆盖前一帧数据,从而造成丢帧。
解决丢帧的办法是在DSP的内存中设置一个圆形缓冲区,如果发现IN型端点的FIFO已满(说明PC机未及时读走FIFO中数据),则将本帧数据存入圆形缓冲区里,直到FIFO完全为空。
圆形缓冲区的结构如图4所示。

d.JPG


在图4中,sptr为写入数据指针,dptr为发送数据指针。整个圆形缓冲区的大小设置为256 K字(32位)。若按8 K的数据存入速率,可以保存8 s数据。在PC机不能及时读取IN端点FIFO数据的情况下,这个圆形缓冲区可以起到很好的缓冲作用。

1 2 3

关键词: 系统 数据通讯 陀螺 激光 USB 接口 基于

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版