Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ESP8266 - zwiększenie baudrate

Pocieszny 30 Sty 2017 16:22 1875 16
  • #1 30 Sty 2017 16:22
    Pocieszny
    Poziom 38  

    Posiadam ESP8266 (ESP12), który ma domyślny baudrate 115200. Niby nie jest to jakoś bardzo mało, ale potrzebuję przesyłać stosunkowo duże ilości danych, więc czym szybciej, tym lepiej. Znalazłem w sieci informację, że można osiągnąć nawet 4Mb/s i więcej. Próbowałem to zrobić komendą AT+IPR, ale uwaliłem moduł. Musiałem wgrać mu nowy firmware, żeby go ożywić. Komenda AT+ UART_DEF wydaje się działać, ale tylko kiedy ustawiam baudrate poniżej domyślnej wartości. Każda większa wartość (np. 256000) powoduje, że układ wysyła krzaki do terminala. Co ciekawe, wydaje się jeszcze wtedy rozumieć co mu wysyłam i udało mi się tak zmniejszyć baudrate do poprzedniej wartości.

    Nie wiem czy powyższe objawy to wina modułu ESP czy może konwerter USB-UART (PL2303HX, podróbka) nie daje sobie rady. Czy komuś z Was udało się osiągnąć jakieś większe prędkości niż domyślne 115200?

    0 16
  • #2 30 Sty 2017 20:41
    dondu
    Moderator Mikrokontrolery Projektowanie

    Nie próbowałem, ale może to być związane z:

    Cytat:
    When real RS232 signaling is not required, baud rate higher than 115200 bps could be used for even higher performance.
    The flexible baud rate generator of PL-2303HXD could be programmed to generate any rate between 75 bps to 12M bps


    http://www.prolific.com.tw/UserFiles/files/ds_pl2303HXD_v1_4_4.pdf

    0
  • #3 30 Sty 2017 22:49
    Pocieszny
    Poziom 38  

    Połączyłem Rx i Tx konwertera i spróbowałem znaleźć granicę do jakiej działa. W terminalu ustawiłem nawet bitrate 1000000000 (9 zer) i ciągle działa. Podejrzane to trochę, bo wątpię, żeby przez USB 2.0 przeszedł taki transfer. Wynika z tego, że albo terminal albo sterownik oszukuje. Zapewne poza dopuszczalnym zakresem ustawia domyślny baudrate. Tak przynajmniej dzieje się kiedy ustawię np. 10bps. Bez oscyloskopu pewnie się nie dowiem jaka jest górna granica...

    Jako terminala używam tego programu: https://sites.google.com/site/terminalbpp/

    0
  • #5 31 Sty 2017 11:01
    Pocieszny
    Poziom 38  

    Piotrus_999 napisał:
    Napisz program w c# i zobacz co wyciągniesz

    Rozumiem, że mam mierzyć ilość wysyłanych/odbieranych danych w ciągu sekundy? Jest to jakieś rozwiązanie, spróbuję.

    0
  • #6 31 Sty 2017 13:33
    funak
    Poziom 18  

    To tak do końca nie odda sedna sprawy.
    Bo to ile można ustawić, zależy od ESP oczywiście, ale i również od konwertera.

    Np. FT232RL
    http://www.ftdichip.com/Products/ICs/FT232R.htm
    można ustawić max. 3Mbps,

    A taki CH340G
    https://www.olimex.com/Products/Breadboarding/BB-CH340T/resources/CH340DS1.PDF
    Można ustawić max. 2Mbps

    a dokładnie tyle:

    Code:
    CH340 supports common baud rate: 50,75,100,110,134.5,150,300,600,900,1200,1800,2400,3600,4800,9600,14400,19200,28800, 
    
    33600,38400, 56000,57600,76800,115200,128000,153600,230400,460800,921600,1500000,2000000 and so
    on. The baud rate error of serial transfer signal is less than 0.3%, and permission baud rate error of serial
    receive signal is not less than 0.2%.


    Teraz wracając do tematu: ESP jaki może mieć przędkość UARTu?
    Tu już dowiadujemy się z:
    http://espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf

    Cytuję:
    Code:
    Data transfers to/from UART interfaces can be implemented via hardware. The data transmission speed via UART interfaces reaches 115200 x 40 (4.5 Mbps). 


    Czyli mniejwięcej znaczy tyle, że może uda się nawiązać łączność z szybkością 1500000 lub 3000000 bps już tylko przy użyciu FT232RL.

    Tyle z teorii, a jak w praktyce?

    Dodano po 13 [minuty]:

    W praktyce 921600 spokojnie jestem wstanie uzyskać na CH340G, niestety przy 1.5Mbps niestety się nie udało nawiązać komunikacji.

    Sprawdzałem przed momentem:
    Code:


    UART ==> 115 200 bps

    [2017-01-31 13:31:44:379_S:] AT+GMR
    [2017-01-31 13:31:44:386_R:] AT+GMR

    [2017-01-31 13:31:44:386_R:] AT version:0.60.0.0(Feb  2 2016 18:43:31)
    [2017-01-31 13:31:44:389_R:] SDK version:1.5.2(80914727)
    [2017-01-31 13:31:44:393_R:] compile time:Feb  2 2016 18:59:50
    [2017-01-31 13:31:44:395_R:] OK
    [2017-01-31 13:32:37:913_S:] AT+UART_CUR=921600,8,1,0,0
    [2017-01-31 13:32:37:925_R:] AT+UART_CUR=921600,8,1,0,0


    [2017-01-31 13:32:37:925_R:] OK

    UART ==> 921 600 bps

    [2017-01-31 13:32:52:089_S:] AT+GMR
    [2017-01-31 13:32:52:097_R:] AT+GMR

    [2017-01-31 13:32:52:097_R:] AT version:0.60.0.0(Feb  2 2016 18:43:31)
    [2017-01-31 13:32:52:097_R:] SDK version:1.5.2(80914727)
    [2017-01-31 13:32:52:097_R:] compile time:Feb  2 2016 18:59:50
    [2017-01-31 13:32:52:100_R:] OK


    Użyłem tutaj polecenia AT+UART_CUR na wypadek, jakby się coś nie powiodło i utraciłbym połączenie z ESP, wówczas restart zasilania i wracamy do 115200.

    0
  • #7 31 Sty 2017 14:24
    Piotrus_999
    Poziom 40  

    @funak

    funak napisał:
    2000000 and so
    on.


    Jak myślisz co to znaczy?

    Dodano po 2 [minuty]:

    funak napisał:
    W praktyce 921600 spokojnie jestem wstanie uzyskać na CH340G, niestety przy 1.5Mbps
    A pomyślałeś że to nie problem przejściówki tylko windy, albo programu terminal? Za szybko wyciągasz wnioski. podłacz esp do do jakiegoś ARM-a z szybkim uartem i tam testuj > 1M, inaczej cała Twoja metodologia i analiza nie jest wiele warta.

    0
  • #8 31 Sty 2017 14:36
    Pocieszny
    Poziom 38  

    Zamówiłem dzisiaj na allegro przejściówkę na układzie CH340G, będę miał porównanie. Popróbuję jeszcze z innymi programami. Docelowo ESP ma współpracować z mikrokontrolerem STM32F411, ale chciałem wcześniej przeprowadzić kilka testów z użyciem komputera - bo łatwiej. Na docelowym układzie też to niebawem sprawdzę.

    funak napisał:
    AT+UART_CUR

    Przeoczyłem istnienie tego polecenia, a jest bardzo użyteczne.

    0
  • #9 31 Sty 2017 14:49
    Piotrus_999
    Poziom 40  

    Pocieszny napisał:
    bo łatwiej
    Przy tych większych prędkościach trudniej bo nie wiesz co nie działa. Jeżeli masz STM na płytce typu nucleo albo Discovery to nie potrzebujesz przejscioeki, jeżeli nie to podłącz przejściówkę do dowolnego uarta a ESP do innego i wysyłaj komunikaty diagnostyczne przez przejściówkę do Komputera. Mając płytkę z debugerem nawet tego nie musisz robić.

    Całość odpalisz w 15 min

    0
  • #10 31 Sty 2017 15:05
    funak
    Poziom 18  

    Piotrus_999 napisał:
    A pomyślałeś że to nie problem przejściówki tylko windy, albo programu terminal? Za szybko wyciągasz wnioski. podłacz esp do do jakiegoś ARM-a z szybkim uartem i tam testuj > 1M, inaczej cała Twoja metodologia i analiza nie jest wiele warta.
    Tu się nie zgodzę, FT232RL jak i FT245RL działają powyżej 1Mbps. Sprawdzone :) I to w postaci VCP - Virtual Com Port.

    0
  • #11 31 Sty 2017 15:11
    Piotrus_999
    Poziom 40  

    Inne sterowniki - brałeś po uwagę? Tak że taka metodologia testowania nie jest wiele warta, bo wszystko prawie zależy od windy. Tak że komunikację można testować tylko uart <=> uart, a nie uart <=> przejściówka <=> driver <=> windows <=>biblioteki użytego języka <=> program

    0
  • #12 31 Sty 2017 15:25
    Pocieszny
    Poziom 38  

    funak napisał:
    T232RL jak i FT245RL działają powyżej 1Mbps

    Chciałem zakupić, ale na allegro większość to podróbki, które pewnie działają podobnie jak niesławny PL2303HX.

    Piotrus_999 napisał:
    komunikację można testować tylko uart <=> uart, a nie uart <=> przejściówka <=> driver <=> windows <=>biblioteki użytego języka <=> program

    Racja.

    Na razie bawię się przejściówką tylko dlatego, że chciałem sprawdzić działanie pewnych komend AT, a zwyczajnie łatwiej jest mi je pisać na bieżąco w terminalu.

    0
  • #13 31 Sty 2017 15:35
    Piotrus_999
    Poziom 40  

    Pocieszny napisał:
    Na razie bawię się przejściówką tylko dlatego, że chciałem sprawdzić działanie pewnych komend AT, a zwyczajnie łatwiej jest mi je pisać na bieżąco w terminalu.
    oczywiście ale raczej duże prędkości należy już testować jak należy.

    0
  • #14 31 Sty 2017 15:47
    piotrva
    Moderator Mikrokontrolery

    Pocieszny napisał:
    Chciałem zakupić, ale na allegro większość to podróbki, które pewnie działają podobnie jak niesławny PL2303HX.


    No to nie kupuj takiej za 5 zł, tylko wydaj na nią z 40 zł. Na PW mogę podać namiary na sprawdzone przejściówki z oryginalnym FT232.

    Poza tym - przecież program można wgrać do ESP a nie bawić się z komendami AT ;)

    0
  • #15 31 Sty 2017 16:24
    Pocieszny
    Poziom 38  

    piotrva napisał:
    program można wgrać do ESP a nie bawić się z komendami AT

    Oczywiście, że można, ale powiedz mi jak na ESP obsłużyć jednocześnie kartę pamięci, USB OTG, PWM, UART, 1-wire, I²C i mieć jeszcze kilka wolnych pinów GPIO :)

    0
  • #16 31 Sty 2017 17:16
    jnk0le
    Poziom 17  

    Pocieszny napisał:
    ...Każda większa wartość (np. 256000) powoduje, że układ wysyła krzaki do terminala. Co ciekawe, wydaje się jeszcze wtedy rozumieć co mu wysyłam i udało mi się tak zmniejszyć baudrate do poprzedniej wartości.

    Nie wiem czy powyższe objawy to wina modułu ESP czy może konwerter USB-UART (PL2303HX, podróbka) nie daje sobie rady. Czy komuś z Was udało się osiągnąć jakieś większe prędkości niż domyślne 115200?

    Problem z tymi podróbkami jest taki że działające standardowe baudrate kończą się na 115200 albo 230400 (jak w przypadku ft232), dalej pozostają prędkości takie jak np. 250k, 500k, 1M, 2M.

    0
  • #17 31 Sty 2017 17:46
    piotrva
    Moderator Mikrokontrolery

    @Pocieszny, bardzo prosto - na ESP pakuję całą komunikację, sterowanie połączeniami, protokołami, dekodowanie otrzymanych danych, ich składanie w logiczną całość, natomiast do układu wykonawczego pakuję tak jak mi się podoba tylko to co potrzebne. Np. prosty licznik - procesor liczy impulsy na jakimś GPIO, po czym wysyła do ESP tylko kilka bajtów, ESP zaś odpowiednio je koduje i wysyła np. po TCP/IP lub HTTP. Oszczędność nawet w tak prostym transferze na transmisji po UART jest ogromna, bo zamiast iluś komend AT, np. nagłówków HTTP itp. wysyłam tylko kilka bajtów.

    Nie mówię, żeby na ESP pakować wszystko, bo ESP brakuje wiele do dowolnego uC (timery, przerwania, usb, ...), ale pakując do ESP dedykowane oprogramowanie jesteśmy w stanie podzielić projekt także logicznie - ESP ogarnia sieć, a nasz procek - sprzęt.

    Sam robiłem ostatnio kilka tego typu projektów - w ostatnim ESP miał stronę konfiguracji urządzenia po HTTP, możliwość wysyłania danych za pomocą UDP / TCP/IP (także z protokołem TLS) / HTTP(S) - jako HTTP request, w dodatku ESP mógł uaktualnić oprogramowanie swoje i procesora korzystając z wsadów udostępnionych na serwerze klienta (dodam, że to też w trybie bezpiecznym, tak że nie jest możliwe skopiowanie wsadu). Transmisja po UART - prawie żadna. Zrobić to na komendach AT - nie wyobrażam sobie.

    2
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo