Hallo Leute, Ich versuche gerade an meinem C6713DSK das I2C-Modul[0] in betrieb zu nehmen, doch das gelingt mir noch nicht so richtig. Das folgende Projekt wird richtig compiliert, aber wenn ich das Projekt auf dem DSP ausführe, bewewegt sich nichts auf meiner SDA und SCL Leitung. Und beim debugen bleibt der DSP bei [while ((*(unsigned volatile int *)I2CSTR0 & 0x1000)==0x1000) {} ] in der for-Schleife hängen. könnt Ihr mir weiterhelfen. Gruß Silvio //////////// //i2c.h /////////// #ifndef I2C_H #define I2C_H //I2C Modul 0 #define I2COAR0 0x01B40000 //Own address register #define I2CIER0 0x01B40004 //Interrupt Enable Register #define I2CSTR0 0x01B40008 //Status Register #define I2CCLKL0 0x01B4000C //Clock Divider Registers low #define I2CCLKH0 0x01B40010 //Clock Divider Registers high #define I2CCNT0 0x01B40014 //Data Count Register #define I2CDRR0 0x01B40018 //Data Receive Register #define I2CSAR0 0x01B4001C //Slave Address Register #define I2CDXR0 0x01B40020 //Data Transmit Register #define I2CMDR0 0x01B40024 //Mode Register #define I2CISRC0 0x01B40028 //Interrupt Source Register #define I2CPSC0 0x01B40030 //Prescaler Register #define I2C_ACCESS_TIMEOUT 100 #define I2C_TIMEOUT 50 #endif ************************************************************************ ********* //////// //i2c.c //////// #include <csl.h> #include <csl_i2c.h> // Good code to keep ahold of. Searches for first I2C device on bus and then hangs #include <csl_i2c.h> #include "dsk6713_led.h" #include "dsk6713.h" #include "i2c.h" // I2C initialization structures I2C_Config i2c0_config = { 0x0000007F, // i2coar Own address register 0x00000000, // i2cimr Interrupt mask register 0x0000005a, // i2cclkl Clock control low register = 100kHz 0x0000005a, // i2cclkh Clock control high register = 100kHz 0x00000000, // i2ccnt Data count register 1 0x00000000, // i2csar Slave address register = an alle senden 0x00002E20, // i2cmdr Mode register 0x20 0x00000019 // i2cpsc Prescalar register 225MHz to 9 MHz }; far char reg_val; void main(){ //////////////////////////////////////////////////////////////////////// // Variablen //////////////////////////////////////////////////////////////////////// short i; I2C_Handle hI2C0; //////////////////////////////////////////////////////////////////////// //global CSL initialization // //////////////////////////////////////////////////////////////////////// CSL_init(); DSK6713_LED_init(); //////////////////////////////////////////////////////////////////////// //I2C module 0 initialization // //////////////////////////////////////////////////////////////////////// // Create a I2C device handle hI2C0 = I2C_open( I2C_DEV0, I2C_OPEN_RESET ); // Config the I2C I2C_config( hI2C0, &i2c0_config ); puts("Es geht los"); for (i=1;i<128;i++) { //Status Register Startbit senden while ((*(unsigned volatile int *)I2CSTR0 & 0x1000)==0x1000) {} *(unsigned volatile int *)I2CMDR0 = 0x0; // reset I2C *(unsigned volatile int *)I2CCNT0 = 0x1; *(unsigned volatile int *)I2CSAR0 = i; //Slave Adresse *(unsigned volatile int *)I2CMDR0 = 0x2E20; //Mode Register //Daten die zu übertragen sind *(unsigned volatile int *)I2CDXR0 = 0x00; DSK6713_LED_toggle(2); while ((*(unsigned volatile int *)I2CSTR0 & 0x2) == 0x0) {} *(unsigned volatile int *)I2CSTR0 = 0x1000; *(unsigned volatile int *)I2CMDR0 = 0x0; // reset I2C DSK6713_LED_toggle(3); } }
Kennt sich hier keiner mit der I2C Schnittstelle am C6713 aus? Schade...
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.