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

[esp8266] uart swap a GPIO15

pwilga 07 Sty 2017 21:34 2628 9
  • #1 07 Sty 2017 21:34
    pwilga
    Poziom 6  

    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

    0 9
  • Sklep HeluKabel
  • #2 07 Sty 2017 22:05
    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.

    0
  • #3 07 Sty 2017 22:20
    pwilga
    Poziom 6  

    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

    0
  • Sklep HeluKabel
  • #4 08 Sty 2017 19:47
    pwilga
    Poziom 6  

    Witam

    probowalem z rezystorem 3,6 oraz 4,7. Niestety nie dziala :(

    0
  • #6 09 Sty 2017 20:46
    pwilga
    Poziom 6  

    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 :)

    0
  • #8 09 Sty 2017 21:48
    pwilga
    Poziom 6  

    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

    0
  • #9 09 Sty 2017 22:05
    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.

    0
  • #10 09 Sty 2017 22:37
    pwilga
    Poziom 6  

    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

    0