基于双模式USB接口的多处理器数据采集系统设计
系统工作模式由主控单片机外接键盘动态切换。开机后默认工作于主机模式,等待USB存储设备连接。单片机检测存储设备连接并判断符合要求后,系统可正常测试采集数据,并转存于外接存储设备,供后期导入PC机分析处理。测试条件允许时,也可将系统设置为与PC机直接相连的从机模式。这时,数据采集过程完全由上位机控制,可实现较为复杂的性能参数与故障分析测试,提高工作效率。
3 双模式系统软件设计
使用51系列兼容单片机C语言编程软件Keil uVision3编写单片机程序,完成数据采集、通讯控制、数据处理等功能。主程序流程如图3所示。本文引用地址:https://www.eepw.com.cn/article/187811.htm
3.1 主机模式程序设计
厂家提供了适用于单片机操作U盘的文件级子程序库CH375HF6.LIB,将主机模式下处理USB存储设备的API进行了封装,支持FAT12、FAT16和FAT32文件系统[5]。该文件级子程序库的所有API函数在调用后都有操作状态返回,但不一定有应答数据,API参数在CH375HF6.H文件内进行说明。调用的API子程序主要有:芯片初始化CH375Init( ),查询设备准备好CH375DiskReady(),查询存储设备信息CH375DiskQuery(),新建文件CH375FileCreate(),打开文件CH375FileOpen(),写文件数据CH375ByteWrite(),关闭文件CH375FileClose()等[6]。操作U盘存储采集数据的程序流程如图4所示。
采用Keil编写U盘操作程序时,需要将CH375HF6.LIB库文件和CH375HF6.H添加到项目中。主机模式单片机程序基本框架如下:
CH375_WR_CMD_PORT(CMD_SET_USB_MODE);
//设置USB工作模式
CH375_WR_DAT_PORT(6);
//模式代码,已启用的USB主机模式 DelayuS(20);
//延时
while(CH375DiskConnect( )!=ERR_SUCCESS)
//查询U盘是否连接
DelaymS(200); //延时,等待U盘工作正常
while(CH375DiskReady( )!=ERR_SUCCESS)
//检查U盘是否准备好
……
CH375DiskQuery( );
//查询U盘信息:总容量、剩余容量、文件系统
……
while ( i!=ERR_SUCCESS )
{strcpy( mCmdParam.Open.mPathName, TEST );
//目录名
i=CH375FileOpen( );} //打开目录
while(i!=ERR_SUCCESS)
{strcpy(mCmdParam.Open.mPathName,TestData);
//输入文件名
i=CH375FileOpen( ); } //打开文件
……
mCmdParam.Write.mSectorCount=SecCount;
//写入所有扇区的数据
current_buffer= FILE_DATA_BUF[0];
//设置存放数据的缓冲区的起始地址
CH375FileWrite( ); //向文件写入数据
……
CH375FileClose( ); //关闭文件
评论