<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LPC MicrocontrollersのトピックSPI interrupt and auto SSEL configuration</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-interrupt-and-auto-SSEL-configuration/m-p/1694335#M53613</link>
    <description>&lt;P&gt;Hello everyone,&lt;/P&gt;&lt;P&gt;I need your support with my project using the LPC55S06-EVK.&lt;/P&gt;&lt;P&gt;I'm currently working on SPI communication with the FRDM-STBC-AGM01 sensor and i'm struggling on using it in interrupt mode. I state that I've been able to communicate with the sensor in polling mode and the hardware setup isn't changed since that condition.&lt;/P&gt;&lt;P&gt;The main problem is that i can't get the interrupt to be fired again when i finish to send my data to the SPI, regardless which kind of watermark i choose.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Code below:&lt;/P&gt;&lt;LI-SPOILER&gt;&lt;DIV&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include "board.h"&lt;/DIV&gt;&lt;DIV&gt;#include "peripherals.h"&lt;/DIV&gt;&lt;DIV&gt;#include "pin_mux.h"&lt;/DIV&gt;&lt;DIV&gt;#include "clock_config.h"&lt;/DIV&gt;&lt;DIV&gt;#include "LPC55S06.h"&lt;/DIV&gt;&lt;DIV&gt;#include "fsl_debug_console.h"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#define BUFFER_SIZE 32&lt;/DIV&gt;&lt;DIV&gt;#define SPI_MASTER_IRQ FLEXCOMM8_IRQn&lt;/DIV&gt;&lt;DIV&gt;#define SPI_MASTER SPI8&lt;/DIV&gt;&lt;DIV&gt;#define LED_GREEN_PIN BOARD_INITLEDSPINS_LED_GREEN_PIN&lt;/DIV&gt;&lt;DIV&gt;#define LED_GREEN_PORT BOARD_INITLEDSPINS_LED_GREEN_PORT&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;spi_master_config_t masterConfig;&lt;/DIV&gt;&lt;DIV&gt;spi_transfer_t xfer;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;static volatile bool masterFinished = false;&lt;/DIV&gt;&lt;DIV&gt;static volatile bool slaveFinished&amp;nbsp; = false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool isTransferCompleted = false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool isMasterOnTransmit&amp;nbsp; = false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool isMasterOnReceive&amp;nbsp; &amp;nbsp;= false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool isFinished = false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool machine_state = false;&lt;/DIV&gt;&lt;DIV&gt;volatile uint32_t g_systickCounter;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;uint8_t sendData[BUFFER_SIZE] = {};&lt;/DIV&gt;&lt;DIV&gt;uint8_t receiveBuff[BUFFER_SIZE];&lt;/DIV&gt;&lt;DIV&gt;uint8_t receivedValue = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;//DELAY FUNCTIONS&lt;/DIV&gt;&lt;DIV&gt;void SysTick_Handler(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (g_systickCounter != 0U)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;g_systickCounter--;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void SysTick_DelayTicks(uint32_t n)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;g_systickCounter = n;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;while (g_systickCounter != 0U)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void led_pin_toggle() {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GPIO_PinWrite(GPIO, LED_GREEN_PORT, LED_GREEN_PIN, 1);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SysTick_DelayTicks(100);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GPIO_PinWrite(GPIO, LED_GREEN_PORT, LED_GREEN_PIN, 0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SysTick_DelayTicks(100);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;int main(void) {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;spi_master_handle_t spiHandle;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BOARD_InitBootPins();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BOARD_InitPins();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BOARD_InitLEDsPins();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BOARD_InitBootClocks();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BOARD_InitBootPeripherals();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GPIO_PinWrite(GPIO, LED_GREEN_PORT, LED_GREEN_PIN, 0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#ifndef BOARD_INIT_DEBUG_CONSOLE_PERIPHERAL&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Init FSL debug console. */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BOARD_InitDebugConsole();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SysTick_Config(SystemCoreClock / 250);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SPI_MasterTransferCreateHandle(FLEXCOMM8_PERIPHERAL, &amp;amp;spiHandle, NULL, NULL);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;//configure each 1ms&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;EnableIRQ(FLEXCOMM8_FLEXCOMM_IRQN);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SPI_EnableInterrupts(FLEXCOMM8_PERIPHERAL, (kSPI_TxLvlIrq));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;while (1){&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (machine_state) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;sendData[0] = (uint8_t)(0b00001101);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;sendData[1] = (uint8_t)(0b00000000);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;sendData[2] = (uint8_t)(0b00000000);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;// Prepare to send.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;xfer.txData = sendData;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;xfer.rxData = receiveBuff;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;xfer.dataSize = 3;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;xfer.configFlags = kSPI_FrameAssert;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GPIO_PinWrite(GPIO, BOARD_INITPINS_CS_MANUAL_PORT, BOARD_INITPINS_CS_MANUAL_PIN, 0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SysTick_DelayTicks(1);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;for (uint8_t i = 0; i &amp;lt; BUFFER_SIZE; i++) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SPI_WriteData(SPI_MASTER, (uint16_t)sendData[i], kSPI_FrameAssert);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;machine_state = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;led_pin_toggle();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SysTick_DelayTicks(1);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GPIO_PinWrite(GPIO, BOARD_INITPINS_CS_MANUAL_PORT, BOARD_INITPINS_CS_MANUAL_PIN, 1);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;//SPI_MasterTransferNonBlocking(FLEXCOMM8_PERIPHERAL, &amp;amp;spiHandle, &amp;amp;xfer);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SPI_EnableInterrupts(FLEXCOMM8_PERIPHERAL, (kSPI_TxLvlIrq));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;led_pin_toggle();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return 0 ;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}//MAIN&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* FLEXCOMM8_IRQn interrupt handler */&lt;/DIV&gt;&lt;DIV&gt;void FLEXCOMM8_FLEXCOMM_IRQHANDLER(void) {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SPI_DisableInterrupts(FLEXCOMM8_PERIPHERAL, (kSPI_RxLvlIrq | kSPI_TxLvlIrq));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;uint32_t intStatus;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;intStatus = SPI_GetStatusFlags(FLEXCOMM8_PERIPHERAL);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;//when ready to send data&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;machine_state = true;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#if defined __CORTEX_M &amp;amp;&amp;amp; (__CORTEX_M == 4U)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;__DSB();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;/LI-SPOILER&gt;&lt;P&gt;When in debug mode, i can see the code jumping from the main to&amp;nbsp;the FLEXCOMM8_FLEXCOMM_IRQHANDLER &lt;U&gt;just after the&lt;/U&gt;&amp;nbsp;SPI_EnableInterrupts(FLEXCOMM8...) and than moving again into the if (machine_state) but at the GPIO_PinWrite(GPIO, BOARD_INITPINS_CS_MANUAL_PORT, BOARD_INITPINS_CS_MANUAL_PIN, 0);&lt;BR /&gt;it goes and get stuck into the callback function.&lt;/P&gt;&lt;P&gt;There is also a function to clear the interrupt registers?&lt;/P&gt;&lt;P&gt;And the secondary issue that i'm facing is that i can't get the "auto SSL" working even if routed using the configurator. It would be great to have the code managing the CS itself.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ammicrosystems_0-1690473430594.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/233962iCDE37C93C44CA869/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ammicrosystems_0-1690473430594.png" alt="ammicrosystems_0-1690473430594.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ammicrosystems_1-1690473460019.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/233963i62023BAB286537C8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ammicrosystems_1-1690473460019.png" alt="ammicrosystems_1-1690473460019.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance for your support, have a great day.&lt;/P&gt;</description>
    <pubDate>Thu, 27 Jul 2023 15:57:51 GMT</pubDate>
    <dc:creator>Am-Dev</dc:creator>
    <dc:date>2023-07-27T15:57:51Z</dc:date>
    <item>
      <title>SPI interrupt and auto SSEL configuration</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-interrupt-and-auto-SSEL-configuration/m-p/1694335#M53613</link>
      <description>&lt;P&gt;Hello everyone,&lt;/P&gt;&lt;P&gt;I need your support with my project using the LPC55S06-EVK.&lt;/P&gt;&lt;P&gt;I'm currently working on SPI communication with the FRDM-STBC-AGM01 sensor and i'm struggling on using it in interrupt mode. I state that I've been able to communicate with the sensor in polling mode and the hardware setup isn't changed since that condition.&lt;/P&gt;&lt;P&gt;The main problem is that i can't get the interrupt to be fired again when i finish to send my data to the SPI, regardless which kind of watermark i choose.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Code below:&lt;/P&gt;&lt;LI-SPOILER&gt;&lt;DIV&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/DIV&gt;&lt;DIV&gt;#include "board.h"&lt;/DIV&gt;&lt;DIV&gt;#include "peripherals.h"&lt;/DIV&gt;&lt;DIV&gt;#include "pin_mux.h"&lt;/DIV&gt;&lt;DIV&gt;#include "clock_config.h"&lt;/DIV&gt;&lt;DIV&gt;#include "LPC55S06.h"&lt;/DIV&gt;&lt;DIV&gt;#include "fsl_debug_console.h"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#define BUFFER_SIZE 32&lt;/DIV&gt;&lt;DIV&gt;#define SPI_MASTER_IRQ FLEXCOMM8_IRQn&lt;/DIV&gt;&lt;DIV&gt;#define SPI_MASTER SPI8&lt;/DIV&gt;&lt;DIV&gt;#define LED_GREEN_PIN BOARD_INITLEDSPINS_LED_GREEN_PIN&lt;/DIV&gt;&lt;DIV&gt;#define LED_GREEN_PORT BOARD_INITLEDSPINS_LED_GREEN_PORT&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;spi_master_config_t masterConfig;&lt;/DIV&gt;&lt;DIV&gt;spi_transfer_t xfer;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;static volatile bool masterFinished = false;&lt;/DIV&gt;&lt;DIV&gt;static volatile bool slaveFinished&amp;nbsp; = false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool isTransferCompleted = false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool isMasterOnTransmit&amp;nbsp; = false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool isMasterOnReceive&amp;nbsp; &amp;nbsp;= false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool isFinished = false;&lt;/DIV&gt;&lt;DIV&gt;volatile bool machine_state = false;&lt;/DIV&gt;&lt;DIV&gt;volatile uint32_t g_systickCounter;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;uint8_t sendData[BUFFER_SIZE] = {};&lt;/DIV&gt;&lt;DIV&gt;uint8_t receiveBuff[BUFFER_SIZE];&lt;/DIV&gt;&lt;DIV&gt;uint8_t receivedValue = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;//DELAY FUNCTIONS&lt;/DIV&gt;&lt;DIV&gt;void SysTick_Handler(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (g_systickCounter != 0U)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;g_systickCounter--;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void SysTick_DelayTicks(uint32_t n)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;g_systickCounter = n;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;while (g_systickCounter != 0U)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void led_pin_toggle() {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GPIO_PinWrite(GPIO, LED_GREEN_PORT, LED_GREEN_PIN, 1);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SysTick_DelayTicks(100);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GPIO_PinWrite(GPIO, LED_GREEN_PORT, LED_GREEN_PIN, 0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SysTick_DelayTicks(100);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;int main(void) {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;spi_master_handle_t spiHandle;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BOARD_InitBootPins();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BOARD_InitPins();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BOARD_InitLEDsPins();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BOARD_InitBootClocks();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BOARD_InitBootPeripherals();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GPIO_PinWrite(GPIO, LED_GREEN_PORT, LED_GREEN_PIN, 0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#ifndef BOARD_INIT_DEBUG_CONSOLE_PERIPHERAL&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Init FSL debug console. */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BOARD_InitDebugConsole();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SysTick_Config(SystemCoreClock / 250);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SPI_MasterTransferCreateHandle(FLEXCOMM8_PERIPHERAL, &amp;amp;spiHandle, NULL, NULL);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;//configure each 1ms&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;EnableIRQ(FLEXCOMM8_FLEXCOMM_IRQN);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SPI_EnableInterrupts(FLEXCOMM8_PERIPHERAL, (kSPI_TxLvlIrq));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;while (1){&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (machine_state) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;sendData[0] = (uint8_t)(0b00001101);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;sendData[1] = (uint8_t)(0b00000000);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;sendData[2] = (uint8_t)(0b00000000);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;// Prepare to send.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;xfer.txData = sendData;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;xfer.rxData = receiveBuff;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;xfer.dataSize = 3;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;xfer.configFlags = kSPI_FrameAssert;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GPIO_PinWrite(GPIO, BOARD_INITPINS_CS_MANUAL_PORT, BOARD_INITPINS_CS_MANUAL_PIN, 0);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SysTick_DelayTicks(1);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;for (uint8_t i = 0; i &amp;lt; BUFFER_SIZE; i++) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SPI_WriteData(SPI_MASTER, (uint16_t)sendData[i], kSPI_FrameAssert);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;machine_state = false;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;led_pin_toggle();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SysTick_DelayTicks(1);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;GPIO_PinWrite(GPIO, BOARD_INITPINS_CS_MANUAL_PORT, BOARD_INITPINS_CS_MANUAL_PIN, 1);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;//SPI_MasterTransferNonBlocking(FLEXCOMM8_PERIPHERAL, &amp;amp;spiHandle, &amp;amp;xfer);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SPI_EnableInterrupts(FLEXCOMM8_PERIPHERAL, (kSPI_TxLvlIrq));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;led_pin_toggle();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return 0 ;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}//MAIN&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/* FLEXCOMM8_IRQn interrupt handler */&lt;/DIV&gt;&lt;DIV&gt;void FLEXCOMM8_FLEXCOMM_IRQHANDLER(void) {&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SPI_DisableInterrupts(FLEXCOMM8_PERIPHERAL, (kSPI_RxLvlIrq | kSPI_TxLvlIrq));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;uint32_t intStatus;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;intStatus = SPI_GetStatusFlags(FLEXCOMM8_PERIPHERAL);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;//when ready to send data&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;machine_state = true;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#if defined __CORTEX_M &amp;amp;&amp;amp; (__CORTEX_M == 4U)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;__DSB();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;/LI-SPOILER&gt;&lt;P&gt;When in debug mode, i can see the code jumping from the main to&amp;nbsp;the FLEXCOMM8_FLEXCOMM_IRQHANDLER &lt;U&gt;just after the&lt;/U&gt;&amp;nbsp;SPI_EnableInterrupts(FLEXCOMM8...) and than moving again into the if (machine_state) but at the GPIO_PinWrite(GPIO, BOARD_INITPINS_CS_MANUAL_PORT, BOARD_INITPINS_CS_MANUAL_PIN, 0);&lt;BR /&gt;it goes and get stuck into the callback function.&lt;/P&gt;&lt;P&gt;There is also a function to clear the interrupt registers?&lt;/P&gt;&lt;P&gt;And the secondary issue that i'm facing is that i can't get the "auto SSL" working even if routed using the configurator. It would be great to have the code managing the CS itself.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ammicrosystems_0-1690473430594.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/233962iCDE37C93C44CA869/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ammicrosystems_0-1690473430594.png" alt="ammicrosystems_0-1690473430594.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ammicrosystems_1-1690473460019.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/233963i62023BAB286537C8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ammicrosystems_1-1690473460019.png" alt="ammicrosystems_1-1690473460019.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance for your support, have a great day.&lt;/P&gt;</description>
      <pubDate>Thu, 27 Jul 2023 15:57:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-interrupt-and-auto-SSEL-configuration/m-p/1694335#M53613</guid>
      <dc:creator>Am-Dev</dc:creator>
      <dc:date>2023-07-27T15:57:51Z</dc:date>
    </item>
    <item>
      <title>Re: SPI interrupt and auto SSEL configuration</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-interrupt-and-auto-SSEL-configuration/m-p/1694973#M53624</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/80143"&gt;@Am-Dev&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1) About SPI interrupt, how about firstly test the spi_interrupt demo under SDK? Whether it can work well on your side.&lt;/P&gt;
&lt;P&gt;2)"&lt;SPAN&gt;&amp;nbsp;It would be great to have the code managing the CS itself.&amp;nbsp;&lt;/SPAN&gt;"&lt;/P&gt;
&lt;P&gt;-&amp;gt;&amp;gt;If you want to use code control slave select,&amp;nbsp; You can use a simple GPIO to control.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;Alice&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 28 Jul 2023 10:28:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-interrupt-and-auto-SSEL-configuration/m-p/1694973#M53624</guid>
      <dc:creator>Alice_Yang</dc:creator>
      <dc:date>2023-07-28T10:28:12Z</dc:date>
    </item>
  </channel>
</rss>

