<?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>topic What am I doing wrong in spi communication program?[kl46z] in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/What-am-I-doing-wrong-in-spi-communication-program-kl46z/m-p/773499#M47022</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm trying to use spi communication to transfer/receive data from a Dragino LoraBee module based on sx1276/78, which has an rfm95_96w embedded [attached].&lt;/P&gt;&lt;P&gt;I'm using KSDK 2.3.0 library driver example to use interrupts. The project configures SPI0 to use as master and SPI0 as slave, so I connected a transceiver to spi0 and the other to spi1, but something is not working because the debug is not showing any transference.&lt;/P&gt;&lt;P&gt;This is the code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/////////////////////////////////////////////////////////MAIN CODE//////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;#define BUFFER_SIZE (64)&lt;BR /&gt;static uint8_t srcBuff[BUFFER_SIZE];&lt;BR /&gt;static uint8_t destBuff[BUFFER_SIZE];&lt;BR /&gt;static uint32_t masterIndex = BUFFER_SIZE;&lt;BR /&gt;static uint32_t slaveIndex = BUFFER_SIZE;&lt;BR /&gt;static volatile bool masterFinished = false;&lt;BR /&gt;static volatile bool slaveFinished = false;&lt;/P&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Code&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;P&gt;void SPI_MASTER_IRQHandler(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SPI_GetStatusFlags(EXAMPLE_SPI_MASTER) &amp;amp; kSPI_TxBufferEmptyFlag)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI_WriteData(EXAMPLE_SPI_MASTER, (uint16_t)(srcBuff[BUFFER_SIZE - masterIndex]));&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;masterIndex--;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (masterIndex == 0U)&amp;nbsp;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;masterFinished = true;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI_DisableInterrupts(EXAMPLE_SPI_MASTER, kSPI_TxEmptyInterruptEnable);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void SPI_SLAVE_IRQHandler(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SPI_GetStatusFlags(EXAMPLE_SPI_SLAVE) &amp;amp; kSPI_RxBufferFullFlag)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;destBuff[BUFFER_SIZE - slaveIndex] = SPI_ReadData(EXAMPLE_SPI_SLAVE);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;slaveIndex--;&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;}&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;if (slaveIndex == 0U)&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;{&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;slaveFinished = true;&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;SPI_DisableInterrupts(EXAMPLE_SPI_SLAVE, kSPI_RxFullAndModfInterruptEnable);&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt; spi_master_config_t masterConfig = {0};&lt;BR /&gt; spi_slave_config_t slaveConfig = {0};&lt;BR /&gt; uint32_t sourceClock = 0U;&lt;BR /&gt; uint32_t i = 0U;&lt;BR /&gt; uint32_t err = 0U;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Init the boards */&lt;BR /&gt; BOARD_InitPins();&lt;BR /&gt; BOARD_BootClockRUN();&lt;BR /&gt; BOARD_InitDebugConsole();&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;PRINTF("\r\nSPI one board interrupt example started!\r\n");&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Init SPI master */&lt;BR /&gt; /*&lt;BR /&gt; * masterConfig.enableStopInWaitMode = false;&lt;BR /&gt; * masterConfig.polarity = kSPI_ClockPolarityActiveHigh;&lt;BR /&gt; * masterConfig.phase = kSPI_ClockPhaseFirstEdge;&lt;BR /&gt; * masterConfig.direction = kSPI_MsbFirst;&lt;BR /&gt; * masterConfig.dataMode = kSPI_8BitMode;&lt;BR /&gt; * masterConfig.txWatermark = kSPI_TxFifoOneHalfEmpty;&lt;BR /&gt; * masterConfig.rxWatermark = kSPI_RxFifoOneHalfFull;&lt;BR /&gt; * masterConfig.pinMode = kSPI_PinModeNormal;&lt;BR /&gt; * masterConfig.outputMode = kSPI_SlaveSelectAutomaticOutput;&lt;BR /&gt; * masterConfig.baudRate_Bps = 500000U;&lt;BR /&gt; */&lt;BR /&gt; SPI_MasterGetDefaultConfig(&amp;amp;masterConfig);&lt;BR /&gt; sourceClock = EXAMPLE_SPI_MASTER_CLK_FREQ;&lt;BR /&gt; SPI_MasterInit(EXAMPLE_SPI_MASTER, &amp;amp;masterConfig, sourceClock);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Init SPI slave */&lt;BR /&gt; /*&lt;BR /&gt; * slaveConfig.polarity = kSPI_ClockPolarityActiveHigh;&lt;BR /&gt; * slaveConfig.phase = kSPI_ClockPhaseFirstEdge;&lt;BR /&gt; * slaveConfig.direction = kSPI_MsbFirst;&lt;BR /&gt; * slaveConfig.enableStopInWaitMode = false;&lt;BR /&gt; * slaveConfig.dataMode = kSPI_8BitMode;&lt;BR /&gt; * slaveConfig.txWatermark = kSPI_TxFifoOneHalfEmpty;&lt;BR /&gt; * slaveConfig.rxWatermark = kSPI_RxFifoOneHalfFull;&lt;BR /&gt; */&lt;BR /&gt; SPI_SlaveGetDefaultConfig(&amp;amp;slaveConfig);&lt;BR /&gt; SPI_SlaveInit(EXAMPLE_SPI_SLAVE, &amp;amp;slaveConfig);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Disable FIFO */&lt;BR /&gt;#if defined(FSL_FEATURE_SPI_HAS_FIFO) &amp;amp;&amp;amp; (FSL_FEATURE_SPI_HAS_FIFO)&lt;BR /&gt; SPI_EnableFIFO(EXAMPLE_SPI_MASTER, false);&lt;BR /&gt; SPI_EnableFIFO(EXAMPLE_SPI_SLAVE, false);&lt;BR /&gt;#endif /* FSL_FEATURE_SPI_HAS_FIFO */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Set priority, slave have higher priority */&lt;BR /&gt; NVIC_SetPriority(EXAMPLE_SPI_MASTER_IRQ, 1U);&lt;BR /&gt; NVIC_SetPriority(EXAMPLE_SPI_SLAVE_IRQ, 0U);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Init source buffer */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;for (i = 0U; i &amp;lt; BUFFER_SIZE; i++)&lt;BR /&gt; {&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;srcBuff[i] = i;&lt;BR /&gt; }&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Enable interrupt, first enable slave and then master. */&lt;BR /&gt; EnableIRQ(EXAMPLE_SPI_MASTER_IRQ);&lt;BR /&gt; EnableIRQ(EXAMPLE_SPI_SLAVE_IRQ);&lt;BR /&gt; SPI_EnableInterrupts(EXAMPLE_SPI_SLAVE, kSPI_RxFullAndModfInterruptEnable);&lt;BR /&gt; SPI_EnableInterrupts(EXAMPLE_SPI_MASTER, kSPI_TxEmptyInterruptEnable);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;while ((masterFinished != true) || (slaveFinished != true))&lt;BR /&gt; {&lt;BR /&gt; }&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Check the data received */&lt;BR /&gt; for (i = 0U; i &amp;lt; BUFFER_SIZE; i++)&lt;BR /&gt; {&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;if (destBuff[i] != srcBuff[i])&lt;BR /&gt; {&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;PRINTF("\r\nThe %d data is wrong, the data received is %d \r\n", i, destBuff[i]);&lt;BR /&gt; err++;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; if (err == 0U)&lt;BR /&gt; {&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;PRINTF("\r\nSPI transfer finished!\r\n");&lt;BR /&gt; }&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;while (1)&lt;BR /&gt; {&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;////////////////////////////////////////////////////PIN CONFIG (BOARD_InitPins)///////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;void BOARD_InitPins(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Port A Clock Gate Control: Clock enabled */&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLOCK_EnableClock(kCLOCK_PortA);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Port D Clock Gate Control: Clock enabled */&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLOCK_EnableClock(kCLOCK_PortD);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTA1 (pin 35) is configured as UART0_RX */&lt;BR /&gt; PORT_SetPinMux(PORTA, 1U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTA14 (pin 44) is configured as &lt;STRONG&gt;SPI0_PCS0&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTA, 14U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTA15 (pin 45) is configured as &lt;STRONG&gt;SPI0_SCK&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTA, 15U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTA16 (pin 46) is configured as &lt;STRONG&gt;SPI0_MOSI&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTA, 16U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTA17 (pin 47) is configured as &lt;STRONG&gt;SPI0_MISO&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTA, 17U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTA2 (pin 36) is configured as &lt;STRONG&gt;UART0_TX&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTA, 2U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTD4 (pin 97) is configured as &lt;STRONG&gt;SPI1_PCS0&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTD, 4U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTD5 (pin 98) is configured as &lt;STRONG&gt;SPI1_SCK&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTD, 5U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTD6 (pin 99) is configured as &lt;STRONG&gt;SPI1_MOSI&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTD, 6U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTD7 (pin 100) is configured as &lt;STRONG&gt;SPI1_MISO&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTD, 7U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;SIM-&amp;gt;SOPT5 = ((SIM-&amp;gt;SOPT5 &amp;amp;&lt;BR /&gt; /* Mask bits to zero which are setting */&lt;BR /&gt; (~(SIM_SOPT5_UART0TXSRC_MASK | SIM_SOPT5_UART0RXSRC_MASK)))&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* UART0 Transmit Data Source Select: UART0_TX pin. */&lt;BR /&gt; | SIM_SOPT5_UART0TXSRC(SOPT5_UART0TXSRC_UART_TX)&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* UART0 Receive Data Source Select: UART_RX pin. */&lt;BR /&gt; | SIM_SOPT5_UART0RXSRC(SOPT5_UART0RXSRC_UART_RX));&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;Here I attach the&amp;nbsp;project (I've used MCUxpresso 10)&amp;nbsp;and some useful images (board and module pinout).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm new at programming&amp;nbsp;embeddeds so I'd appreciate if&amp;nbsp;someone can give me a hand.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 07 Dec 2017 17:33:45 GMT</pubDate>
    <dc:creator>fedeblanc</dc:creator>
    <dc:date>2017-12-07T17:33:45Z</dc:date>
    <item>
      <title>What am I doing wrong in spi communication program?[kl46z]</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/What-am-I-doing-wrong-in-spi-communication-program-kl46z/m-p/773499#M47022</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm trying to use spi communication to transfer/receive data from a Dragino LoraBee module based on sx1276/78, which has an rfm95_96w embedded [attached].&lt;/P&gt;&lt;P&gt;I'm using KSDK 2.3.0 library driver example to use interrupts. The project configures SPI0 to use as master and SPI0 as slave, so I connected a transceiver to spi0 and the other to spi1, but something is not working because the debug is not showing any transference.&lt;/P&gt;&lt;P&gt;This is the code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/////////////////////////////////////////////////////////MAIN CODE//////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;#define BUFFER_SIZE (64)&lt;BR /&gt;static uint8_t srcBuff[BUFFER_SIZE];&lt;BR /&gt;static uint8_t destBuff[BUFFER_SIZE];&lt;BR /&gt;static uint32_t masterIndex = BUFFER_SIZE;&lt;BR /&gt;static uint32_t slaveIndex = BUFFER_SIZE;&lt;BR /&gt;static volatile bool masterFinished = false;&lt;BR /&gt;static volatile bool slaveFinished = false;&lt;/P&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Code&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;P&gt;void SPI_MASTER_IRQHandler(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SPI_GetStatusFlags(EXAMPLE_SPI_MASTER) &amp;amp; kSPI_TxBufferEmptyFlag)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI_WriteData(EXAMPLE_SPI_MASTER, (uint16_t)(srcBuff[BUFFER_SIZE - masterIndex]));&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;masterIndex--;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (masterIndex == 0U)&amp;nbsp;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;masterFinished = true;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI_DisableInterrupts(EXAMPLE_SPI_MASTER, kSPI_TxEmptyInterruptEnable);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void SPI_SLAVE_IRQHandler(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SPI_GetStatusFlags(EXAMPLE_SPI_SLAVE) &amp;amp; kSPI_RxBufferFullFlag)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;destBuff[BUFFER_SIZE - slaveIndex] = SPI_ReadData(EXAMPLE_SPI_SLAVE);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;slaveIndex--;&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;}&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;if (slaveIndex == 0U)&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;{&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;slaveFinished = true;&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;SPI_DisableInterrupts(EXAMPLE_SPI_SLAVE, kSPI_RxFullAndModfInterruptEnable);&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt; spi_master_config_t masterConfig = {0};&lt;BR /&gt; spi_slave_config_t slaveConfig = {0};&lt;BR /&gt; uint32_t sourceClock = 0U;&lt;BR /&gt; uint32_t i = 0U;&lt;BR /&gt; uint32_t err = 0U;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Init the boards */&lt;BR /&gt; BOARD_InitPins();&lt;BR /&gt; BOARD_BootClockRUN();&lt;BR /&gt; BOARD_InitDebugConsole();&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;PRINTF("\r\nSPI one board interrupt example started!\r\n");&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Init SPI master */&lt;BR /&gt; /*&lt;BR /&gt; * masterConfig.enableStopInWaitMode = false;&lt;BR /&gt; * masterConfig.polarity = kSPI_ClockPolarityActiveHigh;&lt;BR /&gt; * masterConfig.phase = kSPI_ClockPhaseFirstEdge;&lt;BR /&gt; * masterConfig.direction = kSPI_MsbFirst;&lt;BR /&gt; * masterConfig.dataMode = kSPI_8BitMode;&lt;BR /&gt; * masterConfig.txWatermark = kSPI_TxFifoOneHalfEmpty;&lt;BR /&gt; * masterConfig.rxWatermark = kSPI_RxFifoOneHalfFull;&lt;BR /&gt; * masterConfig.pinMode = kSPI_PinModeNormal;&lt;BR /&gt; * masterConfig.outputMode = kSPI_SlaveSelectAutomaticOutput;&lt;BR /&gt; * masterConfig.baudRate_Bps = 500000U;&lt;BR /&gt; */&lt;BR /&gt; SPI_MasterGetDefaultConfig(&amp;amp;masterConfig);&lt;BR /&gt; sourceClock = EXAMPLE_SPI_MASTER_CLK_FREQ;&lt;BR /&gt; SPI_MasterInit(EXAMPLE_SPI_MASTER, &amp;amp;masterConfig, sourceClock);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Init SPI slave */&lt;BR /&gt; /*&lt;BR /&gt; * slaveConfig.polarity = kSPI_ClockPolarityActiveHigh;&lt;BR /&gt; * slaveConfig.phase = kSPI_ClockPhaseFirstEdge;&lt;BR /&gt; * slaveConfig.direction = kSPI_MsbFirst;&lt;BR /&gt; * slaveConfig.enableStopInWaitMode = false;&lt;BR /&gt; * slaveConfig.dataMode = kSPI_8BitMode;&lt;BR /&gt; * slaveConfig.txWatermark = kSPI_TxFifoOneHalfEmpty;&lt;BR /&gt; * slaveConfig.rxWatermark = kSPI_RxFifoOneHalfFull;&lt;BR /&gt; */&lt;BR /&gt; SPI_SlaveGetDefaultConfig(&amp;amp;slaveConfig);&lt;BR /&gt; SPI_SlaveInit(EXAMPLE_SPI_SLAVE, &amp;amp;slaveConfig);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Disable FIFO */&lt;BR /&gt;#if defined(FSL_FEATURE_SPI_HAS_FIFO) &amp;amp;&amp;amp; (FSL_FEATURE_SPI_HAS_FIFO)&lt;BR /&gt; SPI_EnableFIFO(EXAMPLE_SPI_MASTER, false);&lt;BR /&gt; SPI_EnableFIFO(EXAMPLE_SPI_SLAVE, false);&lt;BR /&gt;#endif /* FSL_FEATURE_SPI_HAS_FIFO */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Set priority, slave have higher priority */&lt;BR /&gt; NVIC_SetPriority(EXAMPLE_SPI_MASTER_IRQ, 1U);&lt;BR /&gt; NVIC_SetPriority(EXAMPLE_SPI_SLAVE_IRQ, 0U);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Init source buffer */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;for (i = 0U; i &amp;lt; BUFFER_SIZE; i++)&lt;BR /&gt; {&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;srcBuff[i] = i;&lt;BR /&gt; }&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Enable interrupt, first enable slave and then master. */&lt;BR /&gt; EnableIRQ(EXAMPLE_SPI_MASTER_IRQ);&lt;BR /&gt; EnableIRQ(EXAMPLE_SPI_SLAVE_IRQ);&lt;BR /&gt; SPI_EnableInterrupts(EXAMPLE_SPI_SLAVE, kSPI_RxFullAndModfInterruptEnable);&lt;BR /&gt; SPI_EnableInterrupts(EXAMPLE_SPI_MASTER, kSPI_TxEmptyInterruptEnable);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;while ((masterFinished != true) || (slaveFinished != true))&lt;BR /&gt; {&lt;BR /&gt; }&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* Check the data received */&lt;BR /&gt; for (i = 0U; i &amp;lt; BUFFER_SIZE; i++)&lt;BR /&gt; {&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;if (destBuff[i] != srcBuff[i])&lt;BR /&gt; {&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;PRINTF("\r\nThe %d data is wrong, the data received is %d \r\n", i, destBuff[i]);&lt;BR /&gt; err++;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; if (err == 0U)&lt;BR /&gt; {&lt;BR /&gt; &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;PRINTF("\r\nSPI transfer finished!\r\n");&lt;BR /&gt; }&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;while (1)&lt;BR /&gt; {&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;////////////////////////////////////////////////////PIN CONFIG (BOARD_InitPins)///////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;void BOARD_InitPins(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Port A Clock Gate Control: Clock enabled */&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLOCK_EnableClock(kCLOCK_PortA);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Port D Clock Gate Control: Clock enabled */&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLOCK_EnableClock(kCLOCK_PortD);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTA1 (pin 35) is configured as UART0_RX */&lt;BR /&gt; PORT_SetPinMux(PORTA, 1U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTA14 (pin 44) is configured as &lt;STRONG&gt;SPI0_PCS0&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTA, 14U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTA15 (pin 45) is configured as &lt;STRONG&gt;SPI0_SCK&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTA, 15U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTA16 (pin 46) is configured as &lt;STRONG&gt;SPI0_MOSI&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTA, 16U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTA17 (pin 47) is configured as &lt;STRONG&gt;SPI0_MISO&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTA, 17U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTA2 (pin 36) is configured as &lt;STRONG&gt;UART0_TX&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTA, 2U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTD4 (pin 97) is configured as &lt;STRONG&gt;SPI1_PCS0&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTD, 4U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTD5 (pin 98) is configured as &lt;STRONG&gt;SPI1_SCK&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTD, 5U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTD6 (pin 99) is configured as &lt;STRONG&gt;SPI1_MOSI&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTD, 6U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* PORTD7 (pin 100) is configured as &lt;STRONG&gt;SPI1_MISO&lt;/STRONG&gt; */&lt;BR /&gt; PORT_SetPinMux(PORTD, 7U, kPORT_MuxAlt2);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;SIM-&amp;gt;SOPT5 = ((SIM-&amp;gt;SOPT5 &amp;amp;&lt;BR /&gt; /* Mask bits to zero which are setting */&lt;BR /&gt; (~(SIM_SOPT5_UART0TXSRC_MASK | SIM_SOPT5_UART0RXSRC_MASK)))&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* UART0 Transmit Data Source Select: UART0_TX pin. */&lt;BR /&gt; | SIM_SOPT5_UART0TXSRC(SOPT5_UART0TXSRC_UART_TX)&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* UART0 Receive Data Source Select: UART_RX pin. */&lt;BR /&gt; | SIM_SOPT5_UART0RXSRC(SOPT5_UART0RXSRC_UART_RX));&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;Here I attach the&amp;nbsp;project (I've used MCUxpresso 10)&amp;nbsp;and some useful images (board and module pinout).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm new at programming&amp;nbsp;embeddeds so I'd appreciate if&amp;nbsp;someone can give me a hand.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Dec 2017 17:33:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/What-am-I-doing-wrong-in-spi-communication-program-kl46z/m-p/773499#M47022</guid>
      <dc:creator>fedeblanc</dc:creator>
      <dc:date>2017-12-07T17:33:45Z</dc:date>
    </item>
    <item>
      <title>Re: What am I doing wrong in spi communication program?[kl46z]</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/What-am-I-doing-wrong-in-spi-communication-program-kl46z/m-p/773500#M47023</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Fede,&lt;/P&gt;&lt;P&gt;Please refer to the SDK_2.3_FRDM-KL46Z\boards\frdmkl46z\driver_examples\spi\polling_transfer. This example take SPI0 as master and SPI1 as slaver, just same to your case.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jing&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 08 Dec 2017 08:29:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/What-am-I-doing-wrong-in-spi-communication-program-kl46z/m-p/773500#M47023</guid>
      <dc:creator>jingpan</dc:creator>
      <dc:date>2017-12-08T08:29:45Z</dc:date>
    </item>
  </channel>
</rss>

