I2C-Modul am TMS320C6713DSK

OP #441903
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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.