Arduino und SPI - TLC549


Gepostet Oktober 2017, Kategorie: I2C & SPI


Arduino und SPI - TLC549


Inhaltsverzeichnis


    Datenblatt: http://www.ti.com.cn/cn/lit/ds/symlink/tlc549.pdf

    Aufbau

    Aufbau Schaltplan

    An den analogen Eingang des TLC549 wird ein Potentiometer angeschlossen, um eine Spannung einstellen zu können, die durch den ADC gemessen werden soll.

    Über die Anschlüsse REF+ und REF- werden die Referenzspannungen des AD-Wandlers definiert. Schließt man 5 V und GND an diese Pins an, so wird des Messbereich des ADC auf 0 bis 5 V festgelegt.

    Der Clock-Pin wird mit der SCK-Leitung des SPI-Bus verbunden. Der DOUT-Pin wird mit der MISO-Leitung des SPI-Bus verbunden. Der CS-Pin (Chip-Select) kann mit einem beliebigen Pin des Arduinos verbunden werden. Die MOSI-Leitung wird nicht benötigt bei diesem IC, da keine Daten vom Master an den Slave übertragen werden müssen.

    Programmierung

    Eine Hilfe stellt das folgenden Bild aus dem Datenblatt auf Seite 3 dar.

    Ablauf einer Messung

    Das folgenden Programm gibt die Daten des AD-Wandlers über die serielle Schnittstelle aus.

    Bei der Initialisierung ist zu beachten, dass die SPI-Clock durch 16 geteilt werden muss, da die im Datenblatt verzeichnete Maximalfrequenz 1.1 MHz beträgt.

    Durch die Anweisung digitalWrite(CS, LOW); wird der TLC549 eingeschaltet und während des Programmablaufes nicht mehr ausgeschaltet.

    Die Abfrage der Daten erfolgt durch die Anweisung SPI.transfer(0x00). Indem Daten über den SPI-Bus gesendet werden, taktet die SPI-Clock und gleichzeitig werden die Daten vom Slave empfangen. Das empfangene Byte wird von der Methode SPI.transfer() zurückgegeben und anschlißend über die serielle Schnittstelle an den PC übertragen.

    #include <SPI.h>
    const uint8_t CS = 10;
     
    void setup() {
      Serial.begin(9600);
      SPI.begin();
      SPI.setClockDivider(SPI_CLOCK_DIV16);
     
      pinMode(CS, OUTPUT);
      digitalWrite(CS, LOW);
    }
     
    void loop() {
      Serial.println(SPI.transfer(0x00));
      delay(20);
    }
    Wetterdaten Eilenburg
    Temperatur: 23.6 °C
    Luftdruck: 1011.2 hPa
    Luftfeuchte: 37 %
    [mehr]