I2C (TWI) Schnittstelle Emulator - 8051 Mikrocontroller AT89C5131A
Diese API emuliert eine I2C (TWI) Schnittstelle und ermöglicht das Senden und Empfangen der Daten über die I2C (TWI) Schnittstelle eines 8051 AT89C5131A Mikrocontrollers.
- Programmiersprache: ANSI C
- Mikrocontroller: AT89C5131A - 8051 Mikrocontroller
- IDE: µVision 4
- Compiler: Cx51 V9.5
API Beschreibung
Diese API emuliert eine I2C (TWI) Schnittstelle und ermöglicht das Senden und Empfangen der Daten über die I2C (TWI) Schnittstelle eines 8051 AT89C5131A Mikrocontrollers.
Programmiersprache: | ANSI C |
Mikrocontroller: | AT89C5131A - 8051 MK |
IDE: | µVision 4 |
Compiler: | Cx51 V9.5 |
Dateien
- emuI2C.c - Datei mit C-Funktionen
- emuI2C.h - Header Datei
- emuI2C_config.h - Konfiguration Datei
Einstellungen der Port Pins für SCL und SDA
Standartmäßig sind die SCL Leitung dem Port 4_0 und die SDA Leitung dem Port 4_1 zugewiesen. Diese Einstellung ist vollkompatibel mit den Steckplätzen der stack2Learn Mikrokontroller Boards.Es ist möglich die Port Pins für SDA und SCL Leitungen zu ändern. Um das zu machen öffnen Sie die emuI2C_config.h Datei. Suchen Sie die Zeilen mit dem folgenden Code:
//--Konfiguration----------------------------------------------------------- // I2C Parameter // Standard Werte sind: // scl = P4^0; // sda = P4^1; sbit scl = P4^0; sbit sda = P4^1; //------Ende Konfiguration---------------------------------------------------
Ändern Sie je nach Bedarf die Port Pins für SCL und SDA Signale um.
Beispiel
Die SCL Leitung soll auf dem Port 1 Pin 2 liegen und SDA Leitung am Port 2 Pin 7. Der Code soll wie folgt geändert werden:sbit scl = P1^2; sbit sda = P2^7;
Funktions-Deklarationen
// Sende Daten ueber I2C errorCodeEmuI2C_t EmuI2C_SendData(unsigned char* , unsigned char ); // Empfange Daten ueber I2C errorCodeEmuI2C_t EmuI2C_ReceiveData(unsigned char* , unsigned char );
Konstanten
Error Code errorCodeEmuI2C_t
// Error Code der I2C Schnittstelle typedef enum _errorCodeEmuI2C { EMU_I2C_SUCCESS = 0, EMU_I2C_BUSY = 1, EMU_I2C_TRANSMISSION_FAIL = 2 } errorCodeEmuI2C_t;
Funktionen
errorCodeEmuI2C_tEmuI2C_SendData (unsigned char* pData, unsigned char size);
Diese Funktion sendet ein Array über die I2C (TWI) Schnittstelle.
An diese Funktion wird ein Array "pData" mit Daten übergeben. Die Slave Adresse des I2C Bausteins soll in dem Arrayindex [0] stehen. Die weiteren Daten zum Senden stehen in anderen Indizes des Arrays.
Die Variable "size" teilt der Funktion die Anzahl der Bytes mit, die gesendet werden müssen.erden müssen.
unsigned char size - Anzahl der Bytes zum Senden
An diese Funktion wird ein Array "pData" mit Daten übergeben. Die Slave Adresse des I2C Bausteins soll in dem Arrayindex [0] stehen. Die weiteren Daten zum Senden stehen in anderen Indizes des Arrays.
Die Variable "size" teilt der Funktion die Anzahl der Bytes mit, die gesendet werden müssen.erden müssen.
Funktionstyp
errorCodeEmuI2C_t - gibt den Status der Übertragung wieder. Mögliche Werte sind:Konstanten Name | Wert | Beschreibung |
---|---|---|
EMU_I2C_SUCCESS | 0x00 | Übertragung erfolgreich |
EMU_I2C_BUSY | 0x01 | Unbekannter Fehler |
EMU_I2C_TRANSMISSION_FAIL | 0x02 | Übertragung fehlgeschlagen |
Übergabeparameter
unsigned char* pData - Array mit Daten zum Sendenunsigned char size - Anzahl der Bytes zum Senden
errorCodeEmuI2C_t EmuI2C_ReceiveData (unsigned char* pData, unsigned char size);
Diese Funktion empfängt Daten über die I2C (TWI) Schnittstelle.
An diese Funktion wird ein Array "pData" mit Daten übergeben. Die Slave Adresse + 1 (R/W - Bit) des I2C Bausteins soll in dem Arrayindex [0] stehen.
Die Variable "size" teilt der Funktion die Anzahl der Bytes mit, die empfangen werden müssen. Die empfangenen Bytes werden in den gleichen Array "pData"ab Index [0] gespeichert.
unsigned char size - Anzahl der Bytes zum Senden
An diese Funktion wird ein Array "pData" mit Daten übergeben. Die Slave Adresse + 1 (R/W - Bit) des I2C Bausteins soll in dem Arrayindex [0] stehen.
Die Variable "size" teilt der Funktion die Anzahl der Bytes mit, die empfangen werden müssen. Die empfangenen Bytes werden in den gleichen Array "pData"ab Index [0] gespeichert.
Funktionstyp
errorCodeEmuI2C_t - gibt den Status der Übertragung wieder. Mögliche Werte sind:Konstanten Name | Wert | Beschreibung |
---|---|---|
EMU_I2C_SUCCESS | 0x00 | Übertragung erfolgreich |
EMU_I2C_BUSY | 0x01 | Unbekannter Fehler |
EMU_I2C_TRANSMISSION_FAIL | 0x02 | Übertragung fehlgeschlagen |
Übergabeparameter
unsigned char* pData - Array für empfangene Datenunsigned char size - Anzahl der Bytes zum Senden
Beispiel
#include "emuI2C.h" // Emulator I2C Header #define ADC_ADRESS 0xAA void main (void){ unsigned char test[3] ={0x00}; // sende Daten ueber I2C test[0] = ADC_ADRESS; // Slave Adresse test[1] = 0x01; // Datenbyte 1 test[2] = 0x02; // Datenbyte 2 EmuI2C_SendData (test, 3); // Daten senden via I2C // empfange Daten ueber I2C test[0] = ADC_ADRESS + 1; // Slave Adresse EmuI2C_ReceiveData(test, 3); // Daten empfangen via I2C while(1); }