硬件环境:芯片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
离线
关注中。。。
离线
自顶。。。。
离线
自顶。。。。
离线
已经和楼主解决
这里说一下全志musb的坑
_______________________________
usb otg 做主机发送请求到设备时候,地址设置分两个寄存器的
一个是端点0和TX类请求,设置地址用的寄存器是0x98偏移的FADDR
另外一个是数据端点RX也就是IN请求,设置地址用的寄存器是0x9C偏移的RXFADDR
_______________________________
楼主的问题是枚举成功后数据端点发送IN请求请求数据的时候,地址设置还是设置FADDR,导致地址不对,设备不响应然后进入ERROR中断
离线
已经和楼主解决
这里说一下全志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)
离线
谁有单独的USB OTG的代码?
离线
谁有单独的USB OTG的代码?
九霄云外有裸机USB HOST的代码,但他拒绝分享。 我们都在努力使裸露的USB HOST成为现实,但目前没有任何进展(哭泣)
如果有人知道,请帮助我们,我们希望F1C100S上的裸机USB HOST造福所有人。
离线
硬件环境:芯片v3s ,用的Lichee Nano开发板
软件环境:裸机
问题:
usb otg作host(地址:0x01C1 9000不是OHCI)的时候插入HID设备能够枚举成功并且获取设备的PID与VID,
但是枚举成功以后端点2会一直循环触发INT中断,无法接受HID发送过来的数据。
您可以分享您的代码吗? 也许会有助于集体的努力
离线
您可以分享您的代码吗? 也许会有助于集体的努力
u-boot 支持 S3/V3s 的 usb 吧, 或许可以从 u-boot 扣代码?
离线
u-boot 支持 S3/V3s 的 usb 吧, 或许可以从 u-boot 扣代码?
我见过这个uboot,问题是将u-boot的USB堆栈移植到裸机似乎很难实现,但是是的,这是目标。
我认为第一步是使U-boot与F1C100S的USB配合使用。 有人做到了吗? 我已经在F1C100S上尝试过USB引导V3S的u-boot,但它当然不起作用
离线
我见过这个uboot,问题是将u-boot的USB堆栈移植到裸机似乎很难实现,但是是的,这是目标。
我认为第一步是使U-boot与F1C100S的USB配合使用。 有人做到了吗? 我已经在F1C100S上尝试过USB引导V3S的u-boot,但它当然不起作用
本站有好几个网友都实现了, 但是没有open source,
我记得有网友用的是 NXP 的 USB HOST 协议栈?
离线
本站有好几个网友都实现了, 但是没有open source,
我记得有网友用的是 NXP 的 USB HOST 协议栈?
哦,我已经检查了NXP堆栈,但是低级驱动程序仅适用于它似乎所用的Kinnetis平台,我不明白它们如何实现以适应F1C100S。 为什么其他网民在这种集体努力中没有帮助? 我不是唯一希望在F1C100S上使用裸机USB HOST堆栈的人
离线
哦,我已经检查了NXP堆栈,但是低级驱动程序仅适用于它似乎所用的Kinnetis平台,我不明白它们如何实现以适应F1C100S。 为什么其他网民在这种集体努力中没有帮助? 我不是唯一希望在F1C100S上使用裸机USB HOST堆栈的人
不知道你有没有"挤"过中国的公交车?
这个问题有点像挤公交车, 车还没来的时候盼着车快点到站,
要是上车了, 就想着快点关车门, 甚至恨不得把车门焊死.
哈哈哈哈.gif
离线
不知道你有没有"挤"过中国的公交车?
这个问题有点像挤公交车, 车还没来的时候盼着车快点到站,
要是上车了, 就想着快点关车门, 甚至恨不得把车门焊死.
哈哈哈哈.gif
是的,可悲的是,我了解
离线
您好,
您可以共享V3S的USB-HOST吗? 我花了很多时间尝试为F1C100S移植USB HOST,但仍然无法正常工作。 我认为V3S应该差不多。 如果我改变低水平的领域,它应该工作。
V3S的不方便。F1C100s我也有调试好,是rtthread系统的,但是还没有时间整理。如果你需要,我可以先发参考代码文件给你,留下你的邮箱。希望能帮助你尽快调通
离线
不知道你有没有"挤"过中国的公交车?
这个问题有点像挤公交车, 车还没来的时候盼着车快点到站,
要是上车了, 就想着快点关车门, 甚至恨不得把车门焊死.
哈哈哈哈.gif
坑网开源还好吧。只是大家都在忙,只有等空闲了会整理分享下自己的成果
离线
坑网开源还好吧。只是大家都在忙,只有等空闲了会整理分享下自己的成果
赞美
离线
坑网开源还好吧。只是大家都在忙,只有等空闲了会整理分享下自己的成果
确实,我超级喜欢晕哥的网站,高手众多,看完才能入睡,睡醒必刷酷网。
离线
V3S的不方便。F1C100s我也有调试好,是rtthread系统的,但是还没有时间整理。如果你需要,我可以先发参考代码文件给你,留下你的邮箱。希望能帮助你尽快调通
谢谢师父,我的信箱是3265649676[at]qq[dot]com,我可以向您发送到目前为止已完成的工作,起初我找到了Melis USB堆栈的来源,并将所有文件移植到裸机项目中,现在可以编译了,但是 文件和依赖关系太多,因此移植似乎不太可能(此USB堆栈使用ePos的某些RTOS功能)。 然后我从u-boot移植了Sunxi堆栈,文件较少但缺少较高级别的堆栈,因此尚不能直接实现主机。 还有另一种移植,它仅从u-boot中提取了很少的文件,这个文件可以枚举,仅此而已,我感到缺少太多高级堆栈来实现HOST功能。
F1C100S_USB_Driver_V1_1 (1).zip
最近编辑记录 hoel (2020-06-05 01:21:41)
离线
V3S的不方便。F1C100s我也有调试好,是rtthread系统的,但是还没有时间整理。如果你需要,我可以先发参考代码文件给你,留下你的邮箱。希望能帮助你尽快调通
我目前也实现了RT-THREAD下的USB DEVICE,但没有实现HOST。
因为参考了淘宝上的掌机代码,不方便公开。老大如果能方便公开USB HOST的话,请发一下我邮箱36380047@qq.com.
另请告知,如果使用了这部份代码后是否可以公开到GIT?尊守原作者的规则。
最近编辑记录 staunchheart (2020-06-05 08:23:59)
离线
不知道你有没有"挤"过中国的公交车?
这个问题有点像挤公交车, 车还没来的时候盼着车快点到站,
要是上车了, 就想着快点关车门, 甚至恨不得把车门焊死.
哈哈哈哈.gif
发这种劳骚是没有意义的,公不公开自己的成果都是他的自由,别人可能是基于某一目的才投入时间和精力去研究的,而我们可能只是业余玩玩。我们愿意公开,也不应因别人不愿而埋怨。
哪怕别人是有偿公开,我们使用后,也应该尊守别人的意见,不要将他用来获利的部份公开。
拿起筷子吃肉,放下筷子骂娘,还只是因为自己碗里的肉比别人的小或没别人的肥,这样搞得同行都没饭吃。
离线
我目前也实现了RT-THREAD下的USB DEVICE,但没有实现HOST。
因为参考了淘宝上的掌机代码,不方便公开。老大如果能方便公开USB HOST的话,请发一下我邮箱36380047@qq.com.
另请告知,如果使用了这部份代码后是否可以公开到GIT?尊守原作者的规则。
已发。可以开源
离线
谢谢师父,我的信箱是3265649676[at]qq[dot]com,我可以向您发送到目前为止已完成的工作,起初我找到了Melis USB堆栈的来源,并将所有文件移植到裸机项目中,现在可以编译了,但是 文件和依赖关系太多,因此移植似乎不太可能(此USB堆栈使用ePos的某些RTOS功能)。 然后我从u-boot移植了Sunxi堆栈,文件较少但缺少较高级别的堆栈,因此尚不能直接实现主机。 还有另一种移植,它仅从u-boot中提取了很少的文件,这个文件可以枚举,仅此而已,我感到缺少太多高级堆栈来实现HOST功能。
已发。基于rtthread 的协议栈做的。只是移植实现了下底层接口
离线
已发。基于rtthread 的协议栈做的。只是移植实现了下底层接口
太强大了,我会尽快尝试
离线
已发。基于rtthread 的协议栈做的。只是移植实现了下底层接口
请问能接收你的关于f1c100s usb host相关程序吗,我的qq543488289@qq.com
通过这几天逛论坛一点点搜集信息,我隐隐约约感觉这个代码应该就在uboot里面,奈何没有大神指点迷津
离线
请问能接收你的关于f1c100s usb host相关程序吗,我的qq543488289@qq.com
通过这几天逛论坛一点点搜集信息,我隐隐约约感觉这个代码应该就在uboot里面,奈何没有大神指点迷津
抱歉,我认为这是另一个主题。 我有一个适用于RTThread的USB HOST实现,但是由于RT-Thread堆栈的实现方式,因此性能不佳,但是如果您不需要高性能,那就可以了。
最近编辑记录 hoel (2020-06-26 00:24:02)
离线
抱歉,我认为这是另一个主题。 我有一个适用于RTThread的USB HOST实现,但是由于RT-Thread堆栈的实现方式,因此性能不佳,但是如果您不需要高性能,那就可以了。
您能释放这个usb host实现吗?我的email:543488289@qq.com
离线
已发。基于rtthread 的协议栈做的。只是移植实现了下底层接口
可以发一份USB HOST的源码吗? 最近也在学习研究F1C100跑rt-thread相关部分, 蟹蟹, 986240697@qq.com
离线