API-005: 2-Wire Temperatur Sensor TCN75A, Bit-Banding

Diese API ermöglicht das Benutzen von 2-Wire (I2C) Temperatur Sensor TCN75A. Mit dieser API kann man die Konfiguration von TCN75A vornehmen, und die Umgebungstemperatur aus dem „Temperature“ Register auslesen.
  • Programmiersprache: ANSI C
  • Mikrocontroller: AT89C5131A - 8051 Mikrocontroller
  • IDE: µVision 4
  • Compiler: Cx51 V9.5

API Beschreibung

Diese API ermöglicht das Benutzen von 2-Wire (I2C) Temperatur Sensor TCN75A. Mit dieser API kann man die Konfiguration von TCN75A vornehmen, und die Umgebungstemperatur aus dem „Temperature“ Register auslesen. Diese API ist mit I2C-003 2-Wire Temperatur Sensor TCN75A kompatibel.

Folgende Voraussetzungen müssen erfüllt sein:

Programmiersprache: ANSI C
Mikrocontroller: AT89C5131A - 8051 MK
IDE: µVision 4
Compiler: Cx51 V9.5

Dateien

  • tcn75a.c - Datei mit C-Funktionen
  • tcn75a.h - Header Datei
  • tcn75a_config.h - Konfiguration Datei

Funktions-Deklarationen

// TCN75A Initialisierung
errorCodeTCN75A_t TCN75A_Init(void);

// Lese Temperatur aus TCN75A
errorCodeTCN75A_t TCN75A_GetTemp(float* temperature);

Konstanten

Error Code errorCodeTCN75A_t
// Error Code TCN75A
typedef enum _errorCodeTCN75A {
TCN75A_SUCCESS = 0x00,
TCN75A_BUSY = 0x01,
TCN75A_WRITE_FAIL = 0x02,
TCN75A_READ_FAIL = 0x03
} errorCodeTCN75A_t;

Konfiguration

In tcn75a_config.h kann man die Konfiguration von TCN75 und die Slave Adresse ändern. Die Einstellungen sind in zwei Gruppen unterteilt:
  • TCN75A „Configuration“ Register
  • Einstellung der Slave Adresse
Configuration Register
Öffnen Sie die Datei tcn75a_config.h. In der Zeile 61 steht folgende Präprozessor-Direktive:
#define TCN75A_CONFIG_BYTE 0x00
0x00 ist die „Power-up“ und Default Einstellung von TCN75A. Der Baustein arbeitet mit 9-bit Auflösung. Die Änderung dieser symbolischen Konstante bewirkt eine Änderung in dem „Configuration“ Register von TCN75A.

Einstellung der Slave Adresse
Öffnen Sie die Datei tcn75a_config.h. In der Zeile 78 steht folgende Präprozessor-Direktive:
#define TCN75A_SLAVE_ADDRESS 0x90
Standard Wert der symbolischen Konstanten TCN75A_SLAVE_ADDRESS ist 0x90, d.h. alle Jumper A0, A1, A2 stehen auf null.



TCN75A API Einstellungen über Configuration Wizard
Es ist möglich, die Einstellungen über Configuration Wizard vorzunehemen.

Machen Sie die tcn75a_config.h in µVision 4 auf. Klicken Sie auf der unteren Leiste auf den „Configuration Wizard“. Es öffnet sich eine „GUI-likeOberfläche. Über diese Oberfläche kann man alle Einstellungen auf einfachere Weise ändern. Die Standard Einstellungen kann man dem Bild unten entnehmen.


Funktionen

errorCodeTCN75A_t TCN75A_Init (void);

Diese Funktion initialisiert den TCN75A.

Über I2C wird die TCN75A_CONFIG_BYTE (tcn75a_config.h) Konstante in den „Configuration” Register von TCN75A geschrieben.

Diese Funktion verwendet folgende globale Konstanten:

  • TCN75A_SLAVE_ADDRESS (tcn75a_config.h) - Slave Adresse von TCN75A
  • TCN75A_CONFIG_REGISTER (tcn75a.c) - Pointer auf den “Configuration” Register
  • TCN75A_CONFIG_BYTE (tcn75a_config.h) - Konfiguration Byte

Diese Funktion verwendet folgende externe Funktionen:


Funktionstyp
errorCodeTCN75A_t - gibt den Status der Übertragung wieder. Mögliche Werte sind:

Konstanten Name Wert Beschreibung
TCN75A_SUCCESS 0x00 Übertragung erfolgreich
TCN75A_BUSY 0x01 Unbekannter Fehler
TCN75A_WRITE_FAIL 0x02 Schreiben fehlgeschlagen

Übergabeparameter
void

TCN75A_GetTemp TCN75A_Init (float* temperature);

Diese Funktion liest die Umgebungstemperatur aus dem „Temperature“ Register via I2C aus.

An diese Funktion wird der Pointer auf eine float Variable übergeben. Der Temperaturwert wird in diese float Variable gespeichert.

Diese Funktion verwendet folgende globale Konstanten:

  • TCN75A_SLAVE_ADDRESS (tcn75a_config.h) - Slave Adresse von TCN75A
  • TCN75A_TEMP_REGISTER (tcn75a.c) - Pointer auf den “Temperature” Register

Diese Funktion verwendet folgende externe Funktionen:


Funktionstyp
errorCodeTCN75A_t - gibt den Status der Übertragung wieder. Mögliche Werte sind:

Konstanten Name Wert Beschreibung
TCN75A_SUCCESS 0x00 Übertragung erfolgreich
TCN75A_BUSY 0x01 Unbekannter Fehler
TCN75A_WRITE_FAIL 0x02 Schreiben fehlgeschlagen
TCN75A_READ_FAIL 0x03 Empfang fehlgeschlagen

Übergabeparameter
float* temperature - Pointer auf float Variable für den gemessenen Temperaturwert

Beispiel

#include "tcn75a.h"	// TCN75A Header
#include "tcn75a_config.h" // TCN75A API Config

void main (void){
float temperature = 0.00f;

// TCN75A Initialisierung
TCN75A_Init();

// Temperaturmessung
TCN75A_GetTemp(&temperature);

while(1);
}