CH554 host USB发送数据函数和接收函数

看了CH554的USB参考代码

但是没有看出来具体哪里有发送数据函数和接受数据函数。



void    DisableRootHubPort( );                        // 关闭ROOT-HUB端口,实际上硬件已经自动关闭,此处只是清除一些结构状态

UINT8   AnalyzeRootHub( void );                       // 分析ROOT-HUB状态,处理ROOT-HUB端口的设备插拔事件

// 返回ERR_SUCCESS为没有情况,返回ERR_USB_CONNECT为检测到新连接,返回ERR_USB_DISCON为检测到断开

void    SetHostUsbAddr( UINT8 addr );                 // 设置USB主机当前操作的USB设备地址

void    SetUsbSpeed( UINT8 FullSpeed );               // 设置当前USB速度

void    ResetRootHubPort( );                          // 检测到设备后,复位相应端口的总线,为枚举设备准备,设置为默认为全速

UINT8   EnableRootHubPort( );                         // 使能ROOT-HUB端口,相应的bUH_PORT_EN置1开启端口,设备断开可能导致返回失败

void    SelectHubPort( UINT8 HubPortIndex );// HubPortIndex=0选择操作指定的ROOT-HUB端口,否则选择操作指定的ROOT-HUB端口的外部HUB的指定端口

UINT8   WaitUSB_Interrupt( void );                    // 等待USB中断

// CH554传输事务,输入目的端点地址/PID令牌,同步标志,以20uS为单位的NAK重试总时间(0则不重试,0xFFFF无限重试),返回0成功,超时/出错重试

UINT8   USBHostTransact( UINT8 endp_pid, UINT8 tog, UINT16 timeout );  // endp_pid: 高4位是token_pid令牌, 低4位是端点地址

UINT8   HostCtrlTransfer( PUINT8X DataBuf, PUINT8 RetLen );  // 执行控制传输,8字节请求码在pSetupReq中,DataBuf为可选的收发缓冲区

// 如果需要接收和发送数据,那么DataBuf需指向有效缓冲区用于存放后续数据,实际成功收发的总长度返回保存在ReqLen指向的字节变量中

void    CopySetupReqPkg( PUINT8C pReqPkt );            // 复制控制传输的请求包

UINT8   CtrlGetDeviceDescr( void );                    // 获取设备描述符,返回在TxBuffer中

UINT8   CtrlGetConfigDescr( void );                    // 获取配置描述符,返回在TxBuffer中

UINT8   CtrlSetUsbAddress( UINT8 addr );               // 设置USB设备地址

UINT8   CtrlSetUsbConfig( UINT8 cfg );                 // 设置USB设备配置

UINT8   CtrlSetUsbIntercace( UINT8 cfg );              // 设置USB设备接口 

#ifndef DISK_BASE_BUF_LEN

UINT8   CtrlClearEndpStall( UINT8 endp );              // 清除端点STALL

UINT8   CtrlGetHubDescr( void );                       // 获取HUB描述符,返回在TxBuffer中

UINT8   HubGetPortStatus( UINT8 HubPortIndex );        // 查询HUB端口状态,返回在TxBuffer中

UINT8   HubSetPortFeature( UINT8 HubPortIndex, UINT8 FeatureSelt );  // 设置HUB端口特性

UINT8   HubClearPortFeature( UINT8 HubPortIndex, UINT8 FeatureSelt );  // 清除HUB端口特性

UINT8   AnalyzeHidIntEndp( PUINT8X buf );              // 从描述符中分析出HID中断端点的地址

UINT8   EnumAllRootDevice( void );                     // 枚举所有ROOT-HUB端口的USB设备

UINT8   InitDevOnHub(UINT8 HubPortIndex );             // 初始化枚举外部HUB后的二级USB设备

UINT8   EnumHubPort( );                                // 枚举指定ROOT-HUB端口上的外部HUB集线器的各个端口,检查各端口有无连接或移除事件并初始化二级USB设备

UINT8   EnumAllHubPort( void );                        // 枚举所有ROOT-HUB端口下外部HUB后的二级USB设备

UINT16  SearchTypeDevice( UINT8 type );                // 在ROOT-HUB以及外部HUB各端口上搜索指定类型的设备所在的端口号,输出端口号为0xFFFF则未搜索到

// 输出高8位为ROOT-HUB端口号,低8位为外部HUB的端口号,低8位为0则设备直接在ROOT-HUB端口上

UINT8 SETorOFFNumLock(PUINT8 buf);

#endif

UINT8   InitRootDevice( );                             // 初始化指定ROOT-HUB端口的USB设备

void    InitUSB_Host( void );                          // 初始化USB主机


UINT8   USBHostTransact( UINT8 endp_pid, UINT8 tog, UINT16 timeout );  是完成单次传输数据,可以是IN 或OUT。数据存放在DMA缓冲区


只有登录才能回复,可以选择微信账号登录