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.

Przesyłanie 16bit przez SPI w Xmega

mas24 21 Lut 2018 11:36 558 5
  • #1 21 Lut 2018 11:36
    mas24
    Poziom 16  

    Witam,

    Chciałem zapytać, w jaki sposób przesłać 16-bitowe słowo używając SPI w Xmega jako master? Slavem będzie STM32 w trybie 16 bit właśnie.

    Czy może zrobić dodatkowy pin do komunikacji: Register Selection, który jak jest na 0, to przesyłam dane w 8 bit, a jak jest 1 to rozkaz dla sterowanego urządzenia? Takie rozwiązanie stosuje się np. w wyświetlaczach. Jednak prościej byłoby przesłać to za jednym razem.

    0 5
  • #2 21 Lut 2018 12:21
    BlueDraco
    Specjalista - Mikrokontrolery

    Mam wrażenie, że zapytałeś o coś zupełnie innego, niż miałeś na myśli. Słowo 16-bitowe można złożyć z dwóch słów 8-bitowych. Odbiorca nie wie, jak to wysyłałeś - odbierze 16 bitów. Ale przecież nie o to Ci chodzi...

    0
  • #3 21 Lut 2018 13:56
    tmf
    Moderator Mikrokontrolery Projektowanie

    Tak jak napisał kol. @BlueDraco - SPI przesyła dane szeregowo, jak je zinterpretuje odbiornik, to wyłącznie kwestia programisty. Niezależnie jak wygląda rejestr nadajnika SPI, to 16 bitów musi przesłać kolejno bit po bicie LSB lub MSB. Odbiornik to składa razem. Czyli mówiąc prosto - przesyłasz np. najpierw mniej znaczących 8 bitów, następnie 8 bitów bardziej znaczących lub odwrotnie. Do synchronizacji początku transmisji służy sygnał CS.

    0
  • #4 21 Lut 2018 18:14
    mas24
    Poziom 16  

    OK, czyli najlepiej postąpić tak:

    1. Sygnał CS na 0
    2. Przesyłamy pierwsze 8 bitów
    3. Czekamy na flagę gotowości
    4. Przesyłamy drugie 8 bitów
    5. Czekamy na flagę gotowości
    6. Sygnał CS na 1 (koniec transmisji).

    Jeśli pomiędzy dwiema transmisjami nie będziemy "ruszać" sygnału CS, to odbiornik zinterpretuje to jako przesłane 16 bitów, a przerwę czasową najprawdopodobniej zignoruje, bo najważniejszy jest dla niego sygnał na SCK?

    0
  • #5 21 Lut 2018 18:50
    tmf
    Moderator Mikrokontrolery Projektowanie

    Odbiornik nic nie interpretuje - to robi programista. SPI to po prostu para rejestrów równoległo-szeregowych i szeregowo-równoległych. Czyli CS na 0 co aktywuje slave, a twojemu programowi mówi, że rozpoczęła się nowa transmisja. Nadajesz pierwsze 8 bitów, następnie kolejne 8 bitów, CS na 1 i po sprawie. Żadnych sygnaów gotowości itd. bo nie są potrzebne.

    0
  • #6 21 Lut 2018 22:10
    mas24
    Poziom 16  

    Rozumiem, teraz to tylko przetestować w praktyce.
    Dzięki Kolegom :)

    0