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

Spirit1 - błędne przesyłanie danych drogą radiową.

Tannis 10 Maj 2017 10:56 1326 19
REKLAMA
  • #1 16467256
    Tannis
    Poziom 8  
    Posty: 23
    Witam,

    Ostatnio bawię się modułami SP1ML(STEVAL-SP1ML868) oraz SPSGRF(X-NUCLEO-IDS01A4), oba ustawione na 868MHz.
    Korzystam z gotowego kodu ściągniętego ze strony firmy ST:
    Link

    Moduł SP1ML mam podłączony do programu Putty i odczytuje w nim to co z modułu SPSGRF wysyłam.
    Poniżej zamieszczam zdjęcie co otrzymuje:
    Spirit1 - błędne przesyłanie danych drogą radiową.
    Na początku myślałem, że może wykorzystywane jest szyfrowanie informacji ale to nie prawda. Baud rate jest poprawny w obu modułach i ustawiony został na 38400. Wysyłany jest bufor, jednakże nie wiem czemu mi sie wysyłają takie dziwne znaki...

    Pozdrawiam,
    Tannis

    PS. Poprawiono wstawione zdjęcie.
  • REKLAMA
  • #2 16467412
    lewd
    Poziom 14  
    Posty: 77
    Pomógł: 6
    Ocena: 5
    Niewiele widać na tym zdjęciu (nie da się powiększyć) ale zaczął bym od sprawdzenia oczywistych oczywistości czyli ustawienia odpowiedniego baud rate.
  • #3 16467425
    Tannis
    Poziom 8  
    Posty: 23
    lewd napisał:
    Niewiele widać na tym zdjęciu (nie da się powiększyć) ale zaczął bym od sprawdzenia oczywistych oczywistości czyli ustawienia odpowiedniego baud rate.

    Poprawiłem zdjęcie oraz baudrate jest taki sam w obu modułach.
  • REKLAMA
  • #4 16467619
    lewd
    Poziom 14  
    Posty: 77
    Pomógł: 6
    Ocena: 5
    Sprawdź jeszcze baud w putty, czyli prędkość między modułem SP1ML a komputerem (ta wartość może być zupełnie inna od tej miedzy modułami).
  • #5 16467652
    Tannis
    Poziom 8  
    Posty: 23
    lewd napisał:
    Sprawdź jeszcze baud w putty, czyli prędkość między modułem SP1ML a komputerem (ta wartość może być zupełnie inna od tej miedzy modułami).


    W module SP1ML mam możliwość zmiany konfiguracji za pomocą komend AT. Speed(Baud) programu Putty mam ustawione na wartość 115200. I rejestr S00 BAUD_RATE także jest ustawiony na 115200, ale właśnie widzę że chyba się pomyliłem. Wcześniej pisałem o rejestrze S02 DATA_RATE = 38400, a nie o rejestrze S00. W zamieszczonym powyzej kodzie nie widzę rejestru BAUD_RATE. Poniżej zamieszczam krótki opis jak korzystać z tego kodu, a na samym dole tej strony podane są rejestry.
    Link
  • #6 16467889
    lewd
    Poziom 14  
    Posty: 77
    Pomógł: 6
    Ocena: 5
    Ze tego screena wynika że DATARATE ustawione na 38400 odpowiada za komunikacje radiową, komunikacja z komputerem jest pewnie zdefiniowana w innym miejscu (uart?). Jeśli nie znajdziesz te j definicji to mimo wszystko spróbuj zmienić w putty baud na inne wartości (9600, 57600 itp) i z obserwuj czy w terminalu nie pojawią się poprawne dane.
  • #7 16468041
    Tannis
    Poziom 8  
    Posty: 23
    lewd napisał:
    Ze tego screena wynika że DATARATE ustawione na 38400 odpowiada za komunikacje radiową, komunikacja z komputerem jest pewnie zdefiniowana w innym miejscu (uart?). Jeśli nie znajdziesz te j definicji to mimo wszystko spróbuj zmienić w putty baud na inne wartości (9600, 57600 itp) i z obserwuj czy w terminalu nie pojawią się poprawne dane.


    Zmiana Baud Rate w putty lekko zmienia informacje jakie otrzymuje, przetestowałem wszystkie kombinacje i dalej jest to samo.
  • #8 16469258
    kinggustav
    Poziom 27  
    Posty: 797
    Pomógł: 93
    Ocena: 93
    Ale w transmisji szeregowej baud rate to nie wszystko. Definiuje się jeszcze kilka parametrów (parzystość, liczba bitów informacji, stopu) i one są tak samo ważne. Masz pewność, że po obu stronach jest tak samo? Kiedyś bawiłem się portami COM i zawsze działało dopiero po ustawieniu takich samych parametrów po obu stronach. Inaczej są "krzaczki".
  • REKLAMA
  • #9 16469377
    lewd
    Poziom 14  
    Posty: 77
    Pomógł: 6
    Ocena: 5
    Zaglądając pobieżnie do kodu (nie mam możliwości uruchomienia odpowiedniego ide) zaczynam mieć obawy o to czy tam w ogóle jest uruchomiona komunikacja z komputerem. Ta przykładowa aplikacja ma za zadanie jedynie zapalić diodę po udanej komunikacji radiowej.
  • REKLAMA
  • #10 16469400
    Tannis
    Poziom 8  
    Posty: 23
    lewd napisał:
    Zaglądając pobieżnie do kodu (nie mam możliwości uruchomienia odpowiedniego ide) zaczynam mieć obawy o to czy tam w ogóle jest uruchomiona komunikacja z komputerem. Ta przykładowa aplikacja ma za zadanie jedynie zapalić diodę po udanej komunikacji radiowej.


    Mogłem źle to opisać. Kod, z którego korzystam nie ma inicjalizacji UART, więc nie sprawdzam co układ nadawczy wysyła do układu odbiorczego. W Watchu staram się podejrzeć, co mogę wysyłać, ale ten kod jest tak dziwnie napisany, że z tablicy zmienia mi się tylko 1 wartość z 5ciu. Natomiast moduł SP1ML(odbiorczy), korzystam tutaj z gotowego firmware'a nie nadpisujac go, za pomocą mostka USB-UART przesyła informacje do Putty, pokazując co mi układ nadawczy wysyła.
  • #11 16469404
    lewd
    Poziom 14  
    Posty: 77
    Pomógł: 6
    Ocena: 5
    Próbujesz przechwycić komunikację między modułem SP1ML a NUCLEO?
  • #12 16469410
    Tannis
    Poziom 8  
    Posty: 23
    lewd napisał:
    Próbujesz przechwycić komunikację między modułem SP1ML a NUCLEO?


    Nie jestem pewien czy dobrze zrozumiałem. W płytkę NUCLEO mam wpiętego shielda X-NUCLEO-IDS01A4 i wgrałem gotowy kod, nie zawierający inicjalizacji UART - strona nadawcza. Po stronie odbiorczej mam podpięty STEVAL-SP1ML868(USB Dongle). Jego fabryczny firmware pozwala na wysyłanie i odczytywanie informacji w Putty(niestety wysyłanie mi nie działa). Reasumując SP1ML odbiera dane z SPSGRF i wyświetla je w Putty.
  • #13 16469447
    lewd
    Poziom 14  
    Posty: 77
    Pomógł: 6
    Ocena: 5
    Chodziło mi o to gdzie wpinasz się przejściówka USB-UART.
  • #14 16469451
    Tannis
    Poziom 8  
    Posty: 23
    lewd napisał:
    Chodziło mi o to gdzie wpinasz się przejściówka USB-UART.


    Moduł SP1ML ma takową w sobie. Wpinam się nią do portu usb MacBooka. Do tego samego MacBooka, do innego portu USB podpinam Nucleo. Jeżeli chodzi o moduł SP1ML to oczywiście wybór portu COM i prędkości jest odpowiedni, by za pomocą komend AT móc zmienić jego konfigurację.
  • #15 16469505
    lewd
    Poziom 14  
    Posty: 77
    Pomógł: 6
    Ocena: 5
    Dlaczego nadawanie z SP1ML nie działa?
  • #16 16469521
    Tannis
    Poziom 8  
    Posty: 23
    lewd napisał:
    Dlaczego nadawanie z SP1ML nie działa?


    Tego nie wiem, na początku zająłem się tym, by sprawdzić czy SPSGRF przesyła jakieś sensowne dane. Koniec końców i tak kod będzie pisany pod komunikację SP1ML <-> SP1ML, czyli będę edytował tego gotowca. Starałem się już to zrobić, ale chyba wystąpił problem z zegarami albo kwarcem i w debuggerze nie mogłem przejść przez jedną funkcję.
  • #17 16469575
    lewd
    Poziom 14  
    Posty: 77
    Pomógł: 6
    Ocena: 5
    Przydałby się wgląd w konfiguracje obu modułów, aktualny plik spirit1_appli.h i lista rejestrów z SP1ML.
  • #18 16469580
    Tannis
    Poziom 8  
    Posty: 23
    lewd napisał:
    Przydałby się wgląd w konfiguracje obu modułów, aktualny plik spirit1_appli.h i lista rejestrów z SP1ML.


    Zrobię to jak tylko będę w domu, czyli koło godziny 17.

    Dodano po 5 [godziny] 49 [minuty]:

    Konfiguracja, która wgrywam na płytkę Nucleo:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    [/code]

    Zdjęcie z Putty, konfiguracji SP1ML:
    Spirit1 - błędne przesyłanie danych drogą radiową.
  • #19 16470464
    lewd
    Poziom 14  
    Posty: 77
    Pomógł: 6
    Ocena: 5
    Próbowałeś ustawiać PAYLOAD_LEN i rejestr S28 (PAYLOAD_SIZE) na tą samą wartość?
  • #20 16470815
    Tannis
    Poziom 8  
    Posty: 23
    lewd napisał:
    Próbowałeś ustawiać PAYLOAD_LEN i rejestr S28 (PAYLOAD_SIZE) na tą samą wartość?


    Dalej jest to samo, to musi być problem z tymi rejestrami. Postaram się zrobić inaczej, wgrać ten sam kod na układ SP1ML(rejestry będą dokladnie takie same), zmieniając zegary i piny w kodzie spróbować tak zmienić kod by właśnie układem SP1ML móc wysyłać dane.

Podsumowanie tematu

✨ Użytkownik boryka się z problemem błędnego przesyłania danych między modułami SP1ML (STEVAL-SP1ML868) a SPSGRF (X-NUCLEO-IDS01A4) na częstotliwości 868MHz. Pomimo poprawnego ustawienia baud rate na 38400, odbierane dane w programie Putty zawierają nieczytelne znaki. Użytkownik sprawdził konfigurację baud rate w obu modułach oraz w Putty, jednak zmiana wartości nie przyniosła poprawy. W dyskusji zasugerowano również, aby zwrócić uwagę na inne parametry transmisji szeregowej, takie jak parzystość i liczba bitów. Użytkownik zauważył, że kod, z którego korzysta, nie zawiera inicjalizacji UART, co może być przyczyną problemów z nadawaniem. W dalszej części rozmowy poruszono kwestie związane z rejestrami konfiguracyjnymi oraz koniecznością synchronizacji ustawień między modułami.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA