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

STM32 UART SIM800 - Komunikacja z SIM800 AT Commands Odbiór danych

10 Wrz 2014 23:33 2640 4
  • Poziom 17  
    Witam,

    Próbuje skomunikować się z modułem SIM800 przy pomocy STM32F100RBT6B. Mam skonfigurowane peryferia i wysyłam dane do modułu. Niestety problem pojawia się przy odbiorze, Odbieram tylko pierwszą literę i nie wiem dlaczego. Wykorzystuje przerwania do transmisji UART. Komunikacja z poziomu PC <-> SIM800 przebiega bez problemów, prosiłbym o zerknięcie na kod i pomoc w znalezieniu błędu odbioru danych:

    Funkcja main:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Funkcja SIM800_Cmd:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Funkcja przerwania:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Prosiłbym o pomoc
  • Poziom 12  
    zajdź w sieci dobrze napisany parser na uarta, wykorzystujący callback to tego dobrze napisane fifo, zobacz jak to wszystko powinno wyglądać, bo teraz masz nie skalowalny kod i do tego nie działający którego nie ma sensu naprawiać/analizować.

    Dodano po 2 [minuty]:

    źle napisałem fifo dla uarta, a parser dla fifo.
  • Poziom 17  
    hmmm, szczerze mówiąc nie jest mi potrzebne skomplikowane rozwiązanie, wystarczy mi rozsądne odbieranie danych po Uart i rozpoznawanie komend...
  • Specjalista - Mikrokontrolery
    O tym właśnie mowa. Modem w każdej chwili może podesłać dowolną odpowiedź, niekoniecznie tę, której się spodziewasz. Długość odpowiedzi też może być dowolna - w takim przypadku Twoja prowizorka będzie zawijała ją dookoła. To nie ma prawa działać.
  • Poziom 13  
    wojlej, podeślij mi na priva najlepiej cały projekt (lub pliki programu oraz konfiguracji) to sprawdzę u siebie. Też odpalam ten moduł, co prawda na innym stmie ale zasada jest ta sama.
    Piszesz że otrzymujesz tylko jeden znak, czy to jest zawsze konkretny czy pierwszy z odpowiedzi?
    Chyba masz źle pwrkey.
    Moja sekwencja, działająca, to:
    Kod: c
    Zaloguj się, aby zobaczyć kod