Utilizzo CS/SS per libreria SPI

Ciao a tutti.
Stò leggendo come usare la libreria SPI di Arduino, ma mi sfugge qualcosa.

La libreria mette a disposizione il comando SPI.begin() che (verificato nel codice cpp) viene scritto nel reference: "Initializes the SPI bus by setting SCK, MOSI, and SS to outputs, pulling SCK and MOSI low, and SS high."

Il mio problema è il pin SS. SCK, MOSI e MISO sono "fissi", mi pare che il CS/SS in realtà NON è fisso. Posso io scegliere un pin.
L'esempio "DigitalPotControl" fornito con la libreria definisce un pin slaveSelectPin=10 ma non viene passato alla libreria. Poi nel codice mette LOW e HIGH il suo pin slaveSelectPin quando serve comunicare. Ma non lo fa nella setup() (vero però che SS su Arduino Uno E' il 10).
Ma allora a cosa serve il SS ? Perché la lib SPI non permette settare con un comando su quale pin la begin deve agire ed invece internamente di fisso lavora sul pin SS definito nel core ?

Stò facendo confusione ?
Ad esempio la ethernet shield ha anche SD pilotato da CS=4, la ethernet é su 10. Se solo 1 dispositivo SPI, obbligato ad usare SS=10 ?

Grazie per i chiarimenti.

Non devi specificarlo perché la SPI ha già un suo pin dedicato per il SS, sul Atmega328 è il pin 16 (PB2), pin 10 di Arduino.
Serve usare altri pin come SS quando devi indirizzare più device SPI slave, dato che non ho mai usato la libreria SPI di Arduino, preferisco usare del mio codice in questi casi, non so se prevede la possibilità di indirizzare più device slave, cosa a cui potrebbe servire la slaveSelectPin per dire quale pin deve usare a seconda del device, tocca investigare nel codice sorgente della libreria per capire cosa fa esattamente.

Ho dato un'occhiata al volo all'esempio in oggetto, usa il pin 10 come controllo del device slave, in effetti il pin SS serve alla SPI quando è in modalità slave per essere attivata, in modalità master si può usare lo stesso pin come attivazione dello slave, o qualunque altro pin a piacere, a quanto pare la libreria SPI lascia questa incombenza a chi scrive il codice e non se ne fa carico.

Grazie @astro.

Notavo appunto che la SPI.begin() ti mette in automatico in OUTPUT e a HIGH pin SS (10 su Uno) e se hai necessità di usare altro o ulteriore pin come CS non solo te lo devi gestire tu (mettere LOW e poi HIGH prima di SPI.Transfer ) ma secondo me ti devi ricordare di mettere in output ed ad HIGH l'ulteriore pin CS nel setup()