При отправке запроса SetAddress USB флэшке она не подтверждает приём адреса, т.е. должно быть так:
отправка запроса SetAddress устройству
setup token packet (от хоста): 0x2d 0x00 0x10
data packet (от хоста): 0xc3 0x00 0x05 0x02 0x00 0x00 0x00 0x00 0x00 0xeb 0x16
handshake packet (от устройства): 0xd2 (ACK)
подтверждение того, что устройство приняло адрес
token packet (от хоста): 0x69 0x00 0x10
data packet (от устройства): 0x4b 0x00 0x00 (пакет нулевой длины)
handshake packet (от хоста): 0xd2 (ACK)
а в реальности происходит так:
отправка запроса SetAddress устройству
setup token packet (от хоста): 0x2d 0x00 0x10
data packet (от хоста): 0xc3 0x00 0x05 0x02 0x00 0x00 0x00 0x00 0x00 0xeb 0x16
handshake packet (от устройства): 0xd2 (ACK)
подтверждение того, что устройство приняло адрес
token packet (от хоста): 0x69 0x00 0x10
handshake packet (от устройства): 0x5a (NACK)
то есть устройство говорит, что оно не приняло адрес (0x02).
Используется хост-контроллер USB1.1 OHCI. Может кто-нибудь сталкивался с подобной ситуацией? В чём может быть причина?