Hi Michael boyko,
Do you use the GPIO to control the slave SSEL instead of the SPI hardware SSEL?
If yes, I recommend you refer to our the official LPC845 SPI code, use the TXCTL, TXDAT to transfer the data.
The official code you can refer to the code bundle which can be downloaded from this link:
LPC84x 30MHz|Arm® Cortex®-M0+|32-bit Microcontrollers (MCUs)|NXP
Under Lab and test software.
The idle should relate to the Slave Select function, please check this description in the user manual:

Please refer to the official code:
int main(void) {
unsigned char temp;
setup_debug_uart();
LPC_SYSCON->SYSAHBCLKCTRL[0] |= (SPI0|SWM);
ConfigSWM(SPI0_SCK, SCK_PIN);
ConfigSWM(SPI0_MOSI, MOSI_PIN);
ConfigSWM(SPI0_SSEL0, SSEL_PIN);
LPC_SYSCON->PRESETCTRL[0] &= (SPI0_RST_N);
LPC_SYSCON->PRESETCTRL[0] |= ~(SPI0_RST_N);
LPC_SYSCON->SPI0CLKSEL = FCLKSEL_MAIN_CLK;
SystemCoreClockUpdate();
LPC_SPI0->DIV = (main_clk/SPIBAUD) - 1;
LPC_SPI0->CFG = CFG_ENABLE | CFG_MASTER;
LPC_SPI0->DLY = 0x0000;
LPC_SPI0->TXCTL = CTL_EOF | CTL_EOT | CTL_RXIGNORE | CTL_LEN(8);
Config_LED(LED_GREEN);
while(1) {
LED_On(LED_GREEN);
temp = GetConsoleCharacter((const char *)&promptstring);
while (!(LPC_SPI0->STAT & STAT_TXRDY));
if (temp >= 0x30 && temp <= 0x32) {
LPC_SPI0->TXDAT = temp;
}
else {
LPC_SPI0->TXDAT = 0x30;
}
LED_Off(LED_GREEN);
DebugWaitEsc();
while (!(LPC_SPI0->STAT & STAT_TXRDY));
LPC_SPI0->TXDAT = 0x69;
}
}
Wish it helps you!
If you still have question about it, please kindly let me know.
Have a great day,
Kerry
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------