AVReAl та MPSSE

Деякі з мікросхем фірми FTDI мають вбудований апаратний блок послідовних інтерфейсів MPSSE, який призначено для реалізації інтерфейсів JTAG, SPI, I2C. FT2232D та її старіші версії FT2232C, FT2232L підтримують Full-Bandwidth USB та мають верхню межу частоти сигналу TCK/SCK 6 МГц. Для мікросхем, що працюють в стандарті USB 2.0 Hi-Speed, тобто FT2232H, FT4232H, FT232H, межа вища — 30 МГц.

MPSSE визначає використання ліній DBUS0..DBUS2 як сигналів TCK/SCK, TDI/MOSI та TDO/MISO. Для програмування мікроконтролерів AVR потрібен сигнал RESET, для якого можна використати лінію DBUS3 (TMS/CS), що і зроблено в AVReAl за замовчуванням.

Для застосування з AVReAl не обов’язково брати спеціальний програматор (на зразок Turtelizer чи Olimex ARM-USB-OCD), досить простої «оціночної» плати на базі мікросхеми з підтримкою MPSSE, наприклад:

При використанні такого простого виробу можна обійтися такими ж простими ключами AVReAl:

-aft2232 -az

Назва мікросхеми ft2232 в ключі -a підходить для FT2232C, FT2232L, FT2232D.
Для FT2232H, FT4232H та FT232H слід підставити відповідні назви.

Оскільки найпростіші плати не мають буферних мікросхем, використовується ключ -az. AVReAl переведе виводи SPI та RESET на вхід і відключить таким чином мікросхему FTDI від мікроконтролера. Слід враховувати, що при цьому на входах залишаться високоомні підтяжки до живлення VCCIO. Також потрібно звернути увагу на робочий струм виходів використаної мікросхеми. Наприклад, FT2232D при живленні виходів 3.3 В в стандартному режимі гарантовано забезпечує рівень логічного ‘0’ 0.5 В при струмі не вище 2 мА. Це означає, що при підтяжці входу RESET мікроконтролера до живлення резистором з опором 1 к вихідний драйвер FT2232D може не забезпечити потрібного для AVR рівня ‘0’. Слід увімкнути опцію «High current I/O» в конфігураційній EEPROM.

Якщо опис пристрою USB (поле description, наприклад, “Dual RS232” для FT2232C/L/D) не замінено записом у конфігураційній EEPROM, то ключ «порта» -p можна не використовувати.

Мікросхеми FT2232H та FT4232H мають по два канали з підтримкою MPSSE. Без ключа -p буде вибрано канал A. Для використання каналу B слід додати ключ порта з описом чи серійним номером для даного каналу.

Підтримка двох каналів дає можливість підключити програматор до двох плат і програмувати потрібну, вказуючи в ключі -p атрибут відповідного каналу. Можна навіть запускати дві копії AVReAl і програмувати одночасно два мікроконтролери. Швидкість програмування при цьому не зменшується, бо пропускна спроможність USB 2.0 Hi-Speed з великим запасом перевищує максимальну швидкість запису в мікроконтролер.

В наступному прикладі наведено варіанти ключів з описом для каналу B мікросхеми FT2232H без EEPROM чи з непрошитою EEPROM. Якщо атрибут (опис пристрою чи його серійний номер) має в своєму складі пробіли, то сам атрибут або весь ключ -p слід взяти в лапки:

-aft2232h -az -pd="Dual RS232-HS B"
-aft2232h -az "-pd=Dual RS232-HS B"

Отримати перелік підключених до комп’ютера мікросхем FTDI з їх описами та серійними номерами можна за допомогою наступних ключів (в ключі -a припустимо вказувати будь-яку з підтримуваних мікросхем):

-aft2232 -p?

Підтримку згаданих вище мікросхем в програматорі AVReAl з самого початку було зроблено так, щоб можна було задавати призначення виводів за допомогою запису в командному рядку або конфігураційному файлі. При необхідності для сигналу RESET можна задіяти будь-яку придатну для керування в режимі MPSSE ніжку мікросхеми. Нехай використано ADBUS7. Тоді ключ -a набуває вигляду:

-aft2232:reset=adbus7
-aft4232h:reset=dbus7

Якщо ж в лінії сигналу стоїть інвертор, наприклад, в лінію RESET поставлено транзистор, то перед іменем виводу ставиться тільда ~. Як було сказано, MPSSE фіксує використання сигналів SPI на певних ніжках. Тому для них не можна задати переміщення на інші, але інверсію можна додати. Нехай всі лінії інтерфейсу, включно з MISO, пропущено через інвертори 74HC04. А RESET ще й переміщено на ACBUS3. Ключ -a стає таким:

-aft2232:sck=~adbus0:mosi=~adbus1:miso=~adbus2:reset=~acbus3
-aft4232h:sck=~dbus0:mosi=~dbus1:miso=~dbus2:reset=~cbus3

Можна створити конфігураційний файл, наприклад, з іменем adapter.cfg:

sck = ~adbus0
mosi = ~adbus1
miso = ~adbus2
reset = ~acbus3

та використати іншу форму ключа:

-aft2232=adapter.cfg

 

Для того, щоб в Linux можна було працювати з перерахованими мікросхемами не використовуючи права адміністратора, слід додати правила для системи udev. Детальніше це описано в публікації AVReAl/Linux та права адміністратора.

 


 

На мікросхемах фірми FTDI з підтримкою MPSSE розроблено багато адаптерів для програмування мікроконтролерів. Це і зрозуміло — апаратний модуль MPSSE надає можливість досягти високої швидкості обміну по JTAG та SPI без особливих зусиль. Ці адаптери розроблялися переважно для роботи з мікроконтролерами ARM через інтерфейс JTAG, але їх можна використовувати і для програмування AVR в режимі Low Voltage ISP через інтерфейс SPI.

Більшість адаптерів має буферні підсилювачі чи транслятори рівнів. Крім того, як правило, є індикаторні світлодіоди, якими теж можна керувати від комп’ютера. На жаль, для керування цими сигналами кожен з «фірмових» адаптерів використовує інші линії.

Огляд адаптерів, інформацію про які можна знайти в інтернеті, рекомендації по їх використанню та конфігураційні файли буде наведено в наступних повідомленнях в категорії AVReAl » Адаптери та драйвери » USB-FTDI.

Leave a Reply

[flagcounter image]