<?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のトピックRe: K66 Spi recieve problem</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Spi-recieve-problem/m-p/910603#M53389</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Bogdan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm glad that you could solve your issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Alexis Andalon&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 26 Sep 2019 17:32:32 GMT</pubDate>
    <dc:creator>Alexis_A</dc:creator>
    <dc:date>2019-09-26T17:32:32Z</dc:date>
    <item>
      <title>K66 Spi recieve problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Spi-recieve-problem/m-p/910601#M53387</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;Hello, I am trying to configure an spi connection between k66 and an spi flash. The oscilloscope capture looks fine :I have read a register value, changed it and read it back. All good here. My problem is in reading the rxdata which I am not able to store in my buffer. I have printed out several situations and it seems that in my recieve buffer I get OxFF for a number of bytes equal to the number of bytes I read ( tr.rxDataSize ). Any idea how can I store the correct recieve data ?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class="" data-hover="tooltip" data-tooltip-content="17:24" data-tooltip-position="right"&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class="" style="max-width: 164px; overflow-wrap: break-word;"&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;I have used the example in the sdk.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;SPAN class="" data-hover="none"&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class="" data-hover="tooltip" data-tooltip-content="17:26" data-tooltip-position="right"&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;I would expect to have the value 16 (from the scope) stored in rxdata[0] ,rxdata[1],rxdata[2],rxdata[3] but instead I get 0xFF. I have attached 2 print screens&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="" style="max-width: 164px; overflow-wrap: break-word;"&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;Thank you&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_debug_console.h"&lt;BR /&gt;#include "fsl_dspi_edma.h"&lt;BR /&gt;#include "fsl_dmamux.h"&lt;BR /&gt;#include "fsl_dspi.h"&lt;BR /&gt;#include "board.h"&lt;/P&gt;&lt;P&gt;#include "pin_mux.h"&lt;BR /&gt;#include "clock_config.h"&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt; * Definitions&lt;BR /&gt; ******************************************************************************/&lt;BR /&gt;#define EXAMPLE_DSPI_MASTER_BASEADDR SPI0&lt;BR /&gt;#define EXAMPLE_DSPI_MASTER_DMA_MUX_BASEADDR DMAMUX&lt;BR /&gt;#define EXAMPLE_DSPI_MASTER_DMA_BASEADDR DMA0&lt;BR /&gt;#define EXAMPLE_DSPI_MASTER_DMA_RX_REQUEST_SOURCE kDmaRequestMux0SPI0Rx&lt;BR /&gt;#define EXAMPLE_DSPI_MASTER_DMA_TX_REQUEST_SOURCE kDmaRequestMux0SPI0Tx&lt;BR /&gt;#define DSPI_MASTER_CLK_SRC DSPI0_CLK_SRC&lt;BR /&gt;#define DSPI_MASTER_CLK_FREQ CLOCK_GetFreq(DSPI0_CLK_SRC)&lt;BR /&gt;#define EXAMPLE_DSPI_MASTER_PCS_FOR_INIT kDSPI_Pcs0&lt;BR /&gt;#define EXAMPLE_DSPI_MASTER_PCS_FOR_TRANSFER kDSPI_MasterPcs0&lt;/P&gt;&lt;P&gt;#define TRANSFER_BAUDRATE 500000U&lt;BR /&gt;#define BUFFER_SIZE 64&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;static uint8_t txdata[BUFFER_SIZE];&lt;BR /&gt;static uint8_t rxdata[BUFFER_SIZE];&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;int main(void)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; uint32_t srcFreq = 0;&lt;/P&gt;&lt;P&gt;/* Transfer structure for half-duplex. */&lt;BR /&gt; dspi_master_config_t masterConfig;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BOARD_InitPins();&lt;BR /&gt; BOARD_BootClockRUN();&lt;BR /&gt; BOARD_InitDebugConsole();&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; // Master config &lt;BR /&gt; masterConfig.whichCtar = kDSPI_Ctar0;&lt;BR /&gt; masterConfig.ctarConfig.baudRate = TRANSFER_BAUDRATE;&lt;BR /&gt; masterConfig.ctarConfig.bitsPerFrame = 8;&lt;BR /&gt; masterConfig.ctarConfig.cpol = kDSPI_ClockPolarityActiveHigh;&lt;BR /&gt; masterConfig.ctarConfig.cpha = kDSPI_ClockPhaseFirstEdge;&lt;BR /&gt; masterConfig.ctarConfig.direction = kDSPI_MsbFirst;&lt;BR /&gt; masterConfig.ctarConfig.pcsToSckDelayInNanoSec = 1000000000U / TRANSFER_BAUDRATE;&lt;BR /&gt; masterConfig.ctarConfig.lastSckToPcsDelayInNanoSec = 1000000000U / TRANSFER_BAUDRATE;&lt;BR /&gt; masterConfig.ctarConfig.betweenTransferDelayInNanoSec = 1000000000U / TRANSFER_BAUDRATE; // pot astepta 1 perioada de ceas&lt;/P&gt;&lt;P&gt;masterConfig.whichPcs = EXAMPLE_DSPI_MASTER_PCS_FOR_INIT;&lt;BR /&gt; masterConfig.pcsActiveHighOrLow = kDSPI_PcsActiveLow;&lt;/P&gt;&lt;P&gt;masterConfig.enableContinuousSCK = false;&lt;BR /&gt; masterConfig.enableRxFifoOverWrite = false;&lt;BR /&gt; masterConfig.enableModifiedTimingFormat = false;&lt;BR /&gt; masterConfig.samplePoint = kDSPI_SckToSin0Clock;&lt;BR /&gt; srcFreq = DSPI_MASTER_CLK_FREQ;&lt;BR /&gt; DSPI_MasterInit(EXAMPLE_DSPI_MASTER_BASEADDR, &amp;amp;masterConfig, srcFreq);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; int i;&lt;BR /&gt; for (i = 0; i &amp;lt; BUFFER_SIZE; i++) //fill up buffers with 1&lt;BR /&gt; {&lt;BR /&gt; txdata[i] = 1;&lt;BR /&gt; rxdata[i] = 1;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;// get feature&lt;BR /&gt; txdata[0]=0x0F;&lt;BR /&gt; txdata[1]=0xB0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;dspi_half_duplex_transfer_t tr;&lt;BR /&gt; tr.txData =txdata;&lt;BR /&gt; tr.rxData =rxdata;&lt;BR /&gt; &lt;BR /&gt; tr.txDataSize=2; // send 2 bytes&lt;BR /&gt; tr.rxDataSize=4; //recieve 2 bytes&lt;BR /&gt; tr.configFlags=kDSPI_MasterCtar0 | EXAMPLE_DSPI_MASTER_PCS_FOR_TRANSFER | kDSPI_MasterPcsContinuous ;&lt;BR /&gt; tr.isPcsAssertInTransfer=true;&lt;BR /&gt; tr.isTransmitFirst=true;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; PRINTF("\n Before SPI transmission \n");&lt;BR /&gt; for(int i=0;i&amp;lt;10;i++){&lt;BR /&gt; printf("\t rxdata[%d]=%X",i,rxdata[i]);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;while (1)&lt;BR /&gt; {&lt;BR /&gt; DSPI_MasterHalfDuplexTransferBlocking(EXAMPLE_DSPI_MASTER_BASEADDR, &amp;amp;tr);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; printf("\n After SPI transmission \n");&lt;BR /&gt; for(int k=0;k&amp;lt;10;k++){&lt;BR /&gt; printf("\t rxdata[%d]=%X",k,rxdata[k]);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; printf("\n After SPI transmission \n");&lt;/P&gt;&lt;P&gt;for(int j=0;j&amp;lt;10;j++){&lt;BR /&gt; printf("\t tr.rxdata[%d]=%X",j,tr.rxData[j]);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /* Stop the transfer. */&lt;BR /&gt; DSPI_Deinit(EXAMPLE_DSPI_MASTER_BASEADDR);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Sep 2019 14:32:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Spi-recieve-problem/m-p/910601#M53387</guid>
      <dc:creator>bogdan_adrian91</dc:creator>
      <dc:date>2019-09-25T14:32:13Z</dc:date>
    </item>
    <item>
      <title>Re: K66 Spi recieve problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Spi-recieve-problem/m-p/910602#M53388</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I just solved it. &lt;/P&gt;&lt;P&gt;Got to work this morning, ran my code and it worked...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 26 Sep 2019 05:35:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Spi-recieve-problem/m-p/910602#M53388</guid>
      <dc:creator>bogdan_adrian91</dc:creator>
      <dc:date>2019-09-26T05:35:50Z</dc:date>
    </item>
    <item>
      <title>Re: K66 Spi recieve problem</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Spi-recieve-problem/m-p/910603#M53389</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Bogdan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm glad that you could solve your issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Alexis Andalon&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 26 Sep 2019 17:32:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K66-Spi-recieve-problem/m-p/910603#M53389</guid>
      <dc:creator>Alexis_A</dc:creator>
      <dc:date>2019-09-26T17:32:32Z</dc:date>
    </item>
  </channel>
</rss>

