Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32][SPI][HAL] HAL_SPI_Transmit - wysyła niepoprawne dane.

rafiks 19 Mar 2017 10:54 594 7
  • #1 19 Mar 2017 10:54
    rafiks
    Poziom 18  

    Natrafiłem na dziwne zachowanie funkcji HAL_SPI_Transmit poniżej kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    I zgodnie z tym co powyżej ten fragment programu powinien wysłać 3 bajty danych o wartości 200 (DEC) a wysyła 225 spójrzcie na załączone przebiegi. Pierwszy bajt nawet nie zostaje zdekodowany przez Saleae Logic.



    [STM32][SPI][HAL] HAL_SPI_Transmit - wysyła niepoprawne dane. [STM32][SPI][HAL] HAL_SPI_Transmit - wysyła niepoprawne dane. [STM32][SPI][HAL] HAL_SPI_Transmit - wysyła niepoprawne dane.

  • #3 19 Mar 2017 12:04
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Ciekawe czemu kompilator zgłasza warning (*) przy absolutnie KAŻDYM wywołaniu funkcji HAL_SPI_Transmit()? No naprawdę ciekawe o co mu chodzi... Pewnie jakieś nic nie warte głupoty, więc kto by się tam tym przejmował... Jakaś niezgodność typów czy "pointer from integer"? Łot? Szprechen zi polnish, herr kompilator?

    Myślicie, że dałoby się wyprosić u administratorów, aby przed założeniem nowego tematu na tym forum trzeba było rozwiązać krótki test z programowania?

    * - kolejna zaleta C++ - w tym języku taki durny kod po prostu by się nie skompilował i koniec.

  • #4 19 Mar 2017 12:36
    Piotrus_999
    Poziom 39  

    Freddie Chopin napisał:
    kolejna zaleta C++ - w tym języku taki durny kod po prostu by się nie skompilował i koniec.


    Nie wiem czy pamiętasz ale kilka miesięcy temu był tu też taki mocarz co ignorował też te podkreślone na czerwono i uznał że to błąd gcc bo mu ciągle wgrywa starą wersję programu, a on już miganie diodą wyrzucił - a miga :).

    Tak że nieskompilowanie się programu nie zawsze pomaga

  • #5 19 Mar 2017 13:20
    rafiks
    Poziom 18  

    #Piotrus_999 Nie chodzi o to żeby przestawiać ustawienia w programie logic. Tylko to że ta funkcja transmit wysyła nie to co podajemy. W załączniku przesyłam dwa zdjącia jedno gdzie jest wartość 200 ( spi z avr xmegi) a drugi ( z stm32 ) inny przebieg.

    Próbowałem już różne ustawienia SPI
    CPOL = LOW
    LSB First / MSB First

    i nie jestem wstanie uzyskać wartości 200.

    [STM32][SPI][HAL] HAL_SPI_Transmit - wysyła niepoprawne dane. [STM32][SPI][HAL] HAL_SPI_Transmit - wysyła niepoprawne dane.

  • #6 19 Mar 2017 13:31
    Piotrus_999
    Poziom 39  

    Nie chcę być złośliwy, ale Freddy Ci napisał. Czytasz warningi, czy uważasz je za zbędne zawracanie gitary?

    HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout)

    A u Ciebie pData to uint8_ a nie uint8_t * to jak ma działać.

    To jak ma działać?

  • #7 19 Mar 2017 13:44
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Piotrus_999 napisał:
    Czytasz warningi, czy uważasz je za zbędne zawracanie gitary?

    Widać przecież jak na dłoni, że to drugie.

    rafiks napisał:
    Tylko to że ta funkcja transmit wysyła nie to co podajemy.

    Ta funkcja wysyła dokładnie to co jej podałeś. Tyle że nie jest to 200. Kompilator Ci o tym mówił - takimi wiadomościami z żółtym tłem.

  • #8 19 Mar 2017 13:49
    rafiks
    Poziom 18  

    Na tak nie zauważyłem że tam jest gwiazdka czyli wskaźnik a nie dane. Już zaznaczyłem sobię All warnings -Wall i teraz widzę listę wszystkich zastrzeżeń.

    Dziękuję za pomoc

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME