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.