Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Multimetr FlukeMultimetr Fluke
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[esp8266] uart swap a GPIO15

07 Sty 2017 21:34 2961 9
  • Poziom 7  
    Witam serdecznie,

    Używam nodemcu. W moim projekcie chcialbym "przestawic" pierwszego uarta z pinow GPIO1(tx)/GPIO3(rx) na GPIO15(tx)/GPIO13(rx).

    W espressif sdk istnieje do tego funkcja: system_uart_swap(), ktora dziala i po jej wykonaniu mozna cieszyc sie interfejscem uart odpalonym na pinach G15/G13. Podłączenie konwertera rs232 to ww. pinow pozwala na nawiazanie komunikacj z PC.

    Problem pojawia sie gdy fizycznie zresetuje kontroler (poprzez naciśnięcie przycisku RST). ESP8266 nie podnosi sie po takiej operacji :( po odłączeniu kowertera rs232 i ponownym naciśnięciu RST wszystko ładnie wstaje. Problemem jest pin GPIO15, który dla poprawnego uruchomienia kontrolera wymaga stanu niskiego (pulldown). Po podłaczniu multimetru do konwertera rs232 (masa do masy a czerwony przewód do pinu rx) pokazuje mi stan wysoki (wychodzi na to ze przejsciowka podciaga piny rx,tx do zasilania - pullup).

    W dokumentacji do funkcji system_uart_swap() znalazlem nastepujące zdanie: ...However, users should make sure that pin13(GPIO15) should NOT be pulled up externally in the initialization stage. Czyli to "gryzienie" sie stanu z przesciowki (pullup) oraz podciagniecie GPIO15 w stanie inicjalizacji do masy jest tutaj problemem. Niestety nie wiem jak ten problem rozwiązać :( - jestm raczej początkującym elektronikiem. Czy któryś z szanownych forumowiczów może podać pomocną dłoń ?

    Z góry dziękuje i pozdrawaim
    Piotr
  • Multimetr FlukeMultimetr Fluke
  • Specjalista - Mikrokontrolery
    Podciągnięcie w przejściówce jest zapewne b. słabe, więc możesz spróbować powiesić rezystor coś pomiędzy 3k i 4k7 pomiędzy GPIO15 i masą. Jest szansa, że to zadzoała, ale bez gwarancji i z problemami, bo ten stan niski przy starcie ESP i przed uruchonieniem UART na tych liniach przejściówka UART potraktuje jako błędne dane.
  • Multimetr FlukeMultimetr Fluke
  • Poziom 7  
    Witam,

    dziękuje za sugestie, napewno sprawdze zaproponowane przez Ciebie rozwiązanie. Jednak widze, ze jest to problematyczne i nie rozumiem dlaczego producent jako alternatywe proponuje pin ktory jest newralgiczny dla poprawnego startu kontrolera.

    Sprawdzilem kilka przejsciowek oraz inne urzadzenia (np. modem m590) i wszystkie bez wyjątku mają podciąganie do zasilania na pinach rx or tx.

    BlueDarco: bootloader ESP8266 bezwdlednie wypluwa na uart0 śmieciu podczas startu (a chce podlaczyc m590 dlatego nie chce mu wysylac jakiegos bagna), wszedzie proponuja aby zrobic swap uarta. Moze jednak warto zostawic oryginalne linie na G1/3 i probowac tam obejsc problem - oba piny w ESP8266 maja podciaganie do zasilania, wiec nic sie nie gryzie ?

    Dzięki i pozdrawiam
    Piotr
  • Poziom 7  
    Witam

    probowalem z rezystorem 3,6 oraz 4,7. Niestety nie dziala :(
  • Poziom 7  
    Dzieki, chyba nie wspominalem ale z nodemcu uzywam tylko sprzetu :) Z tego co widze kolega proponuje uzycie gpio.Serout czyli LUA ? czy Sertout jest po prostu softwarowym UARTem ? Jest to jakies rozwiazanie, jednak dalej bardzo interesuje mnie czy jest mozliwe uzycie GPIO15 jako sprzetowego uart. Zaczynam sie tez zastanawiac nad zasadnoscia uzycia function system_uart_swap - po co ona wogole jest skoro sa z tym takie problemy ?


    pozdrawiam
    Piotr

    Dodano po 4 [minuty]:

    chodziło mi oczywiscie o użycie GPIO15 jako lini Tx uarta :)
  • Poziom 7  
    Masz racje, użycie progrmowego uarta wydaje się najrozsądniejsze.

    Ale jeszcze jedno chodzi po mojej głowie, jeśli pozwolisz :):

    Jest jeszcze dostepna linia TXD1 (GPIO2) ktora nie wypluwa zadnych smieci (i jest podciagnieta do vcc nie do gnd). Czy mozna jednoczesnie uzywac dla jednego urzadzenia linii TXD1 (G2) oraz RXD0 (GPIO3) ? czyli transmisja/odbior ale z dwoch roznych uartow ? - rozwiaznie wydaje mi sie byc jakimś potworkiem - ale może w szaleństwie jest metoda ?

    Z gory dzieki i pozdrawiam
    Piotr
  • Poziom 22  
    GPIO2 jest trochę kłopotliwe, jeśli przy starcie ESP będzie stan wysoki to później możesz używać jak TX dla uart. Jeśli ESP dostanie stan niski, będzie się resetować lub nie ruszy firmware.
  • Poziom 7  
    hi hi, kłopot za kłopotem :) Bardzo dziękuje za pomoc, z tego co widze GPIO0,2,15 lepiej zostawić w spokoju.

    pozdrawiam
    Piotr