Seite 1 von 1

SPI mit CH341A

Verfasst: Samstag 20. November 2021, 15:39
von markusn
Hallo Gemeinde,

ich versuche nun seit einigen Stunden ein SPI-Intzerface mit Profilab und dem CH341A zu realisieren. Leider bisher ohne Erfolg.
Ich stelle mir schon so grundlegende Fragen wie:
-Welche Aufgaben bzw. Funktionen haben wann die Anschlüsse "wa", "wb",... "$w"?
-Welche Funktionen brauche ich um die SPI-Schnittstelle zu konfigurieren? BitStreamSPI? Oder doch SetStream?
-Muss ich irgendwo die Ausgänge definieren? Und wenn ja, wie?
-Fragen über Fragen...

Hat evtl. jemand ein Beispiel mit den grundlegenden Funktionen? Später möchte ich damit ein CAN-Interface mit dem MCP2515 realisieren.

Vielen Dank schonmal für eure Unterstützung!

Grüße
Markus

Re: SPI mit CH341A

Verfasst: Samstag 20. November 2021, 16:03
von Müllmann
Für das CH341A gibt es in Profilab mehrere Beispiele, siehe Menü Datei/Beispiele/Hardware/Abacom/CH341A

Gruß, Müllmann

Re: SPI mit CH341A

Verfasst: Samstag 20. November 2021, 16:13
von markusn
Das ist richtig!
Leider beschränken sich die Beispiele auf Pinzustände abfragen, Pinpegel setzen und I²C.
Da ist leider kein Beispiel für eine SPI-Kommunikation.

Grüße
Markus

Re: SPI mit CH341A

Verfasst: Sonntag 21. November 2021, 20:01
von Müllmann
Da hast du Recht, SPI ist dort nicht beschrieben, aber vielleicht kann Abacom weiterhelfen.
Die Frage für später ist dann noch, ob Profilab schnell genug reagiert, wenn du mit einem CAN-Interface arbeiten willst ?
Vielleicht bist du mit einem Arduino o.ä. besser bedient ? Hängt von deiner Anwendung und den Programmierkenntnissen ab.

Gruß, Müllmann

Re: SPI mit CH341A

Verfasst: Dienstag 23. November 2021, 14:32
von abacom
"-Welche Aufgaben bzw. Funktionen haben wann die Anschlüsse "wa", "wb",... "$w"?"

Dies sind die Übergabeparameter an die jeweils eingestellte API-Funktion.
Der erste API-Parmeter ist immer "Index" (=die eingestellte Gerätenummer im Dialog).
Weitere API-Parameter (sofern vorhanden) belegen dann der Reihe nach die Bauteil-Pins wa,wb,wc,... (schreibend)
bzw. ra,rb,rc,... (lesend).
Beispiel:

Code: Alles auswählen

Function CH341SetStream(iIndex:cardinal; iMode:cardinal):boolean;Stdcall; external 'CH341DLL.DLL';
Diese CH341A-API-Funktion besitzt nur einen weiteren Parameter: "iMode", der schreibend über Pin 'wa' übergeben wird.

Re: SPI mit CH341A

Verfasst: Dienstag 23. November 2021, 14:33
von abacom
// CH341SetStream() konfiguriert I2C und SPI
// Bit 1-0: I2C speed 00= low speed /20KHz
// 01= standard /100KHz
// 10= fast /400KHz
// 11= high speed /750KHz
// Bit 2: SPI - Modus
// 0= Standard SPI (D3=clock out, D5=serial out, D7 serial in
// 1= SPI with two data lines (D3=clock out, D5,D4=serialout, D7,D6 serial
in)
// Bit 7: SPI 0= LSB first
// 1= MSB first

// other bits 0 (reserved)