<?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: K82 : qspi_polling example</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920538#M53741</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eugene,&lt;/P&gt;&lt;P&gt;Yes, I think it's fine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Jing&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 23 Aug 2019 09:34:01 GMT</pubDate>
    <dc:creator>jingpan</dc:creator>
    <dc:date>2019-08-23T09:34:01Z</dc:date>
    <item>
      <title>K82 : qspi_polling example</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920533#M53736</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to write data to NOT type of memory in small chunks 4-16 bytes long.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm looking example qspi_polling in latest SDK and can see the next implementation of function for write complete page :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Program page into serial flash using QSPI polling way */&lt;BR /&gt;void program_page(uint32_t dest_addr, uint32_t *src_addr)&lt;BR /&gt;{&lt;BR /&gt; .....&lt;/P&gt;&lt;P&gt;/* First write some data into TXFIFO to prevent from underrun */&lt;BR /&gt; QSPI_WriteBlocking(EXAMPLE_QSPI, src_addr, &lt;STRONG&gt;FSL_FEATURE_QSPI_TXFIFO_DEPTH * 4&lt;/STRONG&gt;);&amp;nbsp; // 64 bytes ?&lt;BR /&gt; src_addr += FSL_FEATURE_QSPI_TXFIFO_DEPTH;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Start the program */&lt;BR /&gt; QSPI_SetIPCommandSize(EXAMPLE_QSPI, FLASH_PAGE_SIZE);&lt;BR /&gt; QSPI_ExecuteIPCommand(EXAMPLE_QSPI, 16U);&lt;/P&gt;&lt;P&gt;leftLongWords = FLASH_PAGE_SIZE - 16 * sizeof(uint32_t);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; QSPI_WriteBlocking(EXAMPLE_QSPI, src_addr, leftLongWords);&lt;/P&gt;&lt;P&gt;....&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What it means on practice ?&lt;/P&gt;&lt;P&gt;Can it be so than usage of QSPI features limits minimal data chunk to 64 bytes&amp;nbsp; ( 32 bytes ) ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And if I would like to write data by small chunks, I should use just SPI driver and NOR&amp;nbsp; memory driver ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It looks like for me that usage of QSPI and EDMA bring limitations for size of data chunks and for my case&lt;/P&gt;&lt;P&gt;it is little bit problematic to use those.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How long can be minimal data chunk in case of QSPI and EDMA usage ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can use minimal possible buffer and fill extra bytes with 0xFF for avoid writing. Some data alignment can be kept as well.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Eugene&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Jul 2019 12:34:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920533#M53736</guid>
      <dc:creator>EugeneHiihtaja</dc:creator>
      <dc:date>2019-07-29T12:34:55Z</dc:date>
    </item>
    <item>
      <title>Re: K82 : qspi_polling example</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920534#M53737</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eugene,&lt;/P&gt;&lt;P&gt;You can write to QSPI flash in any size. Attachment shows how to write in word or byte.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Jing&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Aug 2019 06:48:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920534#M53737</guid>
      <dc:creator>jingpan</dc:creator>
      <dc:date>2019-08-01T06:48:10Z</dc:date>
    </item>
    <item>
      <title>Re: K82 : qspi_polling example</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920535#M53738</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jing !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;could you post attachment again. It is not visible.&lt;/P&gt;&lt;P&gt;Thank you !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Eugene&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 01 Aug 2019 12:27:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920535#M53738</guid>
      <dc:creator>EugeneHiihtaja</dc:creator>
      <dc:date>2019-08-01T12:27:36Z</dc:date>
    </item>
    <item>
      <title>Re: K82 : qspi_polling example</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920536#M53739</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ok, I try again.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Aug 2019 02:41:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920536#M53739</guid>
      <dc:creator>jingpan</dc:creator>
      <dc:date>2019-08-02T02:41:45Z</dc:date>
    </item>
    <item>
      <title>Re: K82 : qspi_polling example</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920537#M53740</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jing !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have review one more time our requirement and find out that we can write data by 32 bytes aligned chunks only.&lt;/P&gt;&lt;P&gt;So what ever we write it always 32*n byte long and it help to cross page boundary.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For fullfll this requirement I follow your example and common sense and modify LUT table and create write 32 byte routine.&lt;/P&gt;&lt;P&gt;Could you look code below. How it is looks like ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Seq4:&amp;nbsp;Data Program */&lt;BR /&gt; /* CMD: 0x02 - Page Program, Single pad */&lt;BR /&gt; /* ADDR: 0x18 - 24bit address, Single pad */&lt;BR /&gt; [16] = QSPI_LUT_SEQ(QSPI_CMD, QSPI_PAD_1, 0x02, QSPI_ADDR, QSPI_PAD_1, 0x18),&lt;BR /&gt; [17] = QSPI_LUT_SEQ(QSPI_WRITE, QSPI_PAD_1, &lt;STRONG&gt;32,&lt;/STRONG&gt; 0, 0, 0),&amp;nbsp; // 32 bytes only&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Program 32byte into serial flash using QSPI polling way */&lt;BR /&gt;void program_data_32(uint32_t dest_addr, uint32_t *src_addr, size_t size) // &lt;STRONG&gt;size = 32 bytes always&lt;/STRONG&gt;&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;assert(!(dest_addr % 32));&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;assert(!(size % 32));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (QSPI_GetStatusFlags(EXAMPLE_QSPI) &amp;amp; kQSPI_Busy)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;QSPI_ClearFifo(EXAMPLE_QSPI, kQSPI_TxFifo);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;QSPI_SetIPCommandAddress(EXAMPLE_QSPI, dest_addr);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;cmd_write_enable();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;while (QSPI_GetStatusFlags(EXAMPLE_QSPI) &amp;amp; kQSPI_Busy)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Put data to fifo */&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;QSPI_WriteBlocking(EXAMPLE_QSPI, src_addr, &lt;STRONG&gt;size); // 32&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Start the program */&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;QSPI_SetIPCommandSize(EXAMPLE_QSPI,&lt;STRONG&gt; size);&lt;/STRONG&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;QSPI_ExecuteIPCommand(EXAMPLE_QSPI, 16U);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Wait until flash finished program */&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;check_if_finished();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;while (QSPI_GetStatusFlags(EXAMPLE_QSPI) &amp;amp; (kQSPI_Busy | kQSPI_IPAccess))&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Eugene&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Aug 2019 10:28:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920537#M53740</guid>
      <dc:creator>EugeneHiihtaja</dc:creator>
      <dc:date>2019-08-20T10:28:34Z</dc:date>
    </item>
    <item>
      <title>Re: K82 : qspi_polling example</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920538#M53741</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eugene,&lt;/P&gt;&lt;P&gt;Yes, I think it's fine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Jing&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 Aug 2019 09:34:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K82-qspi-polling-example/m-p/920538#M53741</guid>
      <dc:creator>jingpan</dc:creator>
      <dc:date>2019-08-23T09:34:01Z</dc:date>
    </item>
  </channel>
</rss>

