CH554 host USB發(fā)送數(shù)據(jù)函數(shù)和接收函數(shù)

看了CH554的USB參考代碼

但是沒有看出來具體哪里有發(fā)送數(shù)據(jù)函數(shù)和接受數(shù)據(jù)函數(shù)。



void? ? DisableRootHubPort( );? ? ? ? ? ? ? ? ? ? ? ? // 關(guān)閉ROOT-HUB端口,實(shí)際上硬件已經(jīng)自動(dòng)關(guān)閉,此處只是清除一些結(jié)構(gòu)狀態(tài)

UINT8? ?AnalyzeRootHub( void );? ? ? ? ? ? ? ? ? ? ? ?// 分析ROOT-HUB狀態(tài),處理ROOT-HUB端口的設(shè)備插拔事件

// 返回ERR_SUCCESS為沒有情況,返回ERR_USB_CONNECT為檢測到新連接,返回ERR_USB_DISCON為檢測到斷開

void? ? SetHostUsbAddr( UINT8 addr );? ? ? ? ? ? ? ? ?// 設(shè)置USB主機(jī)當(dāng)前操作的USB設(shè)備地址

void? ? SetUsbSpeed( UINT8 FullSpeed );? ? ? ? ? ? ? ?// 設(shè)置當(dāng)前USB速度

void? ? ResetRootHubPort( );? ? ? ? ? ? ? ? ? ? ? ? ? // 檢測到設(shè)備后,復(fù)位相應(yīng)端口的總線,為枚舉設(shè)備準(zhǔn)備,設(shè)置為默認(rèn)為全速

UINT8? ?EnableRootHubPort( );? ? ? ? ? ? ? ? ? ? ? ? ?// 使能ROOT-HUB端口,相應(yīng)的bUH_PORT_EN置1開啟端口,設(shè)備斷開可能導(dǎo)致返回失敗

void? ? SelectHubPort( UINT8 HubPortIndex );// HubPortIndex=0選擇操作指定的ROOT-HUB端口,否則選擇操作指定的ROOT-HUB端口的外部HUB的指定端口

UINT8? ?WaitUSB_Interrupt( void );? ? ? ? ? ? ? ? ? ? // 等待USB中斷

// CH554傳輸事務(wù),輸入目的端點(diǎn)地址/PID令牌,同步標(biāo)志,以20uS為單位的NAK重試總時(shí)間(0則不重試,0xFFFF無限重試),返回0成功,超時(shí)/出錯(cuò)重試

UINT8? ?USBHostTransact( UINT8 endp_pid, UINT8 tog, UINT16 timeout );? // endp_pid: 高4位是token_pid令牌, 低4位是端點(diǎn)地址

UINT8? ?HostCtrlTransfer( PUINT8X DataBuf, PUINT8 RetLen );? // 執(zhí)行控制傳輸,8字節(jié)請(qǐng)求碼在pSetupReq中,DataBuf為可選的收發(fā)緩沖區(qū)

// 如果需要接收和發(fā)送數(shù)據(jù),那么DataBuf需指向有效緩沖區(qū)用于存放后續(xù)數(shù)據(jù),實(shí)際成功收發(fā)的總長度返回保存在ReqLen指向的字節(jié)變量中

void? ? CopySetupReqPkg( PUINT8C pReqPkt );? ? ? ? ? ? // 復(fù)制控制傳輸?shù)恼?qǐng)求包

UINT8? ?CtrlGetDeviceDescr( void );? ? ? ? ? ? ? ? ? ? // 獲取設(shè)備描述符,返回在TxBuffer中

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

UINT8? ?CtrlSetUsbAddress( UINT8 addr );? ? ? ? ? ? ? ?// 設(shè)置USB設(shè)備地址

UINT8? ?CtrlSetUsbConfig( UINT8 cfg );? ? ? ? ? ? ? ? ?// 設(shè)置USB設(shè)備配置

UINT8? ?CtrlSetUsbIntercace( UINT8 cfg );? ? ? ? ? ? ? // 設(shè)置USB設(shè)備接口?

#ifndef DISK_BASE_BUF_LEN

UINT8? ?CtrlClearEndpStall( UINT8 endp );? ? ? ? ? ? ? // 清除端點(diǎn)STALL

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

UINT8? ?HubGetPortStatus( UINT8 HubPortIndex );? ? ? ? // 查詢HUB端口狀態(tài),返回在TxBuffer中

UINT8? ?HubSetPortFeature( UINT8 HubPortIndex, UINT8 FeatureSelt );? // 設(shè)置HUB端口特性

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

UINT8? ?AnalyzeHidIntEndp( PUINT8X buf );? ? ? ? ? ? ? // 從描述符中分析出HID中斷端點(diǎn)的地址

UINT8? ?EnumAllRootDevice( void );? ? ? ? ? ? ? ? ? ? ?// 枚舉所有ROOT-HUB端口的USB設(shè)備

UINT8? ?InitDevOnHub(UINT8 HubPortIndex );? ? ? ? ? ? ?// 初始化枚舉外部HUB后的二級(jí)USB設(shè)備

UINT8? ?EnumHubPort( );? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 枚舉指定ROOT-HUB端口上的外部HUB集線器的各個(gè)端口,檢查各端口有無連接或移除事件并初始化二級(jí)USB設(shè)備

UINT8? ?EnumAllHubPort( void );? ? ? ? ? ? ? ? ? ? ? ? // 枚舉所有ROOT-HUB端口下外部HUB后的二級(jí)USB設(shè)備

UINT16? SearchTypeDevice( UINT8 type );? ? ? ? ? ? ? ? // 在ROOT-HUB以及外部HUB各端口上搜索指定類型的設(shè)備所在的端口號(hào),輸出端口號(hào)為0xFFFF則未搜索到

// 輸出高8位為ROOT-HUB端口號(hào),低8位為外部HUB的端口號(hào),低8位為0則設(shè)備直接在ROOT-HUB端口上

UINT8 SETorOFFNumLock(PUINT8 buf);

#endif

UINT8? ?InitRootDevice( );? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 初始化指定ROOT-HUB端口的USB設(shè)備

void? ? InitUSB_Host( void );? ? ? ? ? ? ? ? ? ? ? ? ? // 初始化USB主機(jī)


UINT8? ?USBHostTransact( UINT8 endp_pid, UINT8 tog, UINT16 timeout );? 是完成單次傳輸數(shù)據(jù),可以是IN 或OUT。數(shù)據(jù)存放在DMA緩沖區(qū)


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频