MCP2221 Baustein ansprechen
-
- Beiträge: 6164
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
MCP2221 Baustein ansprechen
Hat jemand von euch schon mal eine MCP2221 angesprochen ?
Am liebsten unter Linux mit Lazarus.
Hierbei handelt es sich um einen Baustein, welcher einen I²C-Bus am USB zu Verfügung stellt.
Leider habe ich bis jetzt nur ein paar Examples für Java unter Windows gefunden. http://www.microchip.com/wwwproducts/en/MCP2221
Wen es wenigstens etwas mit C/C++ hätte, dann könnte man es vielleicht auf Lazarus portieren.
Am liebsten unter Linux mit Lazarus.
Hierbei handelt es sich um einen Baustein, welcher einen I²C-Bus am USB zu Verfügung stellt.
Leider habe ich bis jetzt nur ein paar Examples für Java unter Windows gefunden. http://www.microchip.com/wwwproducts/en/MCP2221
Wen es wenigstens etwas mit C/C++ hätte, dann könnte man es vielleicht auf Lazarus portieren.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6164
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
Ich habe das etwas gefunden: https://bigdanzblog.wordpress.com/2014/ ... ee-pascal/
Sieht aber nach Raspberry aus.
Sieht aber nach Raspberry aus.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
Ein Interessanter Baustein...
Zuerst dachte ich an Arduino, aber das scheidet wohl aus. So bleibt dir wohl nichts anders übrig als ein Treiber dafür zu finden.
Wie wird er unter Linux erkannt?
was sagt z.b. lsusb? was sagt dmesg?
EDIT01: Schon mal gut, dass es scheinbar dafür Linux Treiber gibt, ich nehme an, die hast du schon gefunden und installiert?
EDIT02: Vielleicht hilft dir libUSB weiter. Damit konnte meine USB Funk Fernbedienung auslesen(Zugegeben, mit etwas helfe vom Forum *G*).
EDIT03: http://ww1.microchip.com/downloads/en/D ... Readme.txt
Da steht es.... denke ich Mein Englisch ist nicht so gut, aber so wie es aussieht brauchst du einfach nur ein Seriellen Monitor.
Zuerst dachte ich an Arduino, aber das scheidet wohl aus. So bleibt dir wohl nichts anders übrig als ein Treiber dafür zu finden.
Wie wird er unter Linux erkannt?
was sagt z.b. lsusb? was sagt dmesg?
EDIT01: Schon mal gut, dass es scheinbar dafür Linux Treiber gibt, ich nehme an, die hast du schon gefunden und installiert?
EDIT02: Vielleicht hilft dir libUSB weiter. Damit konnte meine USB Funk Fernbedienung auslesen(Zugegeben, mit etwas helfe vom Forum *G*).
EDIT03: http://ww1.microchip.com/downloads/en/D ... Readme.txt
Da steht es.... denke ich Mein Englisch ist nicht so gut, aber so wie es aussieht brauchst du einfach nur ein Seriellen Monitor.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6164
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
Mit lauter googeln habe habe ich noch entdeckt, das jede VGA-Karte einen I²C-Bus hat, auch meine NVidia.
Somit konnte ich folgenden Code laufen lassen.
Dieser liest Messdaten, aus einem ADS1115 aus.
Ein Wermutstropfen hat es noch, es läuft nur als Benutzer Root. Und ob es schlau ist, dir Grakrt. zu missbrauchen, kann ich auch nicht sagen.
Somit wird wohl ein einfacher I²C Zugriff auf den MCP2221 möglich sein.
Nur wie sieht es mit konfigurieren aus, zB. I²C-Takt ?
Ob dies mit fpIOCtl möglich ist,
Auch sind auf dem IC noch GPIO vorhanden.
Somit konnte ich folgenden Code laufen lassen.
Dieser liest Messdaten, aus einem ADS1115 aus.
Ein Wermutstropfen hat es noch, es läuft nur als Benutzer Root. Und ob es schlau ist, dir Grakrt. zu missbrauchen, kann ich auch nicht sagen.
Code: Alles auswählen
program project1;
{$mode objfpc}{$H+}
uses
baseUnix, Classes, SysUtils;
const
I2C_SLAVE = 1795;
var
buf: packed array [0..3] of byte;
devPath: string = '/dev/i2c-1';
handle: Cint;
iDevAddr: Cint = $48;
Config: word;
begin
handle := fpopen(devPath, O_RDWR);
WriteLn('Handle: ', handle);
Sleep(1000);
if handle = -1 then begin
halt;
end;
fpIOCtl(handle, I2C_SLAVE, pointer(iDevAddr));
while True do begin
Config := ($4000 + 0 * $1000) or $80C3;
buf[0] := 1;
buf[1] := Config shr 8;
buf[2] := Config mod $100;
fpwrite(handle, buf, 3);
sleep(10);
buf[0] := 0;
buf[1] := 0;
buf[2] := 0;
fpwrite(handle, buf, 1);
sleep(10);
fpread(handle, buf, 2);
WriteLn( buf[0] * $100 + buf[1]: 6);
sleep(10);
end;
fpclose(handle);
end.
Somit wird wohl ein einfacher I²C Zugriff auf den MCP2221 möglich sein.
Nur wie sieht es mit konfigurieren aus, zB. I²C-Takt ?
Ob dies mit fpIOCtl möglich ist,
Auch sind auf dem IC noch GPIO vorhanden.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 24
- Registriert: Mi 14. Nov 2012, 14:36
- OS, Lazarus, FPC: Rosa Linux Desktop R8 (L 1.6, FPC 2.6.4)
- CPU-Target: 32Bit
Re: MCP2221 Baustein ansprechen
Also ich habe gerade ein Projekt mit dem IOWarrior http://www.codemercs.com/de/io-warrior/31-io-warrior IOW24
fertiggestellt.
Ich weiß nicht, ob dir das hilft, aber das Auslesen von Messdaten über USB mit Lazarus unter Linux war da super-einfach.
Ich habe einen A/D-Wandler MCP3201 (0...5 V Eingang, 12 bit Ausgang über SPI Serial Interface) an den IOW24 gehängt... und schon funktionierts.
Beim IOWarrior ist eine dll für Windows und eine Linux-Schnittstelle dabei und Beispiel-Code für Delphi. Mit ein paar Änderungen für Lazarus hat das auf Anhieb geklappt.
Kann dir gerne die angepasste Lazarus-Schnittstelle hier einstellen, wenn gewünscht.
edit: Ich sehe gerade, der IOW24 kann auch I2C Schnittstelle.
fertiggestellt.
Ich weiß nicht, ob dir das hilft, aber das Auslesen von Messdaten über USB mit Lazarus unter Linux war da super-einfach.
Ich habe einen A/D-Wandler MCP3201 (0...5 V Eingang, 12 bit Ausgang über SPI Serial Interface) an den IOW24 gehängt... und schon funktionierts.
Beim IOWarrior ist eine dll für Windows und eine Linux-Schnittstelle dabei und Beispiel-Code für Delphi. Mit ein paar Änderungen für Lazarus hat das auf Anhieb geklappt.
Kann dir gerne die angepasste Lazarus-Schnittstelle hier einstellen, wenn gewünscht.
edit: Ich sehe gerade, der IOW24 kann auch I2C Schnittstelle.
-
- Beiträge: 6164
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
Danke erst mal.
Dies wäre sicher interessant.
Läuft der IOWarrior auch über USB-HID ?
Ich muss das Ganze bei Gelegenheit mal genauer angucken, zuerst muss ich auch den MCP2221 bestellen.
So wie es aussieht, ist der MCP3201 ein reiner I²C IC, ohne UART und GPIO.
Kann dir gerne die angepasste Lazarus-Schnittstelle hier einstellen, wenn gewünscht.
Dies wäre sicher interessant.
Läuft der IOWarrior auch über USB-HID ?
Ich muss das Ganze bei Gelegenheit mal genauer angucken, zuerst muss ich auch den MCP2221 bestellen.
So wie es aussieht, ist der MCP3201 ein reiner I²C IC, ohne UART und GPIO.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
So wie es aussieht, ist der MCP3201 ein reiner I²C IC, ohne UART und GPIO.
So ganz ohne kann ich mir gar nicht vorstellen. Ein Uart wird drauf sein, der die Signale vom I²C nach "Digital" wandelt.
Wie schließt du ihn denn an? Doch an USB?
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
Ich habe gestern/heute jemanden gefragt der sich auskannte:
1. Der Grafikkarte schadet es jedenfalls nicht. Er würde oder hat es auch so gemacht und hat sich sogar ein Adapter dafür gebaut.
2. Er hat sich auch eine Platine erstellt, welches I²C auf USB konvertiert und das lädt der Kernel Automatisch.
D.H. an diesen Adapter kann man alles anschließen, was I²C spricht. Ich habe ihn eine Platine abgekauft.
Er meinte auch, Portexpanter werden in der Regel sehr gut unterstützt vom Kernel und stellen eine Gpio Interface bereit.
Welches man genau so bedienen kann wie auf einem PI.
Es gibt aber auch fertige Module zum Kaufen, welches I²C auf USB machen. bei Alieexpress habe ich mal welche gefunden. Ich werde in der nächsten Zeit ein paar Tests machen. Ich habe zwar kein MCP aber andere I²C Komponenten.
Im Übrigen meinte er auch, ich könnte wahrscheinlich deinen Code den du gefunden hast bzw. geändert hast sofort übernehmen.
Wenn seine Aussage Zutriffst, gibt es mehrer Tools für Linux die mit I2C irgendwie anfangen, die suche ich noch.
Damit kannst du dann z.b. die adresse feststellen und erste Tests machen.
1. Der Grafikkarte schadet es jedenfalls nicht. Er würde oder hat es auch so gemacht und hat sich sogar ein Adapter dafür gebaut.
2. Er hat sich auch eine Platine erstellt, welches I²C auf USB konvertiert und das lädt der Kernel Automatisch.
D.H. an diesen Adapter kann man alles anschließen, was I²C spricht. Ich habe ihn eine Platine abgekauft.
Er meinte auch, Portexpanter werden in der Regel sehr gut unterstützt vom Kernel und stellen eine Gpio Interface bereit.
Welches man genau so bedienen kann wie auf einem PI.
Es gibt aber auch fertige Module zum Kaufen, welches I²C auf USB machen. bei Alieexpress habe ich mal welche gefunden. Ich werde in der nächsten Zeit ein paar Tests machen. Ich habe zwar kein MCP aber andere I²C Komponenten.
Im Übrigen meinte er auch, ich könnte wahrscheinlich deinen Code den du gefunden hast bzw. geändert hast sofort übernehmen.
Wenn seine Aussage Zutriffst, gibt es mehrer Tools für Linux die mit I2C irgendwie anfangen, die suche ich noch.
Damit kannst du dann z.b. die adresse feststellen und erste Tests machen.
MFG
Michael Springwald
Michael Springwald
Re: MCP2221 Baustein ansprechen
Über die Anwendungsverwaltung lassen sich I2C-tool und libi2c-dev installieren (Linux Mint 18), einfach in der suche i2c eingeben. Falls es auf deinem Linux keine Anwendungsverwaltung gibt dann tus natürlich auch die Synaptic Paketverwaltung.
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
Mein Adapter habe ich zum laufen bekommen, ich konnte sogar über I²C ein I²C Adapter für ein LCD2004 anschließen.
Mit etwas suchen habe ich ein PI Code gefunden, der auch auf einem PC geht. Tolle Sache.
So ein MCP2221 habe ich zwar noch nicht, aber im Prinzip müsste der, wie gesagt als GPIO zuverfügunggestellt werden.
Das ist vergleichbar mit dem PI:
Das meiste was dort läuft, müsste auf dem PC dann auch laufen. Es gibt ein paar LIb, die ich gefunden habe von Adafruit, die laufen nicht auf dem PC.
Mit etwas suchen habe ich ein PI Code gefunden, der auch auf einem PC geht. Tolle Sache.
So ein MCP2221 habe ich zwar noch nicht, aber im Prinzip müsste der, wie gesagt als GPIO zuverfügunggestellt werden.
Das ist vergleichbar mit dem PI:
Das meiste was dort läuft, müsste auf dem PC dann auch laufen. Es gibt ein paar LIb, die ich gefunden habe von Adafruit, die laufen nicht auf dem PC.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6164
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
1. Der Grafikkarte schadet es jedenfalls nicht. Er würde oder hat es auch so gemacht und hat sich sogar ein Adapter dafür gebaut.
Schaden nicht, aber es kann Fehlübertragungen geben.
Bei meinem Mess-Programm, sind etwa 30 Messungen gut, dann kommt ein Fehlmessungen, anschliessend ist wieder gut, bei ca 3000-5000 Messungen.
Vielleicht macht der Grafik-Treiber spontan ische Abrufe, ob ein Monitor angeschlossen ist.
Über die Anwendungsverwaltung lassen sich I2C-tool und libi2c-dev installieren (Linux Mint 18)
Habe ich gemacht, sonst würde das mit dem VGA nicht funktionieren.
Ein Wermutstropfen hat es noch, es läuft nur als Benutzer Root.
Dies ist gelöst.
Code: Alles auswählen
sudo adduser $USER i2c
das selbe wie bei den COM-Ports.
Code: Alles auswählen
sudo adduser $USER dialout
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
Schaden nicht, aber es kann Fehlübertragungen geben.
Bei meinem Mess-Programm, sind etwa 30 Messungen gut, dann kommt ein Fehlmessungen, anschliessend ist wieder gut, bei ca 3000-5000 Messungen.
Vielleicht macht der Grafik-Treiber spontan ische Abrufe, ob ein Monitor angeschlossen ist.
Ich werde mal in der Nächsten Woche nachfragen, ob er eine Lösung dafür weiß.
Vielleicht misst du zu schnell? Was genau misst du?
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
Im Datenblatt habe ich vielleicht etwas gefunden, nur mein Englisch ist nicht so gut:
http://cdn-reichelt.de/documents/datenb ... 221_DB.pdf
Auf Seite 23
Ich nehme mal an, damit ist der Bus Speed gemeint.
http://cdn-reichelt.de/documents/datenb ... 221_DB.pdf
Auf Seite 23
Set I2C/SMBus communication
speed (sub-command)
Ich nehme mal an, damit ist der Bus Speed gemeint.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6164
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
pluto hat geschrieben:Im Datenblatt habe ich vielleicht etwas gefunden, nur mein Englisch ist nicht so gut:
http://cdn-reichelt.de/documents/datenb ... 221_DB.pdf
Auf Seite 23Set I2C/SMBus communication
speed (sub-command)
Ich nehme mal an, damit ist der Bus Speed gemeint.
Zuerst muss man aber wissen, wie man die HID-Device anspricht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
Ach ja und noch was ist mir aufgefallen: Warum hast du den eigentlich an die Grafikkarte angeschlossen?
Laut Datenblatt hat er ein direkten USB Ausgang D+ D-. Ich bin mir nicht 100% Sicher, aber ich wette, dort brauchst du nur ein USB Kabel anzuschließen.
In deinem Code sendest du ja bereits ein Kommando zum IC. drei mal 000. Ich könnte mir gut vorstellen, dass das so heißt:
0x00. Aber ich habe damit keine Erfahrung. Du könntest ja mal eine LED anschließen.
Ich kenne das jedenfalls so, dass man erst mal den PIN konfigurieren muss und das steht im Datenblatt drin.
Vielleicht kaufe ich mir den auch mal, dann kann ich damit rumspielen.
Im Prinzip müsstest du in deinem dev Verzeichnis irgendwo ein GIPO unterverzeichnis haben, wenn ich es richtig verstanden habe. Es müsste so laufen, wie beim PI. Daran kannst du dich gut Orientieren.
Bei meinem LCD habe ich es auch erst mal so gemacht.
Laut Datenblatt hat er ein direkten USB Ausgang D+ D-. Ich bin mir nicht 100% Sicher, aber ich wette, dort brauchst du nur ein USB Kabel anzuschließen.
In deinem Code sendest du ja bereits ein Kommando zum IC. drei mal 000. Ich könnte mir gut vorstellen, dass das so heißt:
0x00. Aber ich habe damit keine Erfahrung. Du könntest ja mal eine LED anschließen.
Ich kenne das jedenfalls so, dass man erst mal den PIN konfigurieren muss und das steht im Datenblatt drin.
Vielleicht kaufe ich mir den auch mal, dann kann ich damit rumspielen.
Im Prinzip müsstest du in deinem dev Verzeichnis irgendwo ein GIPO unterverzeichnis haben, wenn ich es richtig verstanden habe. Es müsste so laufen, wie beim PI. Daran kannst du dich gut Orientieren.
Bei meinem LCD habe ich es auch erst mal so gemacht.
MFG
Michael Springwald
Michael Springwald