MCP2221

Seit einiger Zeit bietet Microchip den MCP2221 an. Bei dem IC handelt es sich um eine USB to UART/I2C-Bridge die zudem noch ein paar GPIOs, sowie ADC- und DAC-Kanäle. Der Baustein braucht kaum Außenbeschaltung und ist gleichzeitig sehr günstig – zudem ist er auch bei Reichelt in gut lösbare Gehäusen verfügbar. Klasse!

Nachdem ich ein bisschen mit dem Chip gespielt habe, hat sich die Begeisterung allerdings etwas gelegt. Er kann zwar alles was er verspricht, aber dann doch nicht so richtig gut. Zum einen unterstützt er beim UART nur den Betrieb mit 8 Datenbits, No Parity und ein Stoppbit; reicht für viele Anwendungen, aber nicht für alle. Zum anderen verschluckt er sich zumindest in hterm selbst an Standardbaudraten – u. a. bei 115200 Baud kann der Port nicht geöffnet werden – fraglich ist, auf welcher Seite die Implementierung nicht so toll ist (mit Putty hat es geklappt). Mit anderen Chips hatte ich solche Probleme jedenfalls noch nicht.

Auch soll bei höheren Baudraten der effektive Durchsatz sinken, da zwischen den einzelnen Datenbytes immer größere Lücke entstehen (siehe), was aber vermutlich eher daran liegt, dass die Spec vom Chip nur bis 115200 Baud geht. In meinen Tests war alles soweit okay.

9600 Baud:

image

115200 Baud:

image

Beim I2C sieht es nach meinen Erfahrungen noch schlechter aus. Bei längeren Übertragungen steigt der Controller gerne mal aus und gibt alle Daten mit 0x00 an den PC zurück, obwohl etwas anderes gelesen wurde. Bei den Bitraten gibt offenbar nur zwei verschiedene Möglichkeiten: 100 kHz und 400 kHz. Leider sieht es beim Timing, wie  beim UART, eher mau aus: zwischen den den einzelnen Abfrage klaffen lange Lücken.

Bei 100 kHz sind es etwa 19 ms zwischen den Kommunikationsblöcken,

image

bei 400 kHz sind es zwar „nur“ knapp 9 ms:

image

trotzdem sind die Lücken unverhältnismäßig groß.

Jemand im eevblog-Forum will übrigens herausgefunden haben, dass es sich bei dem Baustein einfach nur um einen PIC handelt (siehe, via). Das ist nichts verwerfliches dran, weil es eine schöne Anwendung für den Chip ist. Leider machen die oben beschriebenen Unzulänglichkeiten den Baustein nicht zur „Universalwaffe“ als Logik-Kleber für eigene Anwendungen.

Eine wirklich taugliche und verfügbare USB-I2C-Bridge habe ich bis jetzt noch nicht gefunden. Leider.