曼海姆大学申请条件-曼海姆大学申请条件
基于
USB
的多串口
测试系统软件设计
张志文
'
,刘美飞李 剑气王剑
2
(
1.
西安工业大学
电子信息工程学院,西安
710032
2
.
中国石油集团测井有限
公< /p>
司长庆事业部,西安
710201
)
摘
要:针对基于
USB
的多串口测试系统,旨在实现
4
个具有
422
接口 的惯导组
件
的同时测试,提高整个测试系统的测试效率
,并不产生数据丢失、混叠等情况。
在综合分析测试需求的基础上,通
过
C
语言编写
USB
控制芯片的固件程序以实 p>
现
串口数据流帧头的检测及数据的接收与上传,上位机采用
多线程、定时器等技
术
实现数据的存储、处理及显示。
实验表明上位机界而显示的数据与处理后的信
号
源数据一致,未丢失数据,实现了传输要求。
关键词:
CY7C68013A
;
多线程;多串口通信;
Visual C++
在现代先进战机中,
惯导系统已成为导航、飞控和火控系统最核心的信息源
,
它的精度直接
影响作战任务的完成与飞行安全。惯性组件(陀螺仪和加速度计)是
整
个惯导系统的核心元件,其精度直接影响整个系统的精度,而温度是影响惯性
< br>组件精度的主要因素之一。惯导系统只有在温度测试中达到预先规定的导航精度
后才能应用于实际。在不同温度下的测试,是一个漫长而耗时的过程,而先前的
测试系统只针对一套惯导进行⑴。于是,能同时测试多套产品的测试系统应运而
生以缩短其测试周期。改进后的测试系统,外困电路简单,只需采用少量的元器
件来搭建,其关键部分为软件设计。
1
测试系统硬件组成
文中被测产品是一种三轴惯导组件,陀螺仪和加速度计
X
、
Y p>
、
Z
轴方向上
的
信息,即正负轴的差值,通过
422
接口输出。文中的设计目标是实时接收< /p>
4
套惯导
组
件
输
出
的
串
口
信
息
,
并
上
传
和
显
示
。
其
硬
件
平
台 p>
由
USB
控
制
芯
片 p>
CY7C68013A
、串口通信芯片和串行
EEPROM
芯片搭建,硬件电路如图
1
所示
,
包
括电压转换电路、串口通信电路和
EEPROM
电路。
'
作者简介:张志文
< br>(
1957-
)
,
男,西安工业大
学教授,主要研充方向为计算机测控技术、智能化仪器
.E-mail
< br>:
zhangzw@xatu.
cdu.
com
图
1
硬件电路框图
Fig. 1 Block diagram of hardware
2
系统软件设计
本文
的软件设计包括三个环节:
芯片的固件程序、
USB
驱动程序和
上位机应用程序三部分。
2. 1
固件程序设计
固件程
序设计的目标就是辅助硬件完成
USB
通信任务,实现预期的设备功
能。
CY7C68013A
芯片的固件程序主要负责 处理上位机发来的各种
USB
设备请
求
,并控制与外围电路进行数据传输
KT,
其主要功能包括以下五点:
(1)
初始化工作。对与串口有关的特殊功能寄存器、全局状态变量等进行初
始化的设置以实现所需的设备功能。
(2)
完成主机对设备的配置任务。包括对设备进行重新列举,即模拟设备的
断开与重新连接;对接收到的设置包进行判断并完成主机设备请求。
(3)
响应中断。
USB
接口在设备列举、响应主机标准请求和厂商请求、数据
传送等过程中
都会向
CPU
申请中断,因此
CPU
必须正确处理 这些中断才能保证
USB
传输的正常进行。
⑷传
输数据。
USB
设备的主要任务就是进行数据的传输,因此固件程序中
< p>就
必须包括对外围电路、夕鄙
FIFO
< p>的读写操作进行控制和对接收和发送数据的
端点
进
行正确的配置的代码,才能完成数据的接收和发送。
固件程序主要由以下三个文件
fw.c, fsp.c
和
isr.c
组成⑸。
fw.c
即为
Cypress
公司针对其
EZ-USB
FX2
系列的
USB
芯片提供的 框架程
序,流程
图如图
2
所示。框架程序实现了芯片初始化、
USB
标准设备请求以及
挂
起下的电源管理,该框架程序不
需添加任何代码,编译后产生的
.HEX
文件下
载到
芯片就能与主机进行基本的
USB
通信,只是不能完 成用户特定的任务。
图
2
框架程序流程图
Fig. 2 Flow chart of the frame
< br>fsp.c
包含设备初始化和串口初始化及各种主机请求响应函数的定义,完成
< p>了
USB
协议方而的通信,包括 上电枚举,重枚举,唤醒以及调用用户程序和控
制命
令等向。
设备初始化包括
,配置好
CY7C68013A
内部的大容量端口
EP2
为
IN
端口,
< p>
批量传输方式
,
1024
字节,< /p>
4
倍缓冲,手动发送模式,此模式便于对固件程序的
控制;串口。和串曰
1
的波特时钟源为高速波特率发生器,默认优先级 ,即串曰
0
优先级高于串口
1,
工作方式为方式
1, 10
位异步收发。
用户程序即框架程序
fw.c
中的
TD_Poll(),
完成帧头的检测和数据的传输 ,
流
程图如图
3,
执行 过程如下:
(1)
判断标志位
f0
与
fl,
当
f0
或< /p>
fl
为
1
时,执行相应的数据检测函数。当
检测
到
Data
。或
< p>Data 1中的数据与发送的帧头相匹配,并之后的
34
个 字节之和
等于校
验和时开始接收数据,分别放入数组<
/p>
bufO
与
bufl
中,否则丢弃继续检测。
(2)
分别判断
bufO> bufl
中的数据是否满
74
字节,满
74
字节后在帧头分别
添
加标志字节
0x30
、
0x31,
以便上位机判断,并存入
EP2FIFO
中
(3)
< p>判断
EP2FIFO
是否满
950
字节,满< /p>
950
字节后将数据批量送入
SIE,
等
< p>待
上位机发
IN
请求,从
USB
数据线读取数据。
NO
将接收到的数据
放入数组
bufl
清
标志位
10
加标志位
0x31
< br>存
入
EP2FIF O
中
往
I .
位机发送数据
图
3
用户程序流程图
Fig.3 Flow chart of the user program
isr.c
是串口中断响应文件,由中断标志位
RI
(RI1)
触发进入,中断程序流
程图
如图
4
所示。串口
0
触发的中断则 进入中断号为
4
的中断程序,执行过程如
下:
(1)
将接收中断标志位
RI
清零。
(2)
将串行缓冲区
(
SBUF0)
中的数据存入数组
Data
。中。
(3)
判断
Data
。是否满
74
字节,满
74
字节则 将
f0
置位。
串口
< /p>
1
触发的中断则进入中断号为
7
的中断程序,执行过 程与串口
0
的中断
程
序相似,只是存放数据的数组为
Datal,
满
74
字节后置位
fl
。
图
4
串口
0
中断程序流程图