libftdi Archives

Subject: Re: [libftdi 0.18] SPI with CBUS Bit-banging FT232H

From: Alex Stefan <alexandru.stefan@xxxxxxxxxxx>
To: libftdi@xxxxxxxxxxxxxxxxxxxxxxx
Date: Mon, 04 Jul 2011 18:24:20 +0300
On Mon, 2011-07-04 at 16:43 +0200, Uwe Bonnes wrote:
> >>>>> "Alex" == Alex Stefan <alexandru.stefan@xxxxxxxxxxx> writes:
> 
>     Alex> On Tue, 2011-06-28 at 15:06 +0200, Uwe Bonnes wrote:
>     >> >>>>> "Alex" == Alex Stefan <alexandru.stefan@xxxxxxxxxxx> writes:
>     >> 
>     Alex> Hello, I am working on implementing a SPI protocol using
>     Alex> bit-banging on the CBUS interface of a FT232H chip. The purpose
>     Alex> would be to program another chip's flash memory via USB.
>     >>
>     Alex> The one I can't figure out is how to correctly time the SPI
>     Alex> operations.  I mean, how can I output a precise clk signal on SCK
>     Alex> using bit-banging.
>     >>  Why do you want do bitbang with the FT232H?  MPSSE mode is much
>     >> easier to use.
>     >> 
>     >> Bye
> 
>     Alex> I need to use CBUS bitbang because the MPSSE pins will be used for
>     Alex> UART communication afterwards.
> 
>     Alex> Anyway, I have implemented everything, works correctly, but not
>     Alex> fast enough. My SPI tx/rx function runs at an approximate rate of
>     Alex> 300 BPS which translates into a huge amount of time to flash a 30
>     Alex> KB image to the chip.
> 
>     Alex> Has anyone encountered this problem so far? From what I can tell,
>     Alex> the problem is with the USB driver functions in the kernel, but I
>     Alex> can't figure out how to solve it. Any ideas?
> 
> If you don't need UART and SPI at a time, which is not possible with the
> single channel FT232H, consider multiplexing the MPSSE pins and some
> non-MPSSE pin as multiplexer control.
> 
> How did you implement SPI. Do you assemble large transfer trunks and read
> back large traunks or do you send small chunks and read often? Remember that
> USB is manged by 1 ms/125 us Frames and each write/read transaction takes at
> least one or two frames.
> 
> Otherwise, does the FTDI libspi also work with bitbanging? What is the speed
> of that  solution.
> 
Thanks for your reply.

It's not my call whether to connect the SPI and UART together on the
MPSSE port. I will forward your suggestion.

>From what I saw in the CBUS bitbang examples of the libftdi library, I
can't make use of any "buffering" system and I must make a call to
'ftdi_set_bitmode()' everytime I need to chage the state of a pin.

I have talked to the developers of FTDI lipspi and they said that their
current version only supports MPSSE SPI, not bit-banging. 

Could you please offer some more details on the USB timing? How can I
set the interval between 2 USB frames (from 1ms to 125 uS) ?

Regards,
Alex


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

Current Thread