libftdi Archives

Subject: Re: ftdi_read loses bytes (when latency is low)

From: Uwe Bonnes <bon@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
To: libftdi@xxxxxxxxxxxxxxxxxxxxxxx
Date: Tue, 2 Dec 2014 15:09:31 +0100
>>>>> "Hendrik" == Hendrik  <chasake@xxxxxxxxx> writes:

...

    Hendrik> I am not completely sure of the status bytes and their bit
    Hendrik> order (B7 ...  B0 or is it B0 ... B7). We receive 62 instead of
    Hendrik> 60 for the second byte on error, this COULD be the 'overrun'
    Hendrik> bit (B1) which makes sense (however it is not directly
    Hendrik> connected to that specific 64 byte packet, the overrun is
    Hendrik> probably observed in the data after receiving about 256 correct
    Hendrik> bytes (the RX buffer size)). The first byte however indicates
    Hendrik> 01 but that a bit (B0) that is documented to be 'must be 0'
    Hendrik> which it isn't).

>From e.g. ftdi.c
   2048 /**
   2049     Poll modem status information
...
   2071     Layout of the second byte:
   2072     - B0       Data ready (DR)
   2073     - B1       Overrun error (OE)
   2074     - B2       Parity error (PE)

So this is clearly an overrun (OE). Either handle that overrun in your code
and firmware, or use an asynchronous transfer, where libusb cares for you to
poll the FTDI in time, or use the kernel driver, where the kernel is in
charge to poll for you.

Hope this helps
-- 
Uwe Bonnes                bon@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------

--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx   

Current Thread