SPI Kaskadierung

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Antworten
ArmFPC1
Beiträge: 33
Registriert: Do 19. Mär 2015, 18:18

SPI Kaskadierung

Beitrag von ArmFPC1 »

Hey Leute,

ich hab mal wieder ein Problem :wink:

Ich habe mittels den Untils von Socke : viewtopic.php?f=29&t=7700 mit ein Programm geschrieben mit dem ich den SPI Bus ansprechen kann, dies funktioniert bis jetzt auch super solange ich nur einen MCP 23s08 auf der Bus Leitung habe. Ich hätte gerne 3- 4 Bus Bausteine die ich auf der selben SPI- Linie angesprochen werden, also diese Kaskadierend verdrahten. Wenn ich sie Parallel verdrahte, dann müsste ich den Chip Select auf weitere GPIO's legen, dies könnte ich mir andernfalls sparen.

Bei dem Verwendetet I/O Expander MCP 23S08 muss man zu beginn die Adresspins aktivieren, dass diese berücksichtigt werden. Zusätzlich gibt es bei dem MCP auch noch ein Bit das man auf "1" setzen muss, dass die Adresse nicht automatische Inkrementiert wird. Beides hat leider nicht zu meinem gewünschten Ergebnis geführt. Dies Funktioniert auch, wie schon gesagt aber nur wenn ein Baustein auf der Leitung vorhanden ist.

Hat jemand Erfahrung damit, was ich anders machen muss oder geht es mit Linux nicht eine Bus nachricht an mehrere teilnehmen zu versenden.

Danke schon mal im voraus!

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: SPI Kaskadierung

Beitrag von marcov »

Ich benutze mcp23S17, und das funktioniert ja. Also nur eine chip select I/O für mehrere solche Komponenten auf einen Bus, und die Adresse Pins sind unterschiedlich geerdet, und mit die Bits im SPI Header kann man der Selekt machen.

Der Vorteil ist zweifältig. Weniger I/O pins, und man kann die Daten für mehrere Chips dicht aufeinander packen und in einen einzige DMA burst rauswerfen.

Ich benutze aber eigene (microchip dspic33e) Elektrotechnik, keinen Pi oder so, also von die Software Seite weiß ich nicht.

ArmFPC1
Beiträge: 33
Registriert: Do 19. Mär 2015, 18:18

Re: SPI Kaskadierung

Beitrag von ArmFPC1 »

marcov hat geschrieben:
Ich benutze aber eigene (microchip dspic33e) Elektrotechnik, keinen Pi oder so, also von die Software Seite weiß ich nicht.


versteh ich dich richtig du verwendest einen "kleineren" Kontroller ohne Linux Betriebssystem und verwendest so mit nicht diese von mir oben genannten Utils.

Ich denke das es entweder seitens Linux nicht zu gelassen wird oder ich mein SPI Struct falsch fülle!

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: SPI Kaskadierung

Beitrag von marcov »

ArmFPC1 hat geschrieben:
marcov hat geschrieben:
Ich benutze aber eigene (microchip dspic33e) Elektrotechnik, keinen Pi oder so, also von die Software Seite weiß ich nicht.


versteh ich dich richtig du verwendest einen "kleineren" Kontroller ohne Linux Betriebssystem und verwendest so mit nicht diese von mir oben genannten Utils.


Korrekt.

Ich denke das es entweder seitens Linux nicht zu gelassen wird oder ich mein SPI Struct falsch fülle!


Las den SPI struct mal sehen. Vielleicht sind die adres pinnen gespiegeld oder so? 010 statt 101 usw.

ArmFPC1
Beiträge: 33
Registriert: Do 19. Mär 2015, 18:18

Re: SPI Kaskadierung

Beitrag von ArmFPC1 »

was mir gerade noch einfällt kann es an dem Mode liegen den man beim Konfigurieren des SPI Treibers angeben muss. Ich über gebe da den SPI_MODE_0.

Im Anhang hab ich die Definition von dem Struct / Record als Datei
Dateianhänge
fpspidev.pas
(8.91 KiB) 220-mal heruntergeladen

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: SPI Kaskadierung

Beitrag von marcov »

Ich meinte die Struktur von die Daten die auf dem Draht gehen :D

Antworten