Hi guys, I'm trying to setup the F28377S SPI module as a slave but to no avail, the master always receive 0xFF. The config snippet is as follow:
void spi_init()
{
SpiaRegs.SPICCR.bit.SPISWRESET = 0;
SpiaRegs.SPICTL.bit.MASTER_SLAVE = 0; //Slave mode
SpiaRegs.SPICCR.bit.CLKPOLARITY = 0;
SpiaRegs.SPICTL.bit.CLK_PHASE = 0;
SpiaRegs.SPIBRR.bit.SPI_BIT_RATE = 99;
SpiaRegs.SPICCR.bit.HS_MODE = 0;
SpiaRegs.SPICCR.bit.SPILBK = 0;
SpiaRegs.SPICCR.bit.SPICHAR = 8;
SpiaRegs.SPIPRI.bit.TRIWIRE = 0; // Disable 3-wire mode
SpiaRegs.SPIPRI.bit.STEINV = 0;
SpiaRegs.SPICTL.bit.SPIINTENA = 0;
SpiaRegs.SPICTL.bit.TALK = 0;
SpiaRegs.SPICTL.bit.OVERRUNINTENA = 0;
SpiaRegs.SPICCR.bit.SPISWRESET = 1; // Relinquish SPI from Reset
// SpiaRegs.SPICCR.all =0x009F;
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
}
And this is the transmit procedure:
for(;;)
{
sdata = txdata << 8;
// Transmit data
spi_xmit(sdata);
// Wait until data is received
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }
// Check against sent data
rdata = SpiaRegs.SPIRXBUF;
}
The Raspberry Pi is my SPI master and I set the master SPI clock to 500 kHz. Raspberry Pi SPI can only work with 8-bit data.