超过30uS
if ( CH376_RD_DAT_PORT()==CMD_RET_SUCCESS ) return( TRUE ); //成功
}
return( FALSE ); //CH376出错,例如芯片型号错或者处于串口方式或者不支持
}
//*****************************************************
//*NAME: set_freq(void)
//*FUCTION: 设置CH376的进入低速模式
//*输入参数:无
//* 输出参数:无
//*说明: 对于鼠标键盘等低速设备,要先设置ch376为低速模式
//******************************************************
void set_freq(void)
{
CH376_WR_CMD_PORT(0x0b); // 切换使375B进入低速模式
CH376_WR_DAT_PORT(0x17);
CH376_WR_DAT_PORT(0xd8);
}
//*****************************************************
//*NAME: RD_USB_DATA( UINT8 *buf )
//*FUCTION: 从CH376的端点缓冲区读取接收到的数据
//*输入参数: 数据缓冲区的地址
//* 输出参数:返回接收的数据长度
//*说明: 从CH376的主机端点缓冲区中读取接收到的数据
//******************************************************
UINT8 RD_USB_DATA( UINT8 *buf ) {
UINT8 i, len;
CH376_WR_CMD_PORT( CMD01_RD_USB_DATA0 ); // 从CH37X读取数据块
len=CH376_RD_DAT_PORT(); // 后续数据长度
for ( i=0; i!=len; i++ ) *buf++=CH376_RD_DAT_PORT();
return( len );
}
//*****************************************************
//*NAME: WR_USB_DATA( UINT8 len, UINT8 *buf )
//*FUCTION: 往CH376的端点缓冲区写入数据块
//*输入参数: 要写入数据块的长度,写入数据缓冲区的地址
//* 输出参数:无
//*说明: 往CH376的主机端点缓冲区中写入要发送的数据块
//******************************************************
void WR_USB_DATA( UINT8 len, UINT8 *buf ) {
CH376_WR_CMD_PORT( CMD10_WR_HOST_DATA ); // 向CH376的端点缓冲区写入准备发送的数据
CH376_WR_DAT_PORT( len ); // 后续数据长度, len不能大于64
while( len-- ) CH376_WR_DAT_PORT( *buf++ );
}
//*****************************************************
//*NAME: issue_token(UINT8 endptog, UINT8 endp_and_pid )
//*FUCTION: 执行USB事务
//*输入参数: 同步标志,端点号和令牌
//* 输出参数:无
//*说明: 高4位目的端点号, 低4位令牌PID
//******************************************************
void issue_token(UINT8 endptog, UINT8 endp_and_pid ) {
CH376_WR_CMD_PORT( CMD2H_ISSUE_TKN_X );
CH376_WR_DAT_PORT( endptog );
CH376_WR_DAT_PORT( endp_and_pid );
mDelay2uS();
}
//*********************************
********************
//*NAME: wait_interrupt( )
//*FUCTION: 等待中断,并且获取中断状态
//*输入参数: 无
//* 输出参数:中断状态
//*
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科CH376主机控制键盘鼠标程序(4)全文阅读和word下载服务。
相关推荐: