SPI Funktion für mehrere Slaves

Gast #3636526
Lesenswert?

Hi,

ich stehe gerade programmiertechnisch auf dem Schlauch. Ich habe mehrere 
SPI-Slaves am uC und nutze die eingebaute SPI-Hardware. Jeder Slave hat 
sein eigenes /CS-Signal über einen Portpin verstreut über die freien 
Ports. Soweit funktioniert alles prima.

Nun wollte ich den ganzen SPI-Code in "universelle" SPI-Funktionen 
umschreiben, habe da aber das Problem, dass ich gerade mir das Hirn 
zermartere, wie ich am besten den anzusprechenden Slave übergebe. Am 
liebsten würde ich gerne in einer spi.h o.ä. jedem Slave eine Nummer 
zuweisen, über die er dann angesprochen werden kann, z.B.
1
void SPI-Send(uint8_t slave, uint8_t data)

Nur, wie löse ich intelligent die Slave-Nummer zum /CS-Portpin auf? 
Bislang fällt mir nur das Konstrukt
1
switch(slave)
2
{
3
 case 0:
4
  LATAbits.LATA7 = 0;
5
  break;
6
 case 1:
7
  LATBbits.LATB1 = 0;
8
  break;
9
  ...
10
}

ein. Geht das nicht irgendwie "universeller" über #define-Macros?

Vielleicht hat mir ja einer einen guten Tipp oder Hinweis :-)
Gast #3636621
Lesenswert?

Hab mal nach Arduino Source in Kombinationen mit HAL und Library 
gegoogelt aber in diesen Unmengen an Code nichts auf die Schnelle 
entdeckt. Hab jetzt ne Funktion mit obigem Switch-Konstrukt geschrieben, 
in der ich die Slave-relevanten Einstellungen (SPI-Mode, Clock, /CS-Pin) 
je nach Slave-Nummer setze. Damit geht's ganz gut und bleibt 
übersichtlich.

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