Skocz do zawartości

Wysylanie ramki za pomoca USART Lin dla STM32f407


siwyzg

Pomocna odpowiedź

witam . czy ktos moglby mi pomoc gdzie znajde kod lub jak go napisac w C aby wyslac ramke do urzadzenia przez LIN dla stm32f407. ... ramka ktora musze wyslac to 

761507770_Capturadepantalla2024-03-25131321.thumb.png.b1e60e650d2c48ba3a1a037ca8ed5733.png

Traceiver lin tla1020

 Konfiguracja STM32CubeIDE w zalaczniku ...

 

 

z gory dziekuje za pomoc

 

Captura de pantalla 2024-03-25 131712.png

Captura de pantalla 2024-03-25 131735.png

Captura de pantalla 2024-03-25 131806.png

Edytowano przez siwyzg
Link do komentarza
Share on other sites

Nie mam pojecia co jest nie tak ... przepisalem kod z linku ale i tak nie odpala ....

nie ma ktos gotowego kodu  _?  chodzi tylko o wysylanie ramki .

Prosze o pomoc

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)

Mi coś takiego chat wyrzucił:

#include <stdint.h>

// Funkcje pid_Calc i checksum_Calc muszą być dostępne w twoim kodzie

int main() {
    // Inicjalizacja tablicy TxData o rozmiarze 12 (8 danych + ID + DLC + sync + checksum)
    uint8_t TxData[12];

    // Ustawienie pola synchronizacji
    TxData[0] = 0x55;

    // Ustawienie ID ramki na 50
    TxData[1] = 50;

    // Ustawienie DLC na 8
    TxData[2] = 8;

    // Ustawienie danych
    TxData[3] = 0xFF;
    TxData[4] = 0xFF;
    TxData[5] = 0xFF;
    TxData[6] = 0x42;
    TxData[7] = 0xC1;
    TxData[8] = 0xFB;
    TxData[9] = 0x03;
    TxData[10] = 0x5F;

    // Obliczenie PID i checksumy
    TxData[11] = pid_Calc(TxData[1]);
    TxData[12] = checksum_Calc(TxData[11], TxData + 3, TxData[2]);

    // Przesłanie ramki przez interfejs UART
    HAL_LIN_SendBreak(&huart1);  // Sygnał przerwy LIN
    HAL_UART_Transmit(&huart1, TxData, 13, 1000);  // Przesłanie danych przez UART

    // Opóźnienie przed kolejnym wysłaniem
    HAL_Delay(1000);

    return 0;
}


Można się tym posugerować, zawsze to jakieś dodatkowe info jak rozwiązać problem

Edytowano przez blenderman
dodanie informacji
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.