WhyCan Forum(哇酷开发者社区)

我们能随心所欲"有问题百度(谷歌)一下", 这得感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn

您尚未登录。

#1 2020-02-14 11:42:35

田埂上的梦
会员
注册时间: 2019-08-30
累计积分: 5

V3s裸机usb otg host枚举成功,读数据异常

硬件环境:芯片v3s ,用的Lichee Nano开发板
软件环境:裸机
问题:
usb otg作host(地址:0x01C1 9000不是OHCI)的时候插入HID设备能够枚举成功并且获取设备的PID与VID,
但是枚举成功以后端点2会一直循环触发INT中断,无法接受HID发送过来的数据。

日志:自己猜测有问题的地方注解

start v3s  usb host 
controllerId:0
usbHostPointer->pUSB_Otg:0x1c19000
open_usb_clock
pDebugOTG->USBC_REG_HSEOF|0x00
pDebugOTG->FIFOx|0x1c19000
pDebugOTG->Power|40:0x20
pDebugOTG->DevCtl|41:0x98
pDebugOTG->Index|42:0x03
pDebugOTG->VEND0|43:0x01
pDebugOTG->IntrTx1|44:0x00
pDebugOTG->IntrTx2|45:0x00
pDebugOTG->IntrRx1|46:0x00
pDebugOTG->IntrRx2|47:0x00
pDebugOTG->InTrTx1E|48:0x00
pDebugOTG->InTrTx2E|49:0x00
pDebugOTG->InTrRx1E|4a:0x00
pDebugOTG->InTrRx2E|4b:0x00
pDebugOTG->IntrUSBE|50:0x3e
pDebugOTG->Frame1|54:0x00
pDebugOTG->Frame2|55:0x00
pDebugOTG->TxMaxP1|80:0x00
pDebugOTG->TxMaxP2|81:0x00
pDebugOTG->CtrlSts0_Union.CSR0|82:0x00
pDebugOTG->CtrlSts0_Union.TxCSR1|82:0x00
pDebugOTG->CtrlSts1_Union.CSR02|83:0x00
pDebugOTG->CtrlSts1_Union.TxCSR2|83:0x00
pDebugOTG->RxMaxP1|84:0x00
pDebugOTG->RxMaxP2|85:0x00
pDebugOTG->RxCSR1|86:0x00
pDebugOTG->RxCSR2|87:0x00
pDebugOTG->Count_Union.Count0|88:0x00
pDebugOTG->Count_Union.RxCount1|88:0x00
pDebugOTG->RxCount2|89:0x00
pDebugOTG->TxType|8c:0x00
pDebugOTG->IntvNAKLmt0_Union.NAKLmt0|8d:0x00
pDebugOTG->IntvNAKLmt0_Union.TxIntv|8d:0x00
pDebugOTG->RxType|8e:0x00
pDebugOTG->RxIntv|8f:0x00
pDebugOTG->DyTxFIFO1|90:0x10
pDebugOTG->DyTxFIFO2|92:0x60
pDebugOTG->DyRxFIFO1|94:0x00
pDebugOTG->FIFO_Union.DyRxFIFO2|96:0x60
pDebugOTG->FIFO_Union.FIFOSize|96:0x60
pDebugOTG->FAddr|98:0x00
host init done

pDebugOTG->USBC_REG_HSEOF|0x00
pDebugOTG->FIFOx|0x1c19000
pDebugOTG->Power|40:0x60
pDebugOTG->DevCtl|41:0x19
pDebugOTG->Index|42:0x03
pDebugOTG->VEND0|43:0x01
pDebugOTG->IntrTx1|44:0x00
pDebugOTG->IntrTx2|45:0x00
pDebugOTG->IntrRx1|46:0x00
pDebugOTG->IntrRx2|47:0x00
pDebugOTG->InTrTx1E|48:0x00
pDebugOTG->InTrTx2E|49:0x00
pDebugOTG->InTrRx1E|4a:0x00
pDebugOTG->InTrRx2E|4b:0x00
pDebugOTG->IntrUSBE|50:0x3e
pDebugOTG->Frame1|54:0x00
pDebugOTG->Frame2|55:0x00
pDebugOTG->TxMaxP1|80:0x00
pDebugOTG->TxMaxP2|81:0x00
pDebugOTG->CtrlSts0_Union.CSR0|82:0x00
pDebugOTG->CtrlSts0_Union.TxCSR1|82:0x00
pDebugOTG->CtrlSts1_Union.CSR02|83:0x00
pDebugOTG->CtrlSts1_Union.TxCSR2|83:0x00
pDebugOTG->RxMaxP1|84:0x00
pDebugOTG->RxMaxP2|85:0x00
pDebugOTG->RxCSR1|86:0x00
pDebugOTG->RxCSR2|87:0x00
pDebugOTG->Count_Union.Count0|88:0x00
pDebugOTG->Count_Union.RxCount1|88:0x00
USB_OTG_INTRUSB_CON 


pDebugOTG->RxCount2|89:0x00
pDebugOTG->TxType|8c:0x00
pDebugOTG->IntvNAKLmt0_Union.NAKLmt0|8d:0x00
pDebugOTG->IntvNAKLmt0_Union.TxIntv|8d:0x00
pDebugOTG->RxType|8e:0x00
pDebugOTG->RxIntv|8f:0x00
pDebugOTG->DyTxFIFO1|90:0x00
pDebugOTG->DyTxFIFO2|92:0x00
pDebugOTG->DyRxFIFO1|94:0x00
pDebugOTG->FIFO_Union.DyRxFIFO2|96:0x00
pDebugOTG->FIFO_Union.FIFOSize|96:0x00
pDebugOTG->FAddr|98:0x00
usb attach event 

Full Speed Device connected 

获取描述符
write[8]:80-06-00-01-00-00-08-00-

in epnum=0,epint=0x00
transferResult = 8 

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=8
read[8]:12-01-00-02-00-00-00-40-
transferResult = 8 
write[0]:

in epnum=0,epint=0x00
transferResult = 0 
设置地址
write[8]:00-05-01-00-00-00-00-00-

in epnum=0,epint=0x00
transferResult = 8 

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=0
read[0]:
transferResult = 0 
获取描述符
write[8]:80-06-00-01-00-00-12-00-

in epnum=0,epint=0x00
transferResult = 8 

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=18
read[18]:12-01-00-02-00-00-00-40-84-04-51-57-00-02-01-02-03-01-
transferResult = 18 
write[0]:

in epnum=0,epint=0x00
transferResult = 0 
获取9个字节的配置状态
write[8]:80-06-00-02-00-00-09-00-

in epnum=0,epint=0x00
transferResult = 8 

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=9
read[9]:09-02-29-00-01-01-00-e0-32-
transferResult = 9 
write[0]:

in epnum=0,epint=0x00
transferResult = 0 
配置状态
write[8]:80-06-00-02-00-00-29-00-

in epnum=0,epint=0x00
transferResult = 8 

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=41
read[41]:09-02-29-00-01-01-00-e0-32-09-04-00-00-02-03-01-01-00-09-21-11-01-00-01-22-3f-00-07-05-81-03-40-00-03-07-05-01-03-40-00-03-
transferResult = 41 
write[0]:

in epnum=0,epint=0x00
transferResult = 0 
设置配置状态
write[8]:00-09-01-00-00-00-00-00-

in epnum=0,epint=0x00
transferResult = 8 

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=0
read[0]:
transferResult = 0 
枚举完成
pDebugOTG->USBC_REG_HSEOF|0x00
pDebugOTG->FIFOx|0x1c19000
pDebugOTG->Power|40:0x60
pDebugOTG->DevCtl|41:0x5d
pDebugOTG->Index|42:0x00
pDebugOTG->VEND0|43:0x01
pDebugOTG->IntrTx1|44:0x00
pDebugOTG->IntrTx2|45:0x00
pDebugOTG->IntrRx1|46:0x00
pDebugOTG->IntrRx2|47:0x00
pDebugOTG->InTrTx1E|48:0x00
pDebugOTG->InTrTx2E|49:0x00
pDebugOTG->InTrRx1E|4a:0x00
pDebugOTG->InTrRx2E|4b:0x00
pDebugOTG->IntrUSBE|50:0x3e
pDebugOTG->Frame1|54:0xb2
pDebugOTG->Frame2|55:0x01
pDebugOTG->TxMaxP1|80:0x00
pDebugOTG->TxMaxP2|81:0x00
pDebugOTG->CtrlSts0_Union.CSR0|82:0x00
pDebugOTG->CtrlSts0_Union.TxCSR1|82:0x00
pDebugOTG->CtrlSts1_Union.CSR02|83:0x00
pDebugOTG->CtrlSts1_Union.TxCSR2|83:0x00
pDebugOTG->RxMaxP1|84:0x00
pDebugOTG->RxMaxP2|85:0x00
pDebugOTG->RxCSR1|86:0x00
pDebugOTG->RxCSR2|87:0x00
pDebugOTG->Count_Union.Count0|88:0x00
pDebugOTG->Count_Union.RxCount1|88:0x00
pDebugOTG->RxCount2|89:0x00
pDebugOTG->TxType|8c:0x00

//这里NAK超时是不是应该不为零
pDebugOTG->IntvNAKLmt0_Union.NAKLmt0|8d:0x00
pDebugOTG->IntvNAKLmt0_Union.TxIntv|8d:0x00

pDebugOTG->RxType|8e:0x00
pDebugOTG->RxIntv|8f:0x00
pDebugOTG->DyTxFIFO1|90:0x00
pDebugOTG->DyTxFIFO2|92:0x00
pDebugOTG->DyRxFIFO1|94:0x00
pDebugOTG->FIFO_Union.DyRxFIFO2|96:0x00
pDebugOTG->FIFO_Union.FIFOSize|96:0x00
pDebugOTG->FAddr|98:0x01
hid keyboard attached:pid=0x5751vid=0x484 address=1

keyboard attached

write[8]:21-0a-00-00-00-00-00-00-

in epnum=0,epint=0x00
transferResult = 8 

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=0
read[0]:
transferResult = 0 
write[8]:81-06-00-22-00-00-3f-00-

in epnum=0,epint=0x00
transferResult = 8 

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=63
read[63]:05-01-09-06-a1-01-05-07-19-e0-29-e7-15-00-25-01-75-01-95-08-81-02-95-01-75-08-81-03-95-05-75-01-05-08-19-01-29-05-91-02-95-01-75-03-91-03-95-06-75-08-15-00-25-ff-05-07-19-00-29-65-81-00-c0-
transferResult = 63 
write[0]:

in epnum=0,epint=0x00
transferResult = 0 
write[8]:21-0b-01-00-00-00-00-00-

in epnum=0,epint=0x00
/*这里中断没有SETUPPKT位,SETUPPKT位回去设置Naklimit0*/

transferResult = 8 

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=0
read[0]:
transferResult = 0 
endpoint type 3, direction: 1//按道理来说我从机没有发送数据给主机的时候会停在这里,不会循环触发下面的读数据中断


/*下面端点2一直都是循环触发中断,但事实上我从机没有发送任何数据*/
/*
数据手册描述RxCSR1 = 0x04  = 位2 Error
The USB sets this bit when 3 attempts have been made to receive a packet and no data packet has
been received. The CPU should clear this bit. An interrupt is generated when the bit is set.
Note: This bit is only valid when the Rx endpoint is operating in Bulk or Interrupt mode. In ISO mode, it always
returns zero.
*/
in epnum=2,epint=0x04
4 : 0x4 
2 2 

transferResult = -512 
endpoint type 3, direction: 1 


in epnum=2,epint=0x04
4 : 0x4 
2 2 

transferResult = -512 
endpoint type 3, direction: 1 


in epnum=2,epint=0x04
4 : 0x4 
2 2 

transferResult = -512 
endpoint type 3, direction: 1 


in epnum=2,epint=0x04
4 : 0x4 
2 2 

transferResult = -512 
endpoint type 3, direction: 1 


in epnum=2,epint=0x04
4 : 0x4 
2 2 

transferResult = -512 
endpoint type 3, direction: 1 


in epnum=2,epint=0x04
4 : 0x4 
2 2 

transferResult = -512 
endpoint type 3, direction: 1 





/********************************************我在其他平台下正常日志********************************************/
pDebugOTG->FAddr|0x50000000
pDebugOTG->Power|01:0x60
pDebugOTG->DevCtl|0f:0x0d
pDebugOTG->Index|0e:0x03
pDebugOTG->IntrTx1|02:0x01
pDebugOTG->IntrTx2|03:0x00
pDebugOTG->IntrRx1|04:0x00
pDebugOTG->IntrRx2|05:0x00
pDebugOTG->InTrTx1E|07:0x0f
pDebugOTG->InTrTx2E|08:0x00
pDebugOTG->InTrRx1E|09:0x0e
pDebugOTG->InTrRx2E|0a:0x00
pDebugOTG->IntrUSBE|0b:0x3e
pDebugOTG->Frame1|0c:0x00
pDebugOTG->Frame2|0d:0x00
pDebugOTG->TxMaxP1|10:0x00
pDebugOTG->CtrlSts0_Union.CSR0|11:0x00
pDebugOTG->CtrlSts0_Union.TxCSR1|11:0x00
pDebugOTG->CtrlSts1_Union.CSR02|12:0x00
pDebugOTG->CtrlSts1_Union.TxCSR2|12:0x00
pDebugOTG->RxMaxP1|13:0x00
pDebugOTG->RxCSR1|14:0x00
pDebugOTG->RxCSR2|15:0x00
pDebugOTG->Count_Union.Count0|16:0x00
pDebugOTG->Count_Union.RxCount1|16:0x00
pDebugOTG->RxCount2|17:0x00
pDebugOTG->TxType|18:0x00
pDebugOTG->IntvNaKLmt0_Union.NAKLmt0|19:0x00
pDebugOTG->IntvNaKLmt0_Union.TxIntv|19:0x00
pDebugOTG->RxType|1a:0x00
pDebugOTG->RxIntv|1b:0x00
pDebugOTG->DyTxFIFO1|1c:0x50
pDebugOTG->DyTxFIFO2|1d:0x60
pDebugOTG->DyRxFIFO1|1e:0x60
pDebugOTG->FIFO_Union.DyRxFIFO2|1f:0x60
pDebugOTG->FIFO_Union.FIFOSize|1f:0x60
pDebugOTG->Faddr|00:0x00
host0init done

USB_OTG_INTRUSB_CON 


in0epnum=0,epint=0x00
pDebugOTG->Faddr|0x50000000
pDebugOTG->Power|01:0x60
pDebugOTG->DevCtl|0f:0x4d
pDebugOTG->Index|0e:0x00
pDebugOTG->IntrTx1|02:0x00
pDebugOTG->IntrTx2|03:0x00
pDebugOTG->IntrRx1|04:0x00
pDebugOTG->IntrRx2|05:0x00
pDebugOTG->InTrTx1E|07:0x0f
pDebugOTG->InTrTx2E|08:0x00
pDebugOTG->InTrRx1E|09:0x0e
pDebugOTG->InTrRx2E|0a:0x00
pDebugOTG->IntrUSBE|0b:0x3e
pDebugOTG->Frame1|0c:0x00
pDebugOTG->Frame2|0d:0x00
pDebugOTG->TxMaxP1|10:0x00
pDebugOTG->CtrlSts0_Union.CSR0|11:0x00
pDebugOTG->CtrlSts0_Union.TxCSR1|11:0x00
pDebugOTG->CtrlSts1_Union.CSR02|12:0x00
pDebugOTG->CtrlSts1_Union.TxCSR2|12:0x00
pDebugOTG->RxMaxP1|13:0x00
pDebugOTG->RxCSR1|14:0x00
pDebugOTG->RxCSR2|15:0x00
pDebugOTG->Count_Union.Count0|16:0x00
pDebugOTG->Count_Union.RxCount1|16:0x00
pDebugOTG->RxCount2|17:0x00
pDebugOTG->TxType|18:0x00
pDebugOTG->IntvNaKLmt0_Union.NAKLmt0|19:0x00
pDebugOTG->IntvNaKLmt0_Union.TxIntv|19:0x00
pDebugOTG->RxType|1a:0x00
pDebugOTG->RxIntv|1b:0x00
pDebugOTG->DyTxFIFO1|1c:0x00
pDebugOTG->DyTxFIFO2|1d:0x00
pDebugOTG->DyRxFIFO1|1e:0x00
pDebugOTG->FIFO_Union.DyRxFIFO2|1f:0x00
pDebugOTG->FIFO_Union.FIFOSize|1f:0x00
pDebugOTG->Faddr|00:0x00
usb attach event 

Full0Speed0Device0connected0

process0enumeration0state machine

获取描述符
write[8]:80-06-00-01-00-00-08-00-

in0epnum=0,epint=0x08
USB_OTG_CSR0_SETUPPKT
transferResult0=08 

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=8
read[8]:12-01-00-02-00-00-00-40-
transferResult0= 80
write[0]:

in epnum=0,epint=0x40
USB_OTG_CSR0_STaTUSPKT
transferResult0= 00
process0the0new state

设置地址
write[8]:00-05-01-00-00-00-00-00-

in0epnum=0,epint=0x08
USB_OTG_CSR0_SETUPPKT
transferResult =080

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=0
read[0]:
transferResult0=00 
process the0new0state

获取描述符
write[8]:80-06-00-01-00-00-12-00-

in epnum=0,epint=0x08
USB_OTG_CSR0_SETUPPKT
transferResult =080

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=18
read[18]:12-01-00-02-00-00-00-40-84-04-51-57-00-02-01-02-03-01-
transferResult0=018 
write[0]:

in epnum=0,epint=0x40
USB_OTG_CSR0_STaTUSPKT
transferResult0=00 
process the0new0state

获取9个字节的配置状态
write[8]:80-06-00-02-00-00-09-00-

in0epnum=0,epint=0x08
USB_OTG_CSR0_SETUPPKT
transferResult =080

in epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=9
read[9]:09-02-29-00-01-01-00-e0-32-
transferResult =090
write[0]:

in0epnum=0,epint=0x40
USB_OTG_CSR0_STATUSPKT
transferResult =000
process0the new0state

配置状态
write[8]:80-06-00-02-00-00-29-00-

in epnum=0,epint=0x08
USB_OTG_CSR0_SETUPPKT
transferResult0= 80

in0epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=41
read[41]:09-02-29-00-01-01-00-e0-32-09-04-00-00-02-03-01-01-00-09-21-11-01-00-01-22-3f-00-07-05-81-03-40-00-03-07-05-01-03-40-00-03-
transferResult0= 410
write[0]:

in0epnum=0,epint=0x40
USB_OTG_CSR0_STaTUSPKT
transferResult =000
process0the0new0state

设置配置状态
write[8]:00-09-01-00-00-00-00-00-

in0epnum=0,epint=0x08
USB_OTG_CSR0_SETUPPKT
transferResult0= 80

in0epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=0
read[0]:
transferResult0=000
process0the new0state

枚举完成
pDebugOTG->Faddr|0x50000000
pDebugOTG->Power|01:0x60
pDebugOTG->DevCtl|0f:0x4d
pDebugOTG->Index|0e:0x00
pDebugOTG->IntrTx1|02:0x00
pDebugOTG->IntrTx2|03:0x00
pDebugOTG->IntrRx1|04:0x00
pDebugOTG->IntrRx2|05:0x00
pDebugOTG->InTrTx1E|07:0x0f
pDebugOTG->InTrTx2E|08:0x00
pDebugOTG->InTrRx1E|09:0x0e
pDebugOTG->InTrRx2E|0a:0x00
pDebugOTG->IntrUSBE|0b:0x3e
pDebugOTG->Frame1|0c:0x15
pDebugOTG->Frame2|0d:0x02
pDebugOTG->TxMaxP1|10:0x00
pDebugOTG->CtrlSts0_Union.CSR0|11:0x00
pDebugOTG->CtrlSts0_Union.TxCSR1|11:0x00
pDebugOTG->CtrlSts1_Union.CSR02|12:0x00
pDebugOTG->CtrlSts1_Union.TxCSR2|12:0x00
pDebugOTG->RxMaxP1|13:0x00
pDebugOTG->RxCSR1|14:0x00
pDebugOTG->RxCSR2|15:0x00
pDebugOTG->Count_Union.Count0|16:0x00
pDebugOTG->Count_Union.RxCount1|16:0x00
pDebugOTG->RxCount2|17:0x00
pDebugOTG->TxType|18:0x00
pDebugOTG->IntvNAKLmt0_Union.NaKLmt0|19:0xc8
pDebugOTG->IntvNaKLmt0_Union.TxIntv|19:0xc8
pDebugOTG->RxType|1a:0x00
pDebugOTG->RxIntv|1b:0x00
pDebugOTG->DyTxFIFO1|1c:0x00
pDebugOTG->DyTxFIFO2|1d:0x00
pDebugOTG->DyRxFIFO1|1e:0x00
pDebugOTG->FIFO_Union.DyRxFIFO2|1f:0x00
pDebugOTG->FIFO_Union.FIFOSize|1f:0x00
pDebugOTG->Faddr|00:0x01
hid0keyboard attached:pid=0x5751vid=0x484 address=1

keyboard attached

write[8]:21-0a-00-00-00-00-00-00-

in0epnum=0,epint=0x08
USB_OTG_CSR0_SETUPPKT
transferResult =080

in0epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=0
read[0]:
transferResult0= 00
write[8]:81-06-00-22-00-00-3f-00-

in epnum=0,epint=0x08
USB_OTG_CSR0_SETUPPKT
transferResult =080

in0epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=63
read[63]:05-01-09-06-a1-01-05-07-19-e0-29-e7-15-00-25-01-75-01-95-08-81-02-95-01-75-08-81-03-95-05-75-01-05-08-19-01-29-05-91-02-95-01-75-03-91-03-95-06-75-08-15-00-25-ff-05-07-19-00-29-65-81-00-c0-
transferResult =063 
write[0]:

in0epnum=0,epint=0x40
USB_OTG_CSR0_STaTUSPKT
transferResult0=00 
write[8]:21-0b-01-00-00-00-00-00-

in0epnum=0,epint=0x08
USB_OTG_CSR0_SETUPPKT
transferResult0= 80

in0epnum=0,epint=0x01
USB_OTG_CSR0_RXPKTRDY
cnt=0
read[0]:
transferResult =000
endpoint0type03,0direction:01 



/********上面是插入HID设备没有发送数据就停在这里,发送数据就进来下面中断读数据****************/
in epnum=2,epint=0x03
read[8]:00-00-22-00-00-00-00-00-
2020

transferResult = 80
5endpoint type03, direction: 1 


in epnum=2,epint=0x03
read[8]:00-00-25-00-00-00-00-00-
2020

transferResult0=080
8endpoint0type03, direction: 1 


in epnum=2,epint=0x03
read[8]:00-00-23-00-00-00-00-00-
2 2 

离线

#2 2020-02-14 15:45:16

微凉VeiLiang
会员
注册时间: 2018-10-28
累计积分: 333
个人网站

Re: V3s裸机usb otg host枚举成功,读数据异常

关注中。。。

离线

#3 2020-02-15 11:00:00

田埂上的梦
会员
注册时间: 2019-08-30
累计积分: 5

Re: V3s裸机usb otg host枚举成功,读数据异常

自顶。。。。

离线

#4 2020-02-17 16:55:13

田埂上的梦
会员
注册时间: 2019-08-30
累计积分: 5

Re: V3s裸机usb otg host枚举成功,读数据异常

自顶。。。。

离线

#5 2020-02-29 12:03:43

微凉VeiLiang
会员
注册时间: 2018-10-28
累计积分: 333
个人网站

Re: V3s裸机usb otg host枚举成功,读数据异常

已经和楼主解决
这里说一下全志musb的坑
_______________________________
usb otg 做主机发送请求到设备时候,地址设置分两个寄存器的
一个是端点0和TX类请求,设置地址用的寄存器是0x98偏移的FADDR
另外一个是数据端点RX也就是IN请求,设置地址用的寄存器是0x9C偏移的RXFADDR
_______________________________
楼主的问题是枚举成功后数据端点发送IN请求请求数据的时候,地址设置还是设置FADDR,导致地址不对,设备不响应然后进入ERROR中断

离线

#6 2020-06-01 06:05:25

hoel
会员
注册时间: 2019-06-15
累计积分: 59

Re: V3s裸机usb otg host枚举成功,读数据异常

微凉VeiLiang 说:

已经和楼主解决
这里说一下全志musb的坑
_______________________________
usb otg 做主机发送请求到设备时候,地址设置分两个寄存器的
一个是端点0和TX类请求,设置地址用的寄存器是0x98偏移的FADDR
另外一个是数据端点RX也就是IN请求,设置地址用的寄存器是0x9C偏移的RXFADDR
_______________________________
楼主的问题是枚举成功后数据端点发送IN请求请求数据的时候,地址设置还是设置FADDR,导致地址不对,设备不响应然后进入ERROR中断

您好,
您可以共享V3S的USB-HOST吗? 我花了很多时间尝试为F1C100S移植USB HOST,但仍然无法正常工作。 我认为V3S应该差不多。 如果我改变低水平的领域,它应该工作。

最近编辑记录 hoel (2020-06-01 06:14:32)

离线

#7 2020-06-04 11:01:49

chenshengwei
会员
注册时间: 2020-06-04
累计积分: 7

Re: V3s裸机usb otg host枚举成功,读数据异常

谁有单独的USB OTG的代码?

离线

#8 2020-06-04 21:22:13

hoel
会员
注册时间: 2019-06-15
累计积分: 59

Re: V3s裸机usb otg host枚举成功,读数据异常

chenshengwei 说:

谁有单独的USB OTG的代码?


九霄云外有裸机USB HOST的代码,但他拒绝分享。 我们都在努力使裸露的USB HOST成为现实,但目前没有任何进展(哭泣)
如果有人知道,请帮助我们,我们希望F1C100S上的裸机USB HOST造福所有人。

离线

#9 2020-06-04 21:28:25

hoel
会员
注册时间: 2019-06-15
累计积分: 59

Re: V3s裸机usb otg host枚举成功,读数据异常

田埂上的梦 说:

硬件环境:芯片v3s ,用的Lichee Nano开发板
软件环境:裸机
问题:
usb otg作host(地址:0x01C1 9000不是OHCI)的时候插入HID设备能够枚举成功并且获取设备的PID与VID,
但是枚举成功以后端点2会一直循环触发INT中断,无法接受HID发送过来的数据。

您可以分享您的代码吗? 也许会有助于集体的努力

离线

#10 2020-06-04 21:35:21

起个名字好难
会员
注册时间: 2020-04-16
累计积分: 2

Re: V3s裸机usb otg host枚举成功,读数据异常

hoel 说:

您可以分享您的代码吗? 也许会有助于集体的努力

u-boot 支持 S3/V3s 的 usb 吧, 或许可以从 u-boot 扣代码?

离线

#11 2020-06-04 21:38:40

hoel
会员
注册时间: 2019-06-15
累计积分: 59

Re: V3s裸机usb otg host枚举成功,读数据异常

起个名字好难 说:

u-boot 支持 S3/V3s 的 usb 吧, 或许可以从 u-boot 扣代码?

我见过这个uboot,问题是将u-boot的USB堆栈移植到裸机似乎很难实现,但是是的,这是目标。
我认为第一步是使U-boot与F1C100S的USB配合使用。 有人做到了吗? 我已经在F1C100S上尝试过USB引导V3S的u-boot,但它当然不起作用

离线

#12 2020-06-04 21:42:16

起个名字好难
会员
注册时间: 2020-04-16
累计积分: 2

Re: V3s裸机usb otg host枚举成功,读数据异常

hoel 说:

我见过这个uboot,问题是将u-boot的USB堆栈移植到裸机似乎很难实现,但是是的,这是目标。
我认为第一步是使U-boot与F1C100S的USB配合使用。 有人做到了吗? 我已经在F1C100S上尝试过USB引导V3S的u-boot,但它当然不起作用

本站有好几个网友都实现了, 但是没有open source,

我记得有网友用的是 NXP 的 USB HOST 协议栈?

离线

#13 2020-06-04 21:45:27

hoel
会员
注册时间: 2019-06-15
累计积分: 59

Re: V3s裸机usb otg host枚举成功,读数据异常

起个名字好难 说:

本站有好几个网友都实现了, 但是没有open source,

我记得有网友用的是 NXP 的 USB HOST 协议栈?

哦,我已经检查了NXP堆栈,但是低级驱动程序仅适用于它似乎所用的Kinnetis平台,我不明白它们如何实现以适应F1C100S。 为什么其他网民在这种集体努力中没有帮助? 我不是唯一希望在F1C100S上使用裸机USB HOST堆栈的人

离线

#14 2020-06-04 21:49:04

起个名字好难
会员
注册时间: 2020-04-16
累计积分: 2

Re: V3s裸机usb otg host枚举成功,读数据异常

hoel 说:

哦,我已经检查了NXP堆栈,但是低级驱动程序仅适用于它似乎所用的Kinnetis平台,我不明白它们如何实现以适应F1C100S。 为什么其他网民在这种集体努力中没有帮助? 我不是唯一希望在F1C100S上使用裸机USB HOST堆栈的人

不知道你有没有"挤"过中国的公交车?

这个问题有点像挤公交车, 车还没来的时候盼着车快点到站,

要是上车了, 就想着快点关车门, 甚至恨不得把车门焊死.

哈哈哈哈.gif

离线

#15 2020-06-04 21:54:46

hoel
会员
注册时间: 2019-06-15
累计积分: 59

Re: V3s裸机usb otg host枚举成功,读数据异常

起个名字好难 说:

不知道你有没有"挤"过中国的公交车?

这个问题有点像挤公交车, 车还没来的时候盼着车快点到站,

要是上车了, 就想着快点关车门, 甚至恨不得把车门焊死.

哈哈哈哈.gif


是的,可悲的是,我了解

离线

#16 2020-06-04 23:21:42

微凉VeiLiang
会员
注册时间: 2018-10-28
累计积分: 333
个人网站

Re: V3s裸机usb otg host枚举成功,读数据异常

hoel 说:

您好,
您可以共享V3S的USB-HOST吗? 我花了很多时间尝试为F1C100S移植USB HOST,但仍然无法正常工作。 我认为V3S应该差不多。 如果我改变低水平的领域,它应该工作。

V3S的不方便。F1C100s我也有调试好,是rtthread系统的,但是还没有时间整理。如果你需要,我可以先发参考代码文件给你,留下你的邮箱。希望能帮助你尽快调通

离线

#17 2020-06-04 23:23:09

微凉VeiLiang
会员
注册时间: 2018-10-28
累计积分: 333
个人网站

Re: V3s裸机usb otg host枚举成功,读数据异常

起个名字好难 说:

不知道你有没有"挤"过中国的公交车?

这个问题有点像挤公交车, 车还没来的时候盼着车快点到站,

要是上车了, 就想着快点关车门, 甚至恨不得把车门焊死.

哈哈哈哈.gif

坑网开源还好吧。只是大家都在忙,只有等空闲了会整理分享下自己的成果

离线

#18 2020-06-04 23:25:41

hoel
会员
注册时间: 2019-06-15
累计积分: 59

Re: V3s裸机usb otg host枚举成功,读数据异常

微凉VeiLiang 说:

坑网开源还好吧。只是大家都在忙,只有等空闲了会整理分享下自己的成果

赞美

离线

#19 2020-06-05 00:47:10

有梦的地方
会员
注册时间: 2020-03-17
累计积分: 225

Re: V3s裸机usb otg host枚举成功,读数据异常

微凉VeiLiang 说:

坑网开源还好吧。只是大家都在忙,只有等空闲了会整理分享下自己的成果

确实,我超级喜欢晕哥的网站,高手众多,看完才能入睡,睡醒必刷酷网。

离线

#20 2020-06-05 01:21:18

hoel
会员
注册时间: 2019-06-15
累计积分: 59

Re: V3s裸机usb otg host枚举成功,读数据异常

微凉VeiLiang 说:

V3S的不方便。F1C100s我也有调试好,是rtthread系统的,但是还没有时间整理。如果你需要,我可以先发参考代码文件给你,留下你的邮箱。希望能帮助你尽快调通

谢谢师父,我的信箱是3265649676[at]qq[dot]com,我可以向您发送到目前为止已完成的工作,起初我找到了Melis USB堆栈的来源,并将所有文件移植到裸机项目中,现在可以编译了,但是 文件和依赖关系太多,因此移植似乎不太可能(此USB堆栈使用ePos的某些RTOS功能)。 然后我从u-boot移植了Sunxi堆栈,文件较少但缺少较高级别的堆栈,因此尚不能直接实现主机。 还有另一种移植,它仅从u-boot中提取了很少的文件,这个文件可以枚举,仅此而已,我感到缺少太多高级堆栈来实现HOST功能。

USB_STACK_SUNXI.zip

USB_STACK.zip

F1C100S_USB_Driver_V1_1 (1).zip

最近编辑记录 hoel (2020-06-05 01:21:41)

离线

#21 2020-06-05 08:15:56

staunchheart
会员
注册时间: 2019-12-17
累计积分: 169

Re: V3s裸机usb otg host枚举成功,读数据异常

微凉VeiLiang 说:

V3S的不方便。F1C100s我也有调试好,是rtthread系统的,但是还没有时间整理。如果你需要,我可以先发参考代码文件给你,留下你的邮箱。希望能帮助你尽快调通

我目前也实现了RT-THREAD下的USB DEVICE,但没有实现HOST。
因为参考了淘宝上的掌机代码,不方便公开。老大如果能方便公开USB HOST的话,请发一下我邮箱36380047@qq.com.
另请告知,如果使用了这部份代码后是否可以公开到GIT?尊守原作者的规则。

最近编辑记录 staunchheart (2020-06-05 08:23:59)

离线

#22 2020-06-05 08:23:12

staunchheart
会员
注册时间: 2019-12-17
累计积分: 169

Re: V3s裸机usb otg host枚举成功,读数据异常

起个名字好难 说:

不知道你有没有"挤"过中国的公交车?

这个问题有点像挤公交车, 车还没来的时候盼着车快点到站,

要是上车了, 就想着快点关车门, 甚至恨不得把车门焊死.

哈哈哈哈.gif

发这种劳骚是没有意义的,公不公开自己的成果都是他的自由,别人可能是基于某一目的才投入时间和精力去研究的,而我们可能只是业余玩玩。我们愿意公开,也不应因别人不愿而埋怨。
哪怕别人是有偿公开,我们使用后,也应该尊守别人的意见,不要将他用来获利的部份公开。
拿起筷子吃肉,放下筷子骂娘,还只是因为自己碗里的肉比别人的小或没别人的肥,这样搞得同行都没饭吃。

离线

#23 2020-06-05 23:44:35

微凉VeiLiang
会员
注册时间: 2018-10-28
累计积分: 333
个人网站

Re: V3s裸机usb otg host枚举成功,读数据异常

staunchheart 说:

我目前也实现了RT-THREAD下的USB DEVICE,但没有实现HOST。
因为参考了淘宝上的掌机代码,不方便公开。老大如果能方便公开USB HOST的话,请发一下我邮箱36380047@qq.com.
另请告知,如果使用了这部份代码后是否可以公开到GIT?尊守原作者的规则。

已发。可以开源

离线

#24 2020-06-05 23:45:22

微凉VeiLiang
会员
注册时间: 2018-10-28
累计积分: 333
个人网站

Re: V3s裸机usb otg host枚举成功,读数据异常

hoel 说:

谢谢师父,我的信箱是3265649676[at]qq[dot]com,我可以向您发送到目前为止已完成的工作,起初我找到了Melis USB堆栈的来源,并将所有文件移植到裸机项目中,现在可以编译了,但是 文件和依赖关系太多,因此移植似乎不太可能(此USB堆栈使用ePos的某些RTOS功能)。 然后我从u-boot移植了Sunxi堆栈,文件较少但缺少较高级别的堆栈,因此尚不能直接实现主机。 还有另一种移植,它仅从u-boot中提取了很少的文件,这个文件可以枚举,仅此而已,我感到缺少太多高级堆栈来实现HOST功能。

USB_STACK_SUNXI.zip

USB_STACK.zip

F1C100S_USB_Driver_V1_1 (1).zip

已发。基于rtthread 的协议栈做的。只是移植实现了下底层接口

离线

#25 2020-06-05 23:50:16

hoel
会员
注册时间: 2019-06-15
累计积分: 59

Re: V3s裸机usb otg host枚举成功,读数据异常

微凉VeiLiang 说:

已发。基于rtthread 的协议栈做的。只是移植实现了下底层接口


太强大了,我会尽快尝试

离线

#26 2020-06-26 00:16:50

myxiaonia
会员
注册时间: 2019-06-18
累计积分: 55

Re: V3s裸机usb otg host枚举成功,读数据异常

微凉VeiLiang 说:

已发。基于rtthread 的协议栈做的。只是移植实现了下底层接口

请问能接收你的关于f1c100s usb host相关程序吗,我的qq543488289@qq.com
通过这几天逛论坛一点点搜集信息,我隐隐约约感觉这个代码应该就在uboot里面,奈何没有大神指点迷津

离线

#27 2020-06-26 00:18:59

hoel
会员
注册时间: 2019-06-15
累计积分: 59

Re: V3s裸机usb otg host枚举成功,读数据异常

myxiaonia 说:

请问能接收你的关于f1c100s usb host相关程序吗,我的qq543488289@qq.com
通过这几天逛论坛一点点搜集信息,我隐隐约约感觉这个代码应该就在uboot里面,奈何没有大神指点迷津


抱歉,我认为这是另一个主题。 我有一个适用于RTThread的USB HOST实现,但是由于RT-Thread堆栈的实现方式,因此性能不佳,但是如果您不需要高性能,那就可以了。

最近编辑记录 hoel (2020-06-26 00:24:02)

离线

#28 2020-06-26 00:29:07

myxiaonia
会员
注册时间: 2019-06-18
累计积分: 55

Re: V3s裸机usb otg host枚举成功,读数据异常

hoel 说:

抱歉,我认为这是另一个主题。 我有一个适用于RTThread的USB HOST实现,但是由于RT-Thread堆栈的实现方式,因此性能不佳,但是如果您不需要高性能,那就可以了。


您能释放这个usb host实现吗?我的email:543488289@qq.com

离线

#29 2020-06-26 13:02:13

Calcium
会员
注册时间: 2018-10-29
累计积分: 7

Re: V3s裸机usb otg host枚举成功,读数据异常

微凉VeiLiang 说:

已发。基于rtthread 的协议栈做的。只是移植实现了下底层接口

可以发一份USB HOST的源码吗?  最近也在学习研究F1C100跑rt-thread相关部分, 蟹蟹, 986240697@qq.com

离线

页脚

工信部备案:粤ICP备20025096号-1 Powered by FluxBB