Hallo zusammen
Ich habe ein Spartan 3E Starter Kit und möchte gerne den I2C-Controller
implementieren. (aus dem EDK IP-Catalog -OPB IIC Bus Interface
(v1.02a)-)
Ich habe ihn soweit auch eingebunden und kann auch das Bitstream
erstellen. Nur jetzt ist mein Problem, das ich ihn irgendwie nicht
richtig anspreche bzw. initialisiere.
Ich möchte mein Board als Slave Receiver behandeln, und ankommende Daten
auf z.B. RS232 ausgeben.
Ich hätte es mir so etwa gedacht...
// Test des I2C - Controllers (v1.02a) ////////////////////////////
#include "xparameters.h"
#include "xgpio.h"
#include "stdio.h"
#include "xstatus.h"
//Adressdefinition/////////////////////////////////////////////////
#define I2CReceive 0x4080010C // Register für emfangene I2C Daten
#define I2CAddr 0x40800110 // Adressregister
#define I2CControl 0x40800100 // Control Register
#define I2CStatus 0x40800104 // Statusregister
#define RS2 0x40600004 // Sende Register zur RS232
//Hauptprogramm ///////////////////////////////////////////////////
int main(void)
{
//Variablendeklaration ///////////////////////////////////////////
unsigned long *addrreceive; // Variable für I2C Empfangsregister
unsigned long *addraddr; // Variable für I2C Adressregister
unsigned long *addrcontr; // Variable für I2C Controllregister
unsigned long *addrstatus; // Variable für I2C Statusregister
unsigned long *addrrs; // Variable für RS232 Senderegister
//Pointerdecleration ////////////////////////////////////////////
addrreceive = (unsigned long*) I2CReceive; // emfangene I2C Daten
addraddr = (unsigned long*) I2CAddr; // Slave Adresse
addrcontr = (unsigned long*) I2CControl; // Control Register
addrstatus = (unsigned long*) I2CStatus; // Statusregister
addrrs = (unsigned long*) RS2; // Sende Register zur RS232
*addrcontr = 0x02; // Reset the Controller und FIFO transmit (0000010)
*addrcontr = 0x03; // Controller Initialisieren (als Slave) (0000011)
*addraddr = 0x84; // Controlleradresse vergeben entspricht 0x42
while(1)
{
*addrrs = (*addrreceive & 0x7F);// Abfrage des FIFO-Receive-Registers
(7Bit)
}
return 0;
}
Könnte man das prinzipiell so machen ?
Ich hoffe es kan mir da jemand helfen.
Vielen Dank schonmal...
Viele Grüße
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.