logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[MSP430][C/IAR] hardware'owy I2C

Kamil557 08 Paź 2010 13:05 2214 3
REKLAMA
  • #1 8596629
    Kamil557
    Poziom 11  
    Witam,
    mam problem ze sprzętową obsługą I2C. uC to MSP430F2619. Napisałem swój program, na podstawie datasheeta, ale wysyła tylko sekwencje START.
    Poszukałem na stronie TI programu i znalazłem coś takiego:
    TI
    Skompilowałem, wgrałem i uruchomiłem. Dalej to samo. Wysyłana jest jedynie sekwencja START.

    Z tego co zrozumiałem z datasheet'a, ustawiamy odpowiednie opcje, w zależności od tego w jakim trybie ma pracować uC.

    Moje pytanie jest takie. Czy dobrze rozumiem sekwencje wysyłania danych? Po wpisaniu adresu urządzenia SLAVE do rejestru UCBxI2CSA i następnie ustawienia bitu UCTXSTT, następuję automatyczna transmisja adresu urządzenia? Reszta komunikacji na razie jest nieistotna.

    Aha, przebiegi na SDA i SCL obserwuję na oscyloskopie.
  • REKLAMA
  • #2 8596727
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 8596738
    Kamil557
    Poziom 11  
    Dzięki wielkie, zaraz sprawdzę i napiszę czy udało się uruchomić.
  • #4 8600567
    Kamil557
    Poziom 11  
    Trochę opóźniło się to sprawdzenie.
    Przeczytanie erraty nie wniosło żadnych zmian w moim toku myślenia.

    Czy dobrze rozumiem obsługę I2C?

    Konfigurujemy I2C -> Wpisujemy adres Slave -> Wpisujemy dane do UCB1TXBUF -> Włączamy bit UCTXSTT(start transmisji)

    Oto moja konfiguracja dla trybu master transmit:

    UCB1CTL1 |= UCSWRST;
    UCB1CTL0 = UCMST + UCMODE1 + UCMODE0 + UCSYNC;
    UCB1CTL1 = UCSWRST + UCSSEL1 + UCSSEL0 + UCTR;
    UCB1BR0 = 0x12;
    UCB1BR1 = 0;
    UCB1I2CSA = 0x1E;
    P5SEL = 0x06;
    P5DIR = 0x06;
    UCB1CTL1 &= ~UCSWRST;

    Później:
    UCB1TXBUF = 0x36; //wpisałem obojętnie co do bufora
    UCB1CTL1 |= UCTXSTT;


    Oto przebieg na liniach SDA i SCL:

    SDA -----._________
    SCL --------._.--------

    Czy coś robię źle?
REKLAMA