FTDI Breakout z dodatkowym złączem ISP

12

TL; DR - Czy sześć żółtych pinów ISP można wykorzystać jako normalnych ISP?


Zwykła karta Breakout FTDI USB-TTL wygląda następująco:

Płyta Breakout USB-TTL FTDI

Ostatnio natknąłem się na wariant planszy pokazany poniżej. Jakie są jednak dodatkowe żółte piny nagłówków na tej płycie? Są oznaczone jako ISP.

USB-TTL FTDI Breakout board z ISP

Oto widok z tyłu:

USB-TTL FTDI Breakout board z tyłu ISP

Czy naprawdę mogą być używane jako standardowy dostawca usług internetowych / ICSP?

AVR-ICSP

Jednak zgodnie z poniższym schematem, który oznacza 6 pinów, nie jestem pewien, czy istnieje poprawna korelacja linii sygnałowych.

Płyta USB-TTL FTDI Breakout z dostawcą usług internetowych z legendą

To znaczy, czy CTS do MISO, RI do RST, DSR do SCK i DCD do MOSI? A może dlatego wymagana jest specjalna wersja avrdude, jak wspomniano w FT232RL: Adapter USB na Serial 232 TTL -? I ISP? - post nr 6 :

Jako nową funkcję dostępny jest 6-pinowy nagłówek ISP. Za jego pomocą avrdude i avrftdi możesz programować programy ładujące Atmels i Arduino. Konieczna jest specjalna wersja avrdude ze skompilowanym sterownikiem FTDI.

Jednak podany link do tej wersji avrdude, ze skompilowanym sterownikiem FTDI, jest martwy.

W poście # 7 powiedziano również , że te piny są w rzeczywistości równoważne złączu X3, jak można znaleźć na starszych płytach Arduino Dicimila / NG / Duemilanove .

Nagłówek X3 na Diecimila

i te mogą (oczywiście) być używane w ten sposób, jako nieco zmieniony SPI,

Łączenie nagłówka X3 z nagłówkiem ISP w Diecimila

Należy zauważyć, że piny RI, CTS, DCD i DSR (oznaczone RSD) są dostępne wzdłuż boków oryginalnej płyty rozbijającej FTDI. Czy płyta rozdzielająca z nagłówkiem ISP zapewnia dostęp do tych samych sygnałów przy użyciu innego nagłówka?

Jestem trochę zdezorientowany - czy nie zastanawiałem się nad tym, a ta płytka zabezpieczająca to po prostu nagłówek ISP / ICSP i złącze FTDI zrolowane w jedną płytkę (w przypadku użycia z odpowiednią wersją avrdude)? Czy to nie jest zwykły nagłówek ISP? Nie mogę znaleźć żadnej konkretnej dokumentacji związanej z tego rodzaju płytą zabezpieczającą, jak stwierdzono w poście # 4 .

Czy ktoś może ostatecznie powiedzieć, po co te sześć pinów? Jeśli nie są one zwykłym nagłówkiem ISP, czy możesz podać szczegółowy sposób korzystania z niego? Schemat byłby pomocny.

Greenonline
źródło

Odpowiedzi:

14

Jest na ten temat wątek na forum Arduino - ktoś miał podobne pytanie.


Znalazłem schemat (poniżej), który nie jest dla tej płyty, ale szpilki nagłówka są oznaczone tak samo, jak znalazłeś, więc jest prawdopodobne.

Schemat płytki FTDI

Wygląda na to, że nagłówek jest używany w „Synchronicznym trybie Bang Bang”, jak tu udokumentowano: Tryby Bit Bang dla FT232R i FT245R (Nota aplikacyjna AN_232R-01, nr referencyjny dokumentu: FT_000339)


Można tak skonfigurować nagłówek, aby był programistą SPI, jak opisano na przykład w Bitbang Programmer FT232R .


Zrobiłem test, ponieważ miałem podobną płytkę w mojej szufladzie na części:

Front płyty FTDI

Zawierał 6-pinowy nagłówek podobny do twojego. Odwracając tablicę, widzimy, że zostały oznaczone dokładnie tak samo jak Twoja:

Powrót FTDI

Przylutowałem do nagłówka (żółty, żeby zachować spójność), dając mi to:

Płyta FTDI z nagłówkiem

Dodałem białą kropkę, aby wskazać pin 1 (widoczny na krawędzi), więc podłączam kabel we właściwy sposób.


Kiedy próbowałem użyć tablicy, otrzymałem ten komunikat od avrdude:

avrdude: error: no libftdi or libusb support. Zainstaluj libftdi1 / libusb-1.0 lub libftdi / libusb i uruchom ponownie config / make

Musiał więc zostać skompilowany od podstaw! Używam Ubuntu 14.04, jeśli próbujesz postępować zgodnie z nimi. :)


Pobierz avrdude

Przejdź do strony http://www.nongnu.org/avrdude/

Pobrałem wersję 6.3 źródło: http://download.savannah.gnu.org/releases/avrdude/avrdude-6.3.tar.gz

Zainstaluj libusb i libftdi

Przed kompilacją musiałem pobrać libusb i libftdi:

sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libftdi-dev

Skompiluj avrdude

Teraz robimy avrdude po rozpakowaniu archiwum i przejściu do jego folderu:

./configure --enable-libusb --enable-libftdi
make

Znajdź poprawną konfigurację

W avrdude.confpliku dołączonym do avrdude znalazłem (po pewnym zastanowieniu) poprawny wpis:

# see http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html
# Note: pins are numbered from 1!
programmer
  id    = "arduino-ft232r";
  desc  = "Arduino: FT232R connected to ISP";
  type  = "ftdi_syncbb";
  connection_type = usb;
  miso  = 3;  # CTS X3(1)
  sck   = 5;  # DSR X3(2)
  mosi  = 6;  # DCD X3(3)
  reset = 7;  # RI  X3(4)
;

Mapowanie pinów na liczby działa w ten sposób ... Ze wspomnianego powyżej pliku PDF o trybie bit bang mamy tę tabelę z moimi adnotacjami w kolorze niebieskim:

Piny trybu Bit Bang

Liczby odnoszą się do liczby bitów (tj. W zakresie od 0 do 7) w bajcie danych „bit banged”. Z wcześniejszego schematu widać, że na przykład MISO w nagłówku ICSP jest podłączony do CTS na FT232RL. Zatem MISO jest bitem danych 3, który mówimy avrdude w powyższej konfiguracji. Podobnie SCK to bit danych 5 i tak dalej.

Próbowałem przetestować w ten sposób:

./avrdude -C avrdude.conf -carduino-ft232r -pm328p  -v

Napraw uprawnienia

Dostałem błąd uprawnień, który został naprawiony poprzez utworzenie pliku w folderze o /etc/udev/rules.d/nazwie 71-FTDI.rules. Wewnątrz jest:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE:="0666"

Liczby mogą się różnić dla twojej tablicy. Musisz znaleźć dostawcę i identyfikator produktu. W Ubuntu możesz zrobić lsusbi zobaczyć (między innymi):

Bus 003 Device 061: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
                       ^^^^ ^^^^

Zwróć uwagę na dwie liczby szesnastkowe, które są kopiowane do pliku reguł.

Po wykonaniu tej czynności powiedz systemowi, aby ponownie załadował reguły:

sudo udevadm control --reload-rules

Następnie odłącz kartę FTDI i podłącz ją ponownie, aby zauważyć nowe uprawnienia.

Wykrywanie płytki testowej

Na koniec powyższa linia avrdude działa i odczytuje układ:

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as DE
avrdude: safemode: efuse reads as FD

avrdude: safemode: hfuse reads as DE
avrdude: safemode: efuse reads as FD
avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)

avrdude done.  Thank you.

Miałem mój podłączony do ATmega328P.


Przykład podłączony do Diavolino

Programowanie Atmega328P

Gdy już zaszliśmy tak daleko, wystarczy podłączyć płytkę FTDI do planszy docelowej za pomocą prostego kabla.


Podsumowanie

Płytka FTDI, którą posiadasz (i tę, którą posiadam) może być używana jako programator ICSP dla układów AVR, jak opisano powyżej. Tak więc prostą płytą może być zarówno konwerter USB na szeregowy, jak i programator ICSP.

Widzę, że podobne tablice sprzedają się na eBayu za około 5 USD, więc jest to prawdopodobnie dość tania opcja programowania.

Nick Gammon
źródło
Dzięki Nick. Tak, ten wątek na forach Arduino jest tym, do którego odwoływałem się w moim pytaniu, ale tak naprawdę nie było jasne, jak go używać - ale pożytecznie wskazywał na blog nagłówka X3. Drugi link, który podajesz, wydaje się rozszerzać na ten temat jeszcze bardziej, dziękuję. Jednak nadal nie ma blogu specjalnie napisanego dla tej konkretnej tablicy, co jest dziwne.
Greenonline,
Uważam, że jeśli to zrobisz, rozmawiasz z FTDI jako urządzeniem USB i nie używasz interfejsu API portu szeregowego systemu operacyjnego, więc mogą wystąpić dodatkowe problemy z konfiguracją / sterownikiem / uprawnieniami w zależności od tego, jakiego systemu używasz do hostowania to. Bardziej wydajne części FT4232H / FT2232H / FT232H FTDI są często używane w ten sposób jako interfejsy JTAG do bardziej zaawansowanych procesorów.
Chris Stratton
3
Zobacz poprawioną odpowiedź. Mam zarząd do pracy jako programista ICSP.
Nick Gammon
1
Fantastyczna, świetna robota. To jest dokumentacja, której szukałem.
Greenonline