I2C-Modul am c6713dsk

OP #441871
Lesenswert?
• ▲
▼
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);
}
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.