Skocz do zawartości

Ekspander portów z wyprowadzeniami UART


gbtbg

Pomocna odpowiedź

Dzień dobry

W każdym układzie kiedyś się kończą porty i w tym przypadku pomagają ekspandery czy multipleksery ale tylko do celów gdzie sami chcemy w kodzie ich użyć (diody, przełączniki, itp).

Czy jakimś cudem da się ich użyć aby użyć np. do utworzenia komunikacji szeregowej RX,TX. Do funkcji inicjującej musimy podać numery portów. Zresztą w wielu innych przypadkach jest tak samo i niestety mamy ograniczoną ilość modułów jaką podłączymy.

Czy jest jakiś sposób aby to obejść.

Link do komentarza
Share on other sites

Nie ma. Ekspandery służą do dodania dodatkowych pinów do sterowania jakimiś diodami czy przekaźnikami i do odczytywania prostych stanów typu "guzik wciśnięty". W przypadku seriala (czy i2c, czy spi, czy co tam procek potrafi) konkretne piny są podłączane bezpośrednio do układów odpowiedzialnych za komunikację.

Napisz konkretnie co chcesz zrobić, bo pewnie się da tylko inaczej.

Link do komentarza
Share on other sites

Cześć,

zobacz ten link:

https://electronics.stackexchange.com/questions/404040/uart-expander-5-ports-to-11-ports

są tam wymienione podobne expandery tylko zamiast I2C jest tam SPI ale to chyba nie powinien być problem.

Pozdrawiam

Hej: linie SPI są wspólne dla wszystkich urządzeń podłączanych, tylko linie CS jest potrzebna jedna taka linia na każde urządzenie (mogą to być wolne linie )

Edytowano przez FlyingDutch
Link do komentarza
Share on other sites

Co nie zmienia faktu, że jeśli kontroler (np. atmega wlutowana w arduino)  wymaga fizycznego podłączenia odpowiednich drutów do odpowiednich pinów, załatwisz to sobie jakimś ekspanderem.

Chyba że wiesz coś więcej ode mnie... dawaj przykład, też chcę!

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Da się expanderem portów zrealizować komunikację szeregową tylko wtedy obsługę komunikacji trzeba zrealizować programowo dlatego najlepiej jest stosować do tego wbudowany w µC sprzęt albo dedykowane scalaki, które często posiadają własną pamięć na bufor. Z doświadczenia mogę napisać, że nie warto się zmagać z takimi przypadkami na około i stosować dedykowany sprzęt w każdym przypadku. Zwyczajnie szkoda na to czasu i wydajność takich kombinacji też będzie o wiele mniejsza.

Link do komentarza
Share on other sites

27 minut temu, atMegaTona napisał:

Jaki problem dopisać samemu? Mam własny uniwersalny virtualport napisany laaaata temu i służy mi do tej pory.

A ile gotowych bibliotek do różnych czujników, wyświetlaczy i tym podobnych ludzie dla ciebie do niego napisali?

Link do komentarza
Share on other sites

11 godzin temu, atMegaTona napisał:

Jaki problem dopisać samemu? Mam własny uniwersalny virtualport napisany laaaata temu i służy mi do tej pory.

Super że się da. Mam nadzieje że nie chodzi o virtualny port Serial bo taka biblioteka jest i nie o to mi chodziło. Mi chodzi o to że mam dostępnych 9 portów z czego 2 to I2C, 1 1Wire, 3 SPI + jeden do każdego modułu więc przy 3 urządzeniach SPI (czytnik kart, wyświetlacz LCD i czytnik RFID już nie ma już portów. Dlatego jakby była możliwość portu virtualnego który byłby widziany przez funkcje które przyjmują konkretny numer , a nie expander to jest rozwiązanie.

Prosiłbym w takim wypadku jakąś podpowiedź jak taki virtualport sobie napisać.

Link do komentarza
Share on other sites

Akurat linie CS w SPI możesz podłączyć przez ekspander (chociaż trochę z tym zabawy), ekspander do I2c, i masz trzy piny wolne.

Tak przy okazji: pin != port.

Edytowano przez ethanak
Link do komentarza
Share on other sites

Jeśli chodzi o SPI to faktycznie nie widzę tu problemu, można wszystkie urządzenia spi podłączyć do jednego portu a jedynie cs przez expander. Trzeba mieć tylko na uwadze fakt, że przełączanie CS będzie miało opóźnienie względem prędkości SPI ale nie powinno być to problemem przy niedużej ilości CS.

Jest lepszy sposób niż expander I2C. Lepiej jest zastosować np. 74hc595 podłączony do tego samego SPI, wtedy wystarczy 1 dodatkowy pin na enable dla rejestru 595 i masz tym sposobem 8 CSów kosztem 1 pinu µC.

19 godzin temu, gbtbg napisał:

Do funkcji inicjującej musimy podać numery portów. Zresztą w wielu innych przypadkach jest tak samo i niestety mamy ograniczoną ilość modułów jaką podłączymy.

Z jakiej biblioteki ta funkcja??

Link do komentarza
Share on other sites

40 minut temu, atMegaTona napisał:

Jest lepszy sposób niż expander I2C. Lepiej jest zastosować np. 74hc595 podłączony do tego samego SPI, wtedy wystarczy 1 dodatkowy pin

Z całym szacunkiem - przy I2C jest potrzebne zero dodatkowych pinów 😉

Link do komentarza
Share on other sites

Doceniam cały szacunek ale I2C jest jeszcze wolniejsze niż rejestr 595 więc opóźnienie będzie jeszcze większe i w niektórych przypadkach może być zbyt duże. Wtedy trzeba by było pisać obsługę samemu a kolega autor zdaje się nie być aż tak biegły w temacie.

Link do komentarza
Share on other sites

Spójrz na podłączone urządzenia:

Czytnik RFID (czyli co najmniej sekunda odczytu z SPI)

Czytnik kart (czyli drugie tyle - minimum pół kilobajta przeczytane przez SPI, to też nie mikrosekunda)

Wyświetlacz (tu może być mniej ciekawie, bo z reguły potrzebuje jeszcze jednego pinu D/C, ale i tak pchasz tam jakiś ciąg bajtów, a z tych trzech pinów co zostają da się wykroić czwarty)

Rozumiem że jakiś ułamek milisekundy w tych przypadkach ma jakiekolwiek znaczenie? Czy odczytanie kodu z RFID w czasie 1234 msec a 1232 msec to takie ważne?

 

Link do komentarza
Share on other sites

Dla Ciebie może i nie ma znaczenia dla mnie też może nie mieć ale dla gotowych bibliotek może jednak mieć. Może też mieć znaczenie kiedy się chce przełączać pomiędzy urządzeniami jak najszybciej się da. I co również ważne 595 kosztuje 1zł a expander I2C nawet 10..  ale jak komu pasuje.

Mimo wszystko polecam sprawdzone rozwiązanie z 595.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.