logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[esp8266] ESP8266: Przeniesienie UART na GPIO15/GPIO13 i problem z resetem kontrolera

pwilga 07 Sty 2017 21:34 3306 9
REKLAMA
  • #1 16181264
    pwilga
    Poziom 9  
    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
  • REKLAMA
  • #2 16181383
    BlueDraco
    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.
  • #3 16181433
    pwilga
    Poziom 9  
    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
  • REKLAMA
  • #4 16183776
    pwilga
    Poziom 9  
    Witam

    probowalem z rezystorem 3,6 oraz 4,7. Niestety nie dziala :(
  • REKLAMA
  • #6 16186840
    pwilga
    Poziom 9  
    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 :)
  • #8 16187091
    pwilga
    Poziom 9  
    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
  • REKLAMA
  • #9 16187173
    piotr411
    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.
  • #10 16187272
    pwilga
    Poziom 9  
    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
REKLAMA