FTDIchip

V

vandelay

Guest
Я використовую один чіп FT2232 представити інтерфейс SPI над USB.При читанні на умови SPI.dll документації, я був здивований, щоб знайти дві функції SPI_Read і SPI_Write.З SPI є дуплекс передачі, як вона може бути те, що Є окремі читати і писати функцій?Чи може так бути, що (з USB повідомляє в пакети), команда відправляється на SPI на писати і одночасно отримані дані скидаються, то очікується відповідь даних (даний номер байт слід читати) читається в письмовому вигляді манекена даних ж розміру, препровождающее всієї буферної тому в одному USB пакет?Мало б сенс, як дані можуть бути переведені на багато швидше, більш ніж USB, але в моєму випадку (читання дуже мало відповідей байт в той час, багато хто команди багато рабів SPI) Я залишилося багато менш ефективною пропускною здатністю, ніж FT2232 Datasheet вперше
з'явився вказати ..Я прочитав це може зробити 6MHz SPI (IIRC), але я починаю підозрювати, що це число годин я не можу базі мого пропускання з математики ..

Будь-які
роз'яснення з цього б чудово ..

 
Це правда, що напрямок протягом декількох байт USB дуже повільно.Я не знаю, ці функції в spi.dll, тому що я використовую FT2232 з Linux, але я написав моєї SPI функцій для програмування AVR з цим чипом.На початку я відправив і отримав кожні 4 байтів з окремою FT_write і FT_read команди, і це було дуже повільним.Програмування флеш-32kB займає близько 5 хвилин!!.Тоді я зробив буферізованние пише і читає: написати всі дані в буфер, а потім надіслати весь буфер з одного FT_write.Збільшення швидкості був величезний - програмування в даний час займає близько 3s.І це можна читати і записувати дані одночасно, тому що дані зберігаються в буфер, який можна читати з однієї FT_read команду після завершення передачі.USB був розроблений для передачі пакетів даних,
що не мають єдиного байта.Пакет складається з 64 даних.Якщо ви пишете менше даних, то контролер чекає певного часу - як правило, 16ms (для відпочинку), і тільки після цього часу відправляє дані.Час може бути змінене з FT_SetLatencyTimer.Тому передача кілька байт по одному дуже повільно - навіть менше, ніж 1kbBs.

Привет

 
Спасибо спасибо за ваш обмін досвідом, Coros.

Я просто змінити мою схему з додатковим MCU збору даних,
направляя все назад за USB, буферізованние в одному пакеті.

А питання, мені потрібно лише зібрати 24 байт ..Я, можливо, варто програми MCU реагувати з 64 байт чого 40 байт манекен, щоб уникнути затримки питання?

 
Ви також можете написати свої функції для читання і письма, як я і зробив.Тоді я думаю, що немає необхідності використовувати додаткові MCU.Коли я писав AVR programmig Спочатку я зробив так - дуже повільний варіант: Для читання одного байтів від спалаху в AVR мені потрібно відправити 3 байтів команди Потім я прочитав 1 байт відповідь, так як я використав FT_write 3 байтів команди для AVR, то з FT_read Я отримав 1 байт.Це був повільним.Тепер буферізованних версія: например я хочу читати 256 байтів від AVR (передача AVR ще 3 байтів команди і адресу, і 1 байт відповідь).
Це мені потрібно відправити FT2232: 0x11, 0x02, 0x00, 3 байтів команди для AVR, 0x20, 0x00, 0x00
0x11 0x02 0x00 це команда FT направити 3 байтів даних, 0x20 0x00 0x00 це команда FT прочитати один байт з AVR.

Так і Я посилаю 9 * 256 байт з FT_write, то я прочитав 256 байт з FT_read.У diffrence полягає в тому, що я не прочитати 1 байт даних відразу після sendig 3 байтів команди,
тому FT2232 магазини в її внутрішній буфер і відправляє його, коли він буде заповнений.Потім я отримую всього 256 байт з FT_read.За більш докладною інформацією загляньте в MPSSE команди опис на сайті FTDI.

 
Чому б не використати мікрочип USB рішення?Є демо-програми та читати піти.

 
IamnotJunk писав:

Чому б не використати мікрочип USB рішення?
Є демо-програми та читати піти.
 

Welcome to EDABoard.com

Sponsor

Back
Top