<?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>Kinetis Microcontrollers中的主题 Problem reading that SPI data in Slave Mode - FRDM-K22F</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Problem-reading-that-SPI-data-in-Slave-Mode-FRDM-K22F/m-p/809535#M49213</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;I recently started to play with the&amp;nbsp;FRDM-K22F devboard. I used the KSDK v1.3 documentation and managed to print data through the UART, set interruptions through one of the push buttons, and toggle the on board LED, but I cannot get the SPI bus to read data as a Slave. I based the code on this sample from the K64 board (&lt;SPAN&gt;&lt;SPAN&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-103944"&gt;https://community.nxp.com/docs/DOC-103944&lt;/A&gt;) and also read the KSDK manual. Everything seems to checkout on paper.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;Experimental setup:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;-&amp;nbsp;KSDK v1.3&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;-&amp;nbsp;FRDM-K22F devboard&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;- Arduino UNO (set as Master, sending 0x55 in 1 second intervals. Clock phase/polarity checked with scope)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;- Kinetis code (see main.c below)&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;I tried, both SPI instances, and they&amp;nbsp;hang at the&amp;nbsp;&lt;SPAN style="background-color: #f6f6f6;"&gt;DSPI_DRV_SlaveTransferBlocking() function. Then switched to the non-blocking variant and printed the Error output which prints "4" or "busy".&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN style="background-color: #f6f6f6;"&gt;This should work "out of the box", I have no idea where to go from here.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;#include "fsl_device_registers.h"&lt;BR /&gt;#include "board.h"&lt;BR /&gt;#include "pin_mux.h"&lt;BR /&gt;#include "fsl_clock_manager.h"&lt;BR /&gt;#include "fsl_debug_console.h"&lt;/P&gt;&lt;P&gt;#include "fsl_dspi_slave_driver.h"&lt;BR /&gt;#include "fsl_dspi_hal.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/P&gt;&lt;P&gt;//SPI input buffer&lt;BR /&gt;uint8_t spiSinkBuffer;&lt;/P&gt;&lt;P&gt;int main(void)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;/* enable clock for PORTs */&lt;BR /&gt; CLOCK_SYS_EnablePortClock(PORTA_IDX);&lt;BR /&gt; CLOCK_SYS_EnablePortClock(PORTB_IDX);&lt;BR /&gt; CLOCK_SYS_EnablePortClock(PORTC_IDX);&lt;BR /&gt; CLOCK_SYS_EnablePortClock(PORTE_IDX);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /* Init board clock */&lt;BR /&gt; BOARD_ClockInit();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*Debug UART init */&lt;BR /&gt; dbg_uart_init();&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; printf("\nPress SW2 to Toggle LED. \r\n");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Configure pin (sw2) interrupt&lt;BR /&gt; switchPins[0].config.interrupt = kPortIntFallingEdge;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; // Initialize GPIO driver&lt;BR /&gt; GPIO_DRV_Init(switchPins, ledPins);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//SPI Config&lt;BR /&gt; configure_spi_pins(SPI0_IDX);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Interrupt driven&lt;BR /&gt; dspi_slave_state_t dspiSlaveState;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// update configs&lt;BR /&gt; dspi_slave_user_config_t slaveUserConfig;&lt;BR /&gt; slaveUserConfig.dataConfig.clkPhase = kDspiClockPhase_SecondEdge;&lt;BR /&gt; slaveUserConfig.dataConfig.clkPolarity = kDspiClockPolarity_ActiveHigh;&lt;BR /&gt; slaveUserConfig.dataConfig.bitsPerFrame = 8;&lt;BR /&gt; slaveUserConfig.dataConfig.direction = kDspiMsbFirst;&lt;BR /&gt; slaveUserConfig.dummyPattern = DSPI_DEFAULT_DUMMY_PATTERN;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; // init the slave (interrupt driven)&lt;BR /&gt; DSPI_DRV_SlaveInit(SPI0_IDX, &amp;amp;dspiSlaveState, &amp;amp;slaveUserConfig);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Main loop&lt;/P&gt;&lt;P&gt;while(1)&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; GPIO_SW_DELAY;&lt;BR /&gt;&amp;nbsp; //printf("IN\n\r");&lt;BR /&gt;&amp;nbsp; //Blocking Transfer&lt;BR /&gt;&amp;nbsp; /*&lt;BR /&gt;&amp;nbsp; dspi_status_t Error = DSPI_DRV_SlaveTransferBlocking(SPI0_IDX, //spi instance&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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NULL, //send buffer address&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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;spiSinkBuffer, //received buffer address&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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1, //number of bytes to send and receive&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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OSA_WAIT_FOREVER); //timeout&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OSA_WAIT_FOREVER = blocking&lt;BR /&gt;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp; //Non-blocking Transfer&lt;BR /&gt;&amp;nbsp; dspi_status_t Error = DSPI_DRV_SlaveTransfer(SPI0_IDX, //spi instance&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; &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; NULL, //send buffer address&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; &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;amp;spiSinkBuffer, //received buffer address&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; &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; 1); //number of bytes to send and receive&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (Error == kStatus_DSPI_Success)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; //Send over UART&lt;BR /&gt;&amp;nbsp; &amp;nbsp; //dspiSlaveState.isTransferInProgress = 0;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; printf("SPI Buffer: 0x%X\n\r",spiSinkBuffer);&lt;BR /&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;printf("Error Code %d\n\r",Error);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Define PORTC_IRQHandler (sw2)&lt;BR /&gt;void PORTC_IRQHandler()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; static uint8_t count = 0;&lt;BR /&gt;&amp;nbsp; GPIO_DRV_ClearPinIntFlag (kGpioSW2); // Clear IRQ flag&lt;BR /&gt;&amp;nbsp; GPIO_DRV_TogglePinOutput(BOARD_GPIO_LED_RED); // Toggle blue LED&lt;BR /&gt;&amp;nbsp; printf("0x%X\n\r",count++);&lt;BR /&gt;&amp;nbsp; GPIO_SW_DELAY;&lt;BR /&gt;}&lt;BR /&gt;/*EOF*/&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 22 Jun 2018 04:40:40 GMT</pubDate>
    <dc:creator>simonbour</dc:creator>
    <dc:date>2018-06-22T04:40:40Z</dc:date>
    <item>
      <title>Problem reading that SPI data in Slave Mode - FRDM-K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Problem-reading-that-SPI-data-in-Slave-Mode-FRDM-K22F/m-p/809535#M49213</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;I recently started to play with the&amp;nbsp;FRDM-K22F devboard. I used the KSDK v1.3 documentation and managed to print data through the UART, set interruptions through one of the push buttons, and toggle the on board LED, but I cannot get the SPI bus to read data as a Slave. I based the code on this sample from the K64 board (&lt;SPAN&gt;&lt;SPAN&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-103944"&gt;https://community.nxp.com/docs/DOC-103944&lt;/A&gt;) and also read the KSDK manual. Everything seems to checkout on paper.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;Experimental setup:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;-&amp;nbsp;KSDK v1.3&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;-&amp;nbsp;FRDM-K22F devboard&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;- Arduino UNO (set as Master, sending 0x55 in 1 second intervals. Clock phase/polarity checked with scope)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;- Kinetis code (see main.c below)&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;I tried, both SPI instances, and they&amp;nbsp;hang at the&amp;nbsp;&lt;SPAN style="background-color: #f6f6f6;"&gt;DSPI_DRV_SlaveTransferBlocking() function. Then switched to the non-blocking variant and printed the Error output which prints "4" or "busy".&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN style="background-color: #f6f6f6;"&gt;This should work "out of the box", I have no idea where to go from here.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;#include "fsl_device_registers.h"&lt;BR /&gt;#include "board.h"&lt;BR /&gt;#include "pin_mux.h"&lt;BR /&gt;#include "fsl_clock_manager.h"&lt;BR /&gt;#include "fsl_debug_console.h"&lt;/P&gt;&lt;P&gt;#include "fsl_dspi_slave_driver.h"&lt;BR /&gt;#include "fsl_dspi_hal.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/P&gt;&lt;P&gt;//SPI input buffer&lt;BR /&gt;uint8_t spiSinkBuffer;&lt;/P&gt;&lt;P&gt;int main(void)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;/* enable clock for PORTs */&lt;BR /&gt; CLOCK_SYS_EnablePortClock(PORTA_IDX);&lt;BR /&gt; CLOCK_SYS_EnablePortClock(PORTB_IDX);&lt;BR /&gt; CLOCK_SYS_EnablePortClock(PORTC_IDX);&lt;BR /&gt; CLOCK_SYS_EnablePortClock(PORTE_IDX);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /* Init board clock */&lt;BR /&gt; BOARD_ClockInit();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*Debug UART init */&lt;BR /&gt; dbg_uart_init();&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; printf("\nPress SW2 to Toggle LED. \r\n");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Configure pin (sw2) interrupt&lt;BR /&gt; switchPins[0].config.interrupt = kPortIntFallingEdge;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; // Initialize GPIO driver&lt;BR /&gt; GPIO_DRV_Init(switchPins, ledPins);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//SPI Config&lt;BR /&gt; configure_spi_pins(SPI0_IDX);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Interrupt driven&lt;BR /&gt; dspi_slave_state_t dspiSlaveState;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// update configs&lt;BR /&gt; dspi_slave_user_config_t slaveUserConfig;&lt;BR /&gt; slaveUserConfig.dataConfig.clkPhase = kDspiClockPhase_SecondEdge;&lt;BR /&gt; slaveUserConfig.dataConfig.clkPolarity = kDspiClockPolarity_ActiveHigh;&lt;BR /&gt; slaveUserConfig.dataConfig.bitsPerFrame = 8;&lt;BR /&gt; slaveUserConfig.dataConfig.direction = kDspiMsbFirst;&lt;BR /&gt; slaveUserConfig.dummyPattern = DSPI_DEFAULT_DUMMY_PATTERN;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; // init the slave (interrupt driven)&lt;BR /&gt; DSPI_DRV_SlaveInit(SPI0_IDX, &amp;amp;dspiSlaveState, &amp;amp;slaveUserConfig);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Main loop&lt;/P&gt;&lt;P&gt;while(1)&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; GPIO_SW_DELAY;&lt;BR /&gt;&amp;nbsp; //printf("IN\n\r");&lt;BR /&gt;&amp;nbsp; //Blocking Transfer&lt;BR /&gt;&amp;nbsp; /*&lt;BR /&gt;&amp;nbsp; dspi_status_t Error = DSPI_DRV_SlaveTransferBlocking(SPI0_IDX, //spi instance&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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NULL, //send buffer address&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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;spiSinkBuffer, //received buffer address&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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1, //number of bytes to send and receive&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; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OSA_WAIT_FOREVER); //timeout&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OSA_WAIT_FOREVER = blocking&lt;BR /&gt;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp; //Non-blocking Transfer&lt;BR /&gt;&amp;nbsp; dspi_status_t Error = DSPI_DRV_SlaveTransfer(SPI0_IDX, //spi instance&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; &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; NULL, //send buffer address&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; &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;amp;spiSinkBuffer, //received buffer address&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; &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; 1); //number of bytes to send and receive&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (Error == kStatus_DSPI_Success)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; //Send over UART&lt;BR /&gt;&amp;nbsp; &amp;nbsp; //dspiSlaveState.isTransferInProgress = 0;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; printf("SPI Buffer: 0x%X\n\r",spiSinkBuffer);&lt;BR /&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;printf("Error Code %d\n\r",Error);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Define PORTC_IRQHandler (sw2)&lt;BR /&gt;void PORTC_IRQHandler()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; static uint8_t count = 0;&lt;BR /&gt;&amp;nbsp; GPIO_DRV_ClearPinIntFlag (kGpioSW2); // Clear IRQ flag&lt;BR /&gt;&amp;nbsp; GPIO_DRV_TogglePinOutput(BOARD_GPIO_LED_RED); // Toggle blue LED&lt;BR /&gt;&amp;nbsp; printf("0x%X\n\r",count++);&lt;BR /&gt;&amp;nbsp; GPIO_SW_DELAY;&lt;BR /&gt;}&lt;BR /&gt;/*EOF*/&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Jun 2018 04:40:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Problem-reading-that-SPI-data-in-Slave-Mode-FRDM-K22F/m-p/809535#M49213</guid>
      <dc:creator>simonbour</dc:creator>
      <dc:date>2018-06-22T04:40:40Z</dc:date>
    </item>
    <item>
      <title>Re: Problem reading that SPI data in Slave Mode - FRDM-K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Problem-reading-that-SPI-data-in-Slave-Mode-FRDM-K22F/m-p/809536#M49214</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi simonbour,&lt;/P&gt;&lt;P&gt;Please download the latest MCUXpresso SDK_2.4.0 FRDM-K22F, then you will find several dspi slave examples.(...\FRDM-K22F\boards\frdmk22f\driver_examples\dspi)&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="dspi slave SDK2.4.0 FRDM-K22F.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/62402iD00F4C7B83EBF2EA/image-size/large?v=v2&amp;amp;px=999" role="button" title="dspi slave SDK2.4.0 FRDM-K22F.png" alt="dspi slave SDK2.4.0 FRDM-K22F.png" /&gt;&lt;/span&gt;&lt;BR /&gt;If you have two FRDM-K22F boards, you can direct test them. &lt;BR /&gt;The readme file will show you how to test these examples.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="readme.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/62403i42F29D1230593797/image-size/large?v=v2&amp;amp;px=999" role="button" title="readme.png" alt="readme.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please refer the images show below and download the latest MCUXpresso SDK.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="1 Select and Build MCUXpresso SDK.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/62404iC2598C45A700E905/image-size/large?v=v2&amp;amp;px=999" role="button" title="1 Select and Build MCUXpresso SDK.png" alt="1 Select and Build MCUXpresso SDK.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="2 Download SDK.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/62405iC11D7FD5A21819A5/image-size/large?v=v2&amp;amp;px=999" role="button" title="2 Download SDK.png" alt="2 Download SDK.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="3 Download SDK Archive.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/62406i117099936B83BAB6/image-size/large?v=v2&amp;amp;px=999" role="button" title="3 Download SDK Archive.png" alt="3 Download SDK Archive.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Robin&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Jun 2018 03:10:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Problem-reading-that-SPI-data-in-Slave-Mode-FRDM-K22F/m-p/809536#M49214</guid>
      <dc:creator>Robin_Shen</dc:creator>
      <dc:date>2018-06-25T03:10:22Z</dc:date>
    </item>
    <item>
      <title>Re: Problem reading that SPI data in Slave Mode - FRDM-K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Problem-reading-that-SPI-data-in-Slave-Mode-FRDM-K22F/m-p/809537#M49215</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you Robin. Just switched to MCUXpresso and downloaded the latest SDK. Worked out of the box.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Simon.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Jun 2018 22:48:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Problem-reading-that-SPI-data-in-Slave-Mode-FRDM-K22F/m-p/809537#M49215</guid>
      <dc:creator>simonbour</dc:creator>
      <dc:date>2018-06-25T22:48:03Z</dc:date>
    </item>
  </channel>
</rss>

