Hi, I'm new here. I have an FTDI UM245R module and while I can get it to do some things there seems to be an awful lot of detail missing from the FTDI documentation and I can't find any additional material with Google. I have searched this forum and I have read some of the threads with FTDI in them but I have not found any answers.
I think my basic question is How does it work?
Supposing I send 1000 bytes to it from my PC (Ubuntu 10.10) what happens at the pins on the device?
If I want an external device to send 1000 bytes to the PC what has to happen at the pins of the UM245R?
There is some information from FTDI about bit-bang mode which is what I have used so far. But even there the information is very limited - for example how does the timing work between synchronous reads and writes, or how exactly does asynchronous bit-bang work?
There seems to be no information about non bit-bang mode. The data sheet has a couple of timing diagrams for a read and write and the importance of the TXE# and RXF# pins, but it doesn't explain when those pins change state.
Synchronous bit-bang can only accept 384 bytes before the on-chip buffer is full and then the PC needs to do a read to empty the buffer.
Is asynchronous bit-bang the same? If so how can the PC tell whether the buffer is full and a read is needed?
Is non bit-bang mode the same (i.e. only 384 bytes before the PC needs to do a read) and how does the PC know when a read is necessary?
As far as I can see in non bit-bang mode the external device has to clock the data from the UM245R pins into the chip. What is the maximum clock rate? Does the TXE# signal change with each byte or only when the buffer is full?
Obviously if anyone has specific answers to any of these questions I would be very grateful. More likely, perhaps, is that someone can point me to some useful reading to supplement what is on FTDI's website.
I am doing my PC programming in Ruby using the FTDI gem which seems to provide a Ruby interface for libftdi. And the documentation for libftdi and the FTDI gem is almost non-existent. If there was even a document that cross-referenced the D2XX driver with libftdi it would be a start.
Having said all that I like the convenience of the FTDI module.
I think my basic question is How does it work?
Supposing I send 1000 bytes to it from my PC (Ubuntu 10.10) what happens at the pins on the device?
If I want an external device to send 1000 bytes to the PC what has to happen at the pins of the UM245R?
There is some information from FTDI about bit-bang mode which is what I have used so far. But even there the information is very limited - for example how does the timing work between synchronous reads and writes, or how exactly does asynchronous bit-bang work?
There seems to be no information about non bit-bang mode. The data sheet has a couple of timing diagrams for a read and write and the importance of the TXE# and RXF# pins, but it doesn't explain when those pins change state.
Synchronous bit-bang can only accept 384 bytes before the on-chip buffer is full and then the PC needs to do a read to empty the buffer.
Is asynchronous bit-bang the same? If so how can the PC tell whether the buffer is full and a read is needed?
Is non bit-bang mode the same (i.e. only 384 bytes before the PC needs to do a read) and how does the PC know when a read is necessary?
As far as I can see in non bit-bang mode the external device has to clock the data from the UM245R pins into the chip. What is the maximum clock rate? Does the TXE# signal change with each byte or only when the buffer is full?
Obviously if anyone has specific answers to any of these questions I would be very grateful. More likely, perhaps, is that someone can point me to some useful reading to supplement what is on FTDI's website.
I am doing my PC programming in Ruby using the FTDI gem which seems to provide a Ruby interface for libftdi. And the documentation for libftdi and the FTDI gem is almost non-existent. If there was even a document that cross-referenced the D2XX driver with libftdi it would be a start.
Having said all that I like the convenience of the FTDI module.