www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP I2C-Modul am TMS320C6713DSK


Autor: Alex Re (ti_dsp_newbie)
Datum:

Bewertung
0 lesenswert
nicht 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);
}
}

Autor: Alex Re (ti_dsp_newbie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennt sich hier keiner mit der I2C Schnittstelle am C6713 aus?
Schade...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.