Jag kör med en BF516F DSP från analog devices och har ett par SPI-enheter kopplade till den. Det har fungerat ok men nu skulle jag lägga till en accelerometer, ADXL345, också den från analog devices. Enligt accelerometerns datablad ska CPOL = 1 och CPHA = 1, tvärtom vad de andra enheterna kör. För att göra det enkelt kommenterade jag bort de andra enheterna i koden och mätte med oscilloskop för att se att det svarade som det skulle. Fick få följande konstiga fenomen.

CPOL = 0, CPHA = 0, allt ser ok ut men fungerar inte eftersom ADXL345 ska ha CPOL = 1, CPHA = 1

CPOL = 1, CPHA = 1. Istället för att vända på clock phase (CPHA) så inaktiveras chip select.
Kollar man i adi_spi_int.pdf, vilket är manualen till det bibliotek jag använt så hittar man följande:
5.4.3. Device Driver Specific Commands
• ADI_SPI_CMD_SET_CLOCK_PHASE
o Sets the transfer format
o Value = TRUE - beginning toggle, FALSE - middle toggle
Längre bak i manualen hittar man också:
6.2. Default Settings
item - Clock phase
default value - 1(slave select controlled by SW)
possible value - 0(slave select controlled by HW)
Command ID - ADI_SPI_CMD_SET_CLOCK_PHASE
Min fråga till analog devices var vad som egentligen gällde, om ADI_SPI_CMD_SET_CLOCK_PHASE styr chip select, som i mitt fall, hur styr jag då CPHA (clock phase)?
Någon här som vet?