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

STM32F4 Discovery - Połączenie z Bluetooth BTM341 przy użyciu USART

chiob 21 Gru 2014 12:57 1050 6
  • #1 21 Gru 2014 12:57
    chiob
    Poziom 6  

    Witam!
    Zacznę od tego, że jestem raczej laikiem z programowania STM-ów. Ale nie jestem też leniem, że znajduję gotowca, kopiuję i liczę na to, że będzie działać. A jak nie działa to lipa. Staram się to zrozumieć i znaleźć problem. ;)
    Niestety brak wiedzy sprawił, że wymiękłem i pomyślałem, żeby zapytać na forum.
    Co chcę zrobić:
    Podłączam bluetootha do STM'a +3V, GND oraz TXD do PA10 (USART1 RXD), RXD do PA9(USART1 TXD). Przez tegoż USART'a chce skonfigurować bluetootha, tak aby zaczął działać. Jest to niestety taki model, którego trzeba pierw skonfigurować, żeby dało się go wykryć. Komendy potrzebne do konfiguracji mam przygotowane, Bluetooth był konfigurowany przedtem za pomocą przejściówki i terminala z PC tymi komendami i wszystko pięknie działało, konfiguracja się resetuje po stracie zasilania, dlatego muszę go skonfigurować bezpośrednio z płytki. I tyle, chodzi mi tylko o przesłanie komend przez USART i ewentualnie odebranie tego co on odpowie. Wydaje się proste, ale niestety z czymś mam problem.
    Zacznijmy od inicjalizacji GPIO, USART i NVIC, powinno być wszystko dobrze, zrobione na bazie przykładu, ale wstawiam, może jest coś nie tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Funkcja przerwania USART1:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Zapalenie diody dodałem by sprawdzić czy przerwanie jest wywoływane kiedykolwiek, i właśnie dioda w żadnym wypadku się nie zapala. Jest zainicjowana w mainie.
    W przykładzie umieszczone były również funkcje do odbierania i wysyłania danych, więc też z nich skorzystałem, co prawda troszkę je modyfikując, gdyż przykład był do obsługi wszystkich USART, a ja potrzebuje tylko jednego:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Co do funkcji wysyłania, poszperałem w necie i stwierdzam, że też powinny być dobre(znalazłem praktycznie takie same w kilku działających przykładach, głównie tutaj na forum). Jeżeli chodzi o funkcje odbioru to niestety nie udało mi się sprawdzić jej poprawności.
    Pozostaje main i funkcja, którą muszę napisać czyli wysłanie komend do Bluetootha:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    W inicjalizacji bluetootha tutaj mam już tylko umieszczone wysyłanie komend, które są potrzebne do konfiguracji BT, zapalanie i gaszenie diod jest umieszczone tylko, żeby widzieć kiedy jakie dane zostały wysłane. Szperałem w necie, na forum, próbowałem różnych sposobów i nie wiem już jak to zrobić.
    Tak wysłane komendy nie konfigurują bluetootha, gdyż nie da się go wykryć tak jak to działało gdy zrobiłem to za pomocą przejściówki i terminala, dokładnie te same komendy były wysyłane.
    Pomógłby ktoś i sprawdził przede wszystkim czy inicjalizacje są poprawnie, oraz czy w funkcje do przesyłania i odbioru są dobre? No i oczywiście, dalej nie wiem jak wysłać dobrze te komendy aby bluetooth został poprawnie skonfigurowany.
    Jak wspomniałem na początku jestem laikiem, za co bardzo przepraszam ;)
    Z góry dzięki za jakąkolwiek pomoc.

    0 6
  • #2 21 Gru 2014 18:42
    94075
    Użytkownik usunął konto  
  • #3 21 Gru 2014 20:37
    chiob
    Poziom 6  

    albertb napisał:

    Sam sprawdź.
    Masz funkcje do odbioru.
    Odbierz odpowiedzi modułu na komendy AT i przeczytaj.


    Po pierwsze: Skoro nie wywołuje się funkcja przerwania USART1, to żadne dane nie zostaną na pewno odebrane, o ile dobrze rozumiem (w funkcji przerwania dopisałem zapalenie diody, która w żadnym wypadku się nie zapala). Nie wiem dlaczego nie jest nigdy wywoływana funkcja przerwania... Może nie dodałem czegoś, co powinienem?
    Po drugie: Chodzi mi raczej o samo sprawdzenie składni i poprawności tych funkcji jako kod. Czy tak napisane funkcje mają prawo poprawnie działać.

    0
  • Pomocny post
    #4 21 Gru 2014 21:07
    94075
    Użytkownik usunął konto  
  • #5 22 Gru 2014 00:12
    chiob
    Poziom 6  

    Problem rozwiązany całkowicie. Okazało się, że błąd był na samym początku, czego nie sprawdzałem bo uznałem za oczywiste. Dane były wysyłane na alternatywne porty USART1.
    Temat zostawię jeszcze na 2 dni, będę dorabiał resztę potrzebnych zagadnień, w razie problemów dopytam w tym samym wątku.
    Mimo wszystko nawet taka pomoc była przydatna, nakierowała na problem :D

    0
  • #6 23 Gru 2014 22:43
    BlueDraco
    Specjalista - Mikrokontrolery

    Lepiej pomyśl, co robi Twój program po zainicjowaniu Bluetooth.

    0
  • #7 24 Gru 2014 00:01
    chiob
    Poziom 6  

    Póki co u góry opisany był tylko moment do inicjalizacji, bo z tym miałem problem i z tym chciałem się uporać ;)
    Teraz po inicjalizacji, będę odbierał co przesyła bluetooth i ale z tym już raczej sobie poradzę, skoro udało mi się zainicjalizować ;)

    0