Chat freely about anything...

User avatar
By patlas
#56036 Hi,
is it possible to set HSPI i full duplex mode? I'd like to control SD card but I cannot set SPI to work in full duplex. I try to do it in that way:

uint32 spi_rxtx8(uint8 spi_no, uint8 data){

if(spi_no > 1) return 0; //Check for a valid SPI

while(spi_busy(spi_no)); //wait for SPI to be ready

CLEAR_PERI_REG_MASK(SPI_USER(spi_no), SPI_USR_MOSI|SPI_USR_MISO|SPI_USR_COMMAND|SPI_USR_ADDR|SPI_USR_DUMMY);

WRITE_PERI_REG(SPI_USER1(spi_no), ( ((8-1)&SPI_USR_MOSI_BITLEN)<<SPI_USR_MOSI_BITLEN_S ));
// ((8-1)&SPI_USR_MISO_BITLEN)<<SPI_USR_MISO_BITLEN_S*/));

//SET_PERI_REG_MASK(SPI_USER(spi_no), SPI_USR_MISO | SPI_USR_MISO_HIGHPART);
SET_PERI_REG_MASK(SPI_USER(spi_no), SPI_USR_MOSI);
WRITE_PERI_REG(SPI_W0(spi_no), (uint32)(data));
SET_PERI_REG_MASK(SPI_CMD(spi_no), SPI_USR);

while(spi_busy(spi_no)); //wait for SPI transaction to complete
uint32 dat = READ_PERI_REG(SPI_W8(spi_no));

return (uint32)(dat);

}

But unfortunatelly nothing is being received.

Does anybody deal with that problem? Or have a solution that may share with me?