www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP TMS320C6713 mit mehreren I²C-Devices


Autor: Tommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich arbeite zur Zeit mit dem I²C-Modul vom TMS320C6713. Ich möchte zum 
einen ein Eeprom und einen I²C-Lichtsensor an den Bus hängen. Schließe 
ich ein Device alleine an funktioniert alles. Sobald aber beide am Bus 
hängen funktioniert nur das mit der Device-Nummer 0, welches als erstes 
initialisiert wurde. Will ich vom zweiten etwas lesen, ist der Bus im 
Ruhezustand und es wird nicht einmal eine Startbedingung oder eine 
Adresse gesendet. Wo könnte hier das Problem liegen?

Das ist meine Initialisierungs-Funktion:
/* ucI2CDevice -> 0 for Sensor
                  1 for Eeprom
*/
void Hardware_InitI2CModule(unsigned char ucI2CDevice)
{
  // initialize error flag
  g_efHardware_ErrorFlags.boI2CTimoutOccured = FALSE;
  // Configurate the bus
  I2C_Config myI2CConfig = 
  {
    I2C_OWN_ADDRESS,        // Own Adress register (0x00)
    0x00000000,             // Interrupt mask register
    I2C_CLOCK_DIVIDERS,     // Clock control low register       //  0x2c = 44d
    I2C_CLOCK_DIVIDERS,     // Clock control high register      //  0x2c = 44d
    0x00000000,             // Data count register
    g_arriiHardware_I2CInfo[ucI2CDevice].ucDeviceAddress,          // Slave address register which is saved in an array accordingly to the device number
    0x00000000,             // Mode register
    I2C_PRESCALER           // Prescaler register
  };

  g_arriiHardware_I2CInfo[ucI2CDevice].ihDeviceHandle = I2C_open(ucI2CDevice, I2C_OPEN_RESET); 

  if (g_arriiHardware_I2CInfo[ucI2CDevice].ihDeviceHandle == INV)                             // is handle valid ??
  {
    // not valid
    ErrorHdl_ThrowExcptn(EN_EXCEPTION_I2C_COMMUNICATION_TIMEOUT, "No valid I2C Handle", EL_EXCEPTION_HIGHEST_PRIO);
    return;
  };

  I2C_reset(g_arriiHardware_I2CInfo[ucI2CDevice].ihDeviceHandle);                             // Reset the modul  
    
  I2C_config(g_arriiHardware_I2CInfo[ucI2CDevice].ihDeviceHandle, &myI2CConfig);              // Configure the I2C module
                                                              // only set the clock timing
                                                              // other configurations later
}

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.