我在做一块板子,框图如下: 单片机 《------》 CH375 《------》 USB 串口 U盘
在写程序的时候,我看了PCM给我的介绍的CH375EVT\PUB\MCS51C\MISCELL\CH375EV1.C参考程序.里面的一些子程序我不知道是干嘛用的,也不知道我要[b]实现单片机读U盘内容[/b]是否需要到这些函数,可以解析一下吗?不明白的子程序如下:
/* 对目标USB设备执行控制传输: 获取USB描述符 */ void mCtrlGetDescr( unsigned char type ) { mIntStatus = 0; /* 清中断状态 */ CH375_WR_CMD_PORT( CMD_GET_DESCR ); /* 控制传输-获取描述符 */ CH375_WR_DAT_PORT( type ); /* 0:设备描述符, 1:配置描述符 */ while ( mIntStatus == 0 ); /* 等待操作完成 */ }
/* 对目标USB设备执行控制传输: 设置USB地址 */ void mCtrlSetAddress( unsigned char addr ) { mIntStatus = 0; /* 清中断状态 */ CH375_WR_CMD_PORT( CMD_SET_ADDRESS ); /* 控制传输-设置USB地址 */ CH375_WR_DAT_PORT( addr ); /* 1 - 7eh */ while ( mIntStatus == 0 ); /* 等待操作完成 */ if ( mIntStatus != USB_INT_SUCCESS ) return; /* 操作失败 */ /* 当目标USB设备的地址成功修改后,应该同步修改CH375的USB地址,否则CH375将无法与目标设备通讯 */ CH375_WR_CMD_PORT( CMD_SET_USB_ADDR ); /* 设置CH375的USB地址 */ CH375_WR_DAT_PORT( addr ); /* 修改CH375的USB设备能够立即完成,不会产生中断通知 */ }
/* 对目标USB设备执行控制传输: 设置配置值 */ void mCtrlSetConfig( unsigned char value ) { mIntStatus = 0; /* 清中断状态 */ CH375_WR_CMD_PORT( CMD_SET_CONFIG ); /* 控制传输-设置USB配置 */ CH375_WR_DAT_PORT( value ); while ( mIntStatus == 0 ); /* 等待操作完成 */ }
/* 设置接收的数据同步触发位 DATA0/DATA1 */ void mSetRecvDataTog( unsigned char tog ) /* tog值: 0:清0, 1:置1 */ { CH375_WR_CMD_PORT( CMD_SET_ENDP6 ); /* 设置主机端点的接收器 */ CH375_WR_DAT_PORT( tog ? 0xC0 : 0x80 ); delay2us( ); }
/* 设置发送的数据同步触发位 DATA0/DATA1 */ void mSetSendDataTog( unsigned char tog ) /* tog值: 0:清0, 1:置1 */ { CH375_WR_CMD_PORT( CMD_SET_ENDP7 ); /* 设置主机端点的发送器 */ CH375_WR_DAT_PORT( tog ? 0xC0 : 0x80 ); delay2us( ); }
/* 发出令牌,执行USB事务 */ void mIssueToken( unsigned char endp, unsigned char token ) { mIntStatus = 0; /* 清中断状态 */ CH375_WR_CMD_PORT( CMD_ISSUE_TOKEN ); /* 发出令牌,执行事务 */ CH375_WR_DAT_PORT( endp << 4 | token ); /* 高4位是端点号,低4位是令牌PID */ while ( mIntStatus == 0 ); /* 等待操作完成 */ }