Skocz do zawartości

Poziomy sygnałów Arduino UNO (współpraca z układem FPGA)


Pomocna odpowiedź

Napisano

Cześć,

z tego co pamiętam (i jest w dokumentacji) do Arduino UNO to poziom sygnałów na pinach cyfrowych UNO to 5V . Jeśli chcemy podłączyć sygnały z układu FPGA do Arduino UNO to powinniśmy użyć konwertera poziomów logicznych (FPGA wyjścia w std. LVCMOS33).

Nie ma szansy, żeby to działało bez konwertera? Mam takie dziwne pytanie bo jeden projekt na FPGA działa mi bez konwertera, a nie powinien. Czy jestem w błędzie?

Pozdrawiam

Po pierwsze są klony np. arduino nano, które działają na 3.3V - wtedy nie ma problemu.

Druga sprawa to kierunek komunikacji - jeśli FPGA jest wyjściem, a Arduino wejściem, to może działać. Czasem tak się realizuje komunikację z 5V wyświetlaczami LCD (najwyżej dodając szeregowe rezystory dla bezpieczeństwa).

Niestety jeśli Arduino wystawi 5V to FPGA pewnie polegnie. Chociaż może jakiś czas nie będzie tego widać, ale to zawsze zły pomysł żeby do 3.3V układu podłączać 5V.

Jest jeszcze możliwość, że płytka ma wbudowane konwertery na 5V - przykładowo maximator ma to w standardzie.

Po pierwsze są klony np. arduino nano, które działają na 3.3V - wtedy nie ma problemu.

Druga sprawa to kierunek komunikacji - jeśli FPGA jest wyjściem, a Arduino wejściem, to może działać. Czasem tak się realizuje komunikację z 5V wyświetlaczami LCD (najwyżej dodając szeregowe rezystory dla bezpieczeństwa).

Niestety jeśli Arduino wystawi 5V to FPGA pewnie polegnie. Chociaż może jakiś czas nie będzie tego widać, ale to zawsze zły pomysł żeby do 3.3V układu podłączać 5V.

Jest jeszcze możliwość, że płytka ma wbudowane konwertery na 5V - przykładowo maximator ma to w standardzie.

1) To jest oryginalne Arduino UNO.

2) Chcę podłączyć Elberta do tego UNO (sygnały w dwóch kierunkach), czyli koniecznie muszę użyć konwertera poziomów.

Dzięki za potwierdzenie, bo nie byłem pewien 😉

Pozdrawiam

[ Dodano: 03-01-2018, 21:03 ]

Cześć Elvis,

właśnie dlatego , że częściej używałem chińskiego klonu (z poziomem napięć 3,3 V) zapomniałem, że oryginalne Arduino UNO ma poziomy 5V. Teraz miałem ten klon zajęty (inny zmontowany układ) i podłączyłem UNO bezpośrednio do Elberta. Myślisz ,że mogłem go załatwić?

Jak najłatwiej to sprawdzić?

BTW: chciałem wykorzystać przetwornik AD z Arduino w Elbercie (przesyłał wyniki do FPGA po SPI).

Pozdrawiam

Ciężko powiedzieć jak to sprawdzić - czasem potrafi się uszkodzić tylko fragment układu, np port w przypadku mikrokontrolerów. Cała reszta działa, a jeden port nie. Innym razem udało mi się "ubić" multiplekser w przetworniku ADC.

Ale skoro na razie wszystko jest ok, to może nic się nie stało - po prostu nie podłączaj więcej 5V do Elberta 🙂

Ciężko powiedzieć jak to sprawdzić - czasem potrafi się uszkodzić tylko fragment układu, np port w przypadku mikrokontrolerów. Cała reszta działa, a jeden port nie. Innym razem udało mi się "ubić" multiplekser w przetworniku ADC.

Ale skoro na razie wszystko jest ok, to może nic się nie stało - po prostu nie podłączaj więcej 5V do Elberta 🙂

Dzięki za pomoc - stawiam piwo 😅

Pozdrawiam

Sprawa jest krótka - otóż wyprowadzenia I/O zarówno w układach FPGA jak i takim Arduino określone są danym standardem (LVCMOS, LVTTL, LVPECL, HSTL itd.). Przy każdym standardzie jest podane napięcie związane zwykle z nominalnym napięciem zasilania. Jednak nie o zasilanie samo ściśle chodzi. Bardziej jak już to o poziomy napięć, które odpowiadają stanu wysokiemu i niskiemu przy tych zasilaniach (high, low bądź też po prostu 1 i 0). Prostym tego przykładem jest porównanie zawarte w następujących linkach: http://www.interfacebus.com/voltage_threshold.html ; https://www.eetimes.com/document.asp?doc_id=1231111 ; http://www.nostalcomp.cz/pdfka/prevody_urovni.pdf (ostatni link można potraktować jako podsumowanie całości rozważań).Tym samym jak już to po prostu należy spojrzeć w tej kwestii pod kątem właśnie napięć dla wspomnianych stanów (jeśli wyjdzie, że napięcia się będą pokrywały to żaden problem - a zwłaszcza jeśli jeszcze jest to ten sam standard. Jeśli natomiast nie no to potrzeba konwersji). Być może zadziałało u ciebie bo użyłeś wyprowadzeń w Arduino zgodnych TTL 5V (jak spojrzałem to takim standardem odznaczają się wyprowadzenia do UART-a), a jeśli tak to to jest zgodne z LVCMOS 3,3V, a tym samym zagadka rozwiązana. I tyle 🙂

Być może zadziałało u ciebie bo użyłeś wyprowadzeń w Arduino zgodnych TTL 5V (jak spojrzałem to takim standardem odznaczają się wyprowadzenia do UART-a), a jeśli tak to to jest zgodne z LVCMOS 3,3V, a tym samym zagadka rozwiązana. I tyle 🙂

Cześć Jakub,

używałem pinów do SPI z UNO (na pewno są 5-cio woltowe - sprawdzałem w dokumentacji).

Anglicy nazywają to "bad habits" - właśnie takim złym nawykiem jest rutyna, jak pisałem od dłuższego czasu używałem klona z poziomami na pinach 3,3V. A teraz wziąłem oryginalne UNO i "poszedłem na pamięć" zapominając, że oryginał ma poziomy 5 V.

Pozdrawiam

W każdym razie to tak na przyszłość, że może niechcący zadziałać i na oryginalnych częściach jak się zapomni ustawić te same standardy (a co często bywa jak się łączy TTL 5V i LVCMOS 3,3V ze względu na praktycznie te same poziomy napięć dla stanu wysokiego i niskiego) ^^

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...