FTDI 2232 I2C und SPI nutzen

Gast #3908861
Lesenswert?

Hi Leute,

ich möchte mit dem FT2232 von FTDI eine SPI und eine I2C-Schnittstelle 
auf einem Chip realisieren. Ich verwende dafür die originalen .libs und 
header Dateien. Leider haben die Pappnasen in den headern die Struktur 
"ChannelConfig" in beiden gleich genannt, sodass wenn ich die 
Deklarationen ändere, ich eine Fehlermeldung in Qt bekomme:

Fehler: C2664: 'FT_STATUS I2C_InitChannel(FT_HANDLE,ChannelConfig *)' : 
Konvertierung von Argument 2 von 'ChannelConfig_SPI *' in 'ChannelConfig 
*' nicht m”glich
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die 
Konvertierung erfordert einen reinterpret_cast-Operator oder eine 
Typumwandlung im C- oder Funktionsformat.

Ich nutze den MSVC Compiler in 32 Bit.

Hier noch Codeschnipsel:
Änderung in der libMPSSE_spi.h
1
typedef struct ChannelConfig_SPI_t
2
{
3
  uint32  ClockRate;
4

5
  uint8  LatencyTimer;
6

7
  uint32  configOptions;
8

9
  uint32    Pin;
10

11
  uint16    reserved;
12
}ChannelConfig_SPI;

Hier aus .cpp Datei:
1
    //Werte für MPSSE setzten
2
 ChannelConfig_SPI ChannelConfiguration;
3
 ChannelConfiguration.ClockRate = 300000; /*i.e. 300 KHz*/
4
 ChannelConfiguration.LatencyTimer = 255;
5
 ChannelConfiguration.configOptions = SPI_CONFIG_OPTION_MODE1;
6
 ChannelConfiguration.Pin = 0;
7

8
 ftStatus = I2C_InitChannel(ftHandle, &ChannelConfiguration);

Wie bekomme ich das Problem in den Griff?
#3908941
Lesenswert?

Hm, ich würde dann alles was mit SPI und I2C zu tun hat in 2 separaten 
C(++) Dateien packen damit sich die ChannelConfiguration-Definitionen 
nicht beissen. Exportierte Funktionen und Deklarationen in diesen 2 
Dateien dürfen dann natürlich keine Parameter usw von Typ 
ChannelConfiguration haben.
Gast #3909076
Lesenswert?

Toni schrieb:
> Super, danke für den Tipp.
> Ist zwar blöd, aber funktioniert :)
> Gibt´s auch eine Möglichkeit diese Geschichte mit Klassen zu
> Programmieren?

Du kannst es mit Namespaces versuchen
1
namespace I2C {
2
#include "header1.h"
3
};
4
namespace SPI {
5
#include "header2.h"
6
};

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren