How to transfer usb microphone streaming data at 44.1kHz

Hi all,

I am implementing a stereo, 16bit-res microphone application. The application should send the recorded data over USB to PC.

I succeeded to make the microphone work well at 48kHz and now I am stuck at isochronous transfer at 44.1kHz.

The isochronous transfer type is Synchronous. And the In endpoint max packet size is 192bytes.

I use the 'usblyzer' to grab the packets that I found 3 different results:

(1) When I send 176 bytes data to PC every millisecond. PC can received 1760bytes/10ms.
(2) When I send 180 bytes data to PC every millisecond. PC can received a random amount of data between 500 to 800.
(3) When I send 9 x 176 bytes and one 180 bytes every 10 millisecond. PC can received 1412bytes/10ms or 1760bytes/10ms(4x1412 and 1x1760 as a period).

So I guess I made a mistake at how to transfer the streaming data at 44.1kHz over usb to pc.

Can anybody tell me how to transfer streaming data at 44.1kHz over usb to PC?

Parents
  • > (3) When I send 9 x 176 bytes and one 180 bytes every 10 millisecond.
    This could be the right way,
    if you would write it as "10 frames", instead of "10 milliseconds".

    1 frame is not exactly 1 ms. It’s 1ms +/- 500ns, determined by the host.
    In Synchronous method, your local sampling clock has to synchronize to SOF timing.

    I recommend you [b]A[/b]synchronous instead of Synchronous, for easy microphone implementation.

    In Asynchronous method, your local sampling clock is the master clock.
    The number of samples in a packet is determined by the number of samples in the last SOF interval. And then, you don’t need to worry about either 44.1 or 48 kHz.

    Tsuneo

Reply
  • > (3) When I send 9 x 176 bytes and one 180 bytes every 10 millisecond.
    This could be the right way,
    if you would write it as "10 frames", instead of "10 milliseconds".

    1 frame is not exactly 1 ms. It’s 1ms +/- 500ns, determined by the host.
    In Synchronous method, your local sampling clock has to synchronize to SOF timing.

    I recommend you [b]A[/b]synchronous instead of Synchronous, for easy microphone implementation.

    In Asynchronous method, your local sampling clock is the master clock.
    The number of samples in a packet is determined by the number of samples in the last SOF interval. And then, you don’t need to worry about either 44.1 or 48 kHz.

    Tsuneo

Children
More questions in this forum