Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 5 maja 2025, o 04:36


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 1 ] 
    Autor Wiadomość
    PostNapisane: 17 lis 2020, o 21:40 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 02 kwi 2014
    Posty: 150
    Pomógł: 1

    Hej wszystkim,

    Mam mały problem z zaimplementowaniem protokołu CAN na STM32F103 (tzw bluepillu). Ale po kolei.


    Mam Bluepilla podłączonego poprzez PA11 (CAN_Rx) i PA12 (CAN_Tx) do transceivera CJMCU-1051 (wejscia CRX -> PA11 i CTX -> PA12 ). Sygnały CANL oraz CANH wychodzące z transceivera) mam połączone z magistralą CAN na któej są już dwie nody i komunikują się ze sobą z baudratem = 500kBps (po sieci biegają 4 ramki):
    Obrazek

    Więc sieć dzial.

    I teraz mój kod.
    Konfiguracja zegarów na maksymalne taktowanie - 72MHz ( PCLK1 zgodnie z RM ustawone na 36MHz):
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    SysTick skonfigurowany na 1ms:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    No i czas na konfigurację CANa:

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    w odpowiedzi na wywołanie funkcji
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    dostaję wartość 1 czyli CAN_InitStatus_Success (konfiguracja przebiegła poprawnie i CAN jest w trybie normal - normalnej pracy) , co potwierdzają rejestry:
    Obrazek

    W głównej pętli programu chcę wysyłać ramkę co 1s, zmienna source_time jest to zmienna inkrementowana w przerwaniu od SysTicka i to ją chcę wysyłać po magistrali
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Rezultatem jest ustawienie się statusu transmisji na (wartość zwraca przez funkcję CAN_TransmitStatus) na pending (ramka oczekuje na wysłanie) dla wszystkich banków FIFO, co potwierdzają rejestry
    Obrazek

    Po podłączeniu sond oscyloskopu pomiędzy uP a transceiver, można zaobserwować, że transceiver przepuszcza ramki biegające po CANie -> więc nie jest uszkodzony
    Obrazek

    Reasumując, może ma ktoś pomysł dlaczego STM nie wypuszcza ramki do transcivera tylko jest cały czas w trybie pending?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 1 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO