This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C123GH6PM: SPI FIFO receives only single byte from longer message

Part Number: TM4C123GH6PM

Tool/software:

I am trying to solve communication between spi master(RPI) and TM4C123GH6PM(slave). Master sends 4 bytes in total and i am able to check it via logic analyzer. The slave always gets just the first byte and then nothing. I tried DMA with same result. I am using c++ and constructor and interrupt handler are like this:

Spi::Spi(void) {

// konfigurace příslušných pinů rpo SPI
ROM_GPIOPinConfigure(GPIO_PA2_SSI0CLK);
ROM_GPIOPinConfigure(GPIO_PA3_SSI0FSS);
ROM_GPIOPinConfigure(GPIO_PA4_SSI0RX);
ROM_GPIOPinConfigure(GPIO_PA5_SSI0TX);


ROM_GPIOPinTypeSSI(PEG_PLATFORM_SPI_PORT_BASE,
PEG_PLATFORM_SPI_SCLK_PIN_MSK |
PEG_PLATFORM_SPI_FSS_PIN_MSK |
PEG_PLATFORM_SPI_MISO_PIN_MSK |
PEG_PLATFORM_SPI_MOSI_PIN_MSK);
// konfigurace rychlosti SPI
// - POL = 0, PHA = 0 : SSI_FRF_MOTO_MODE_0
// - slave
// - 100000 kHz
// - 8 bit
ROM_SSIConfigSetExpClk(SSI0_BASE,
Clk::GetInstance().GetSysFreq(),
SSI_FRF_MOTO_MODE_0,
SSI_MODE_SLAVE,
4000000,
8);

// registrace funkce přerušení
SSIIntRegister(SSI0_BASE, Spi::InterruptHandler);

// volba typu přerušení
ROM_SSIIntEnable(SSI0_BASE,SSI_RXFF|SSI_RXTO);

// smazani vlajek přerušení
ROM_SSIIntClear(SSI0_BASE,SSI_RXFF|SSI_RXTO);

// povolení SPI
ROM_SSIEnable(SSI0_BASE);

// globální povolení přerušení - o preruseni se stara DMA
ROM_IntEnable(INT_SSI0);
ROM_IntMasterEnable();

}

void Spi::InterruptHandler(void){
// stav povolení přenosu
uint32_t state;

// reference na Spi modul
Spi& spi = Spi::GetInstance();

// čtení stavu přerušení SSI.
state = ROM_SSIIntStatus(SSI0_BASE, 1);

// vyčtení dat
for(int idx = 0;
idx < PEG_REQ_STA_END_OF_SEQUENCE && ROM_SSIDataGetNonBlocking(SSI0_BASE, &(spi.request[idx]));
idx++);

// smazání vlajky přerušení
ROM_SSIIntClear(SSI0_BASE, state);
}

Is there something wrong with my settings?