Hi, i have trouble with SPI. I want to send a 16 bit of data.
Spi CS pin does not stay LOW for second 8 bits of data.
My code:
void SPI_Init()
{
PORTA.DIR |= PIN4_bm;
PORTA.DIR |= PIN6_bm;
PORTA.DIR |= PIN7_bm;
SPI0.CTRLA =
SPI_CLK2X_bm
| SPI_ENABLE_bm
| SPI_MASTER_bm
| SPI_PRESC_DIV16_gc;
SPI0.CTRLA |= SPI_DORD_bp;
SPI0.CTRLB |= SPI_MODE_3_gc;
SPI0.CTRLB |= 0b11000000;
}
void SPI_Write(unsigned char* data, unsigned char bytesNumber)
{
unsigned char MSdata;
unsigned char LSdata;
LSdata=(((uint16_t)data >> 0) & 0xFF);
MSdata=(((uint16_t)data >> 8) & 0xFF);
SPI0.DATA = MSdata;
SPI0.DATA = LSdata;
while (!(SPI0.INTFLAGS & SPI_DREIF_bm)){;};
}
USE OF FUNCTION:
CS_LOW;
SPI_Write(data,2);
CS_HIGH;
Looking forward to your answers.