Analog Devices DSP och frågetecken kring SPI
Postat: 6 september 2011, 16:08:04
Stötte på en lite konstig grej och har kontaktat ADs support men ännu inte fått något svar efter två dagar så jag tänkte se om någon här har stött på samma problem.
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?
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?