Skip to content

USBIsochronousStreamInEndpoint frame_finished strobe never fires when TRANSFERS_PER_MICROFRAME > 0 #295

@BrettRD

Description

@BrettRD

I'm using the examples/usb/isochronous_count.py but substituting the memory-like USBIsochronousInEndpoint endpoint for a stream-like USBIsochronousStreamInEndpoint.
This is USB2 high speed, with 3 packets per microframe. frame_finished simply never goes off.

Without frame_finished, isochronous endpoints can't be made to synchronise with the USB frame if their transactions are greater than 1k byte.

data_requested is behaving itself, at least the docs say it strobes at the top of a packet.

Digging a bit deeper, I can see the bytes_left_in_packet counter is behaving itself, but bytes_left_in_frame is being reset to its user-specified value at the top of every packet instead of every frame

bytes_left_in_frame is reset during interface.tokenizer.new_frame signal, suggesting the tokenizer is going off on every packet instead of every frame or even microframe.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions