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.

xmega - Połączenie USART z SPI/I2C

Dae3 30 Cze 2013 16:32 1569 1
  • #1 30 Cze 2013 16:32
    Dae3
    Poziom 9  

    Cześć, potrzebuję wytłumaczenia (jak dla debila ;) jak to jest z tym usartem i jak to się ma w przypadku spi / i2c dla xmega.

    Weźmy na warsztat chociażby SPI. A więc aby "zrealizować SPI", to muszę określić slave, zegar taktujący względem którego będą wysyłane kolejne bity (czyli po cyklicznym pojawieniu się , załóżmy, zbocza narastającego zegara), oraz wyprowadzenie mikrokontrolera (mosi), z którego będą wysyłane wspomniane bity. Chyba dobrze opisem realizację spi.

    A teraz pojawia się problem, bo jak to jest z usart+spi ?

    USART jest protokołem gdzie jest określony sposób komunikacji czyli bit startu, kilka bitów danych, bit parzystości, bity stopu.

    A więc teoretycznie usart mija się z celem gdy mowa o spi, gdzie muszę wysłać konkretną sekwencję bitów do obsługi peryferyjnego urządzenia cyfrowego, bo dodatkowo wyśle wspomniany bit startu, bit parzystości i stopu.


    http://asf.atmel.com/docs/2.11.1/xmegad/html/xmega__usart__spi_2usart__spi_8h.html

    a więc jak rozumieć te funkcje;

    Cytat:
    void usart_spi_init (USART_t *usart)
    Initializes the USART in SPI master mode.

    void usart_spi_select_device (USART_t *usart, struct usart_spi_device *device)
    Select given device on the SPI bus.

    status_code_t usart_spi_write_packet (USART_t *usart, const uint8_t *data, size_t len)
    Send a sequence of bytes to a SPI device using USART in SPI mode.


    A więc jak mam to rozumieć ? Odpliłem przykłądowe kody i faktycznie to działa, ale JAK ? ;)

    0 1
  • #2 30 Cze 2013 16:49
    piotrva
    Moderator na urlopie...

    USART a UART to nie to samo - od tego zacznijmy.

    UART może rzeczywiście nadawać tylko w standardzie "RS232", czyli asynchronicznym szeregowym, o określonym baudrate, gdzie do komunikacji służą 2 linie (po jednej na każdy kierunek transmisji).

    Natomiast obecny w wielu procesorach AVR i XMega AVR moduł USART może pracować zwykle (zależnie od konkretnego modelu) jako kontroler sprzętowy UART albo SPI albo czasem także I2C/TWI - wyboru dokonujemy podczas konfiguracji.

    Po prostu mówiąc łopatologicznie - USART jest bardziej "wypasiony" i można ustawić go do obsługi różnych, alternatywnych "magistrali", co jednocześnie oznacza, że jeśli dany USART ustawimy np. jako SPI to będzie on nadawał/odbierał dane jak moduł SPI, i nie będzie to miało żadnego związku z UART ani I2C.

    0