<?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 K60FX512 problem writing to P-Flash in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60FX512-problem-writing-to-P-Flash/m-p/350033#M17216</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 have a big trouble writing in P-Flash. I am able to erase and read a section. However&amp;nbsp; I cannot write 16 bytes on a specific memory.&lt;/P&gt;&lt;P&gt;To erase the flash the command 0x09 is employed and to write the &lt;SPAN style="font-size: 13.3333330154419px;"&gt;employed&amp;nbsp; &lt;/SPAN&gt;command is 0x06.&lt;/P&gt;&lt;P&gt;I have read the datasheet and everything seems to be fine. But I do not know what can be wrong.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void ftfl_command( unsigned char command, unsigned long *address, unsigned long data )&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32 temp_reg;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp_reg = FMC_PFAPR;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* store present value of FMC_PFAPR */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Set M0PFD through M7PFD to 1 to disable prefetch */&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR |= FMC_PFAPR_M7PFD_MASK | FMC_PFAPR_M6PFD_MASK |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M5PFD_MASK | FMC_PFAPR_M4PFD_MASK |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M3PFD_MASK | FMC_PFAPR_M2PFD_MASK |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M1PFD_MASK | FMC_PFAPR_M0PFD_MASK |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M0AP_MASK&amp;nbsp; | FMC_PFAPR_M1AP_MASK&amp;nbsp; |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M2AP_MASK&amp;nbsp; | FMC_PFAPR_M3AP_MASK&amp;nbsp; |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M4AP_MASK&amp;nbsp; | FMC_PFAPR_M5AP_MASK&amp;nbsp; |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M6AP_MASK&amp;nbsp; | FMC_PFAPR_M7AP_MASK&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFB01CR &amp;amp;= 0xFFFFFFE6; /* Single entry buffer disable.*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFB23CR &amp;amp;= 0xFFFFFFE6; /* Single entry buffer disable. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFB01CR &amp;amp;= 0xFFFFFFF9; /* Data Cache disable. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFB23CR &amp;amp;= 0xFFFFFFF9; /* Data Cache disable. */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; irq_desc = cpu_irq_disable();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!(FTFE_FSTAT &amp;amp; FTFE_FCNFG_CCIE_MASK))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FSTAT = (FTFE_FSTAT_ACCERR_MASK | FTFE_FSTAT_FPVIOL_MASK | FTFE_FSTAT_RDCOLERR_MASK);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB0 = command;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB1 = (fnet_uint8)(((fnet_uint32)address) &amp;gt;&amp;gt; 16);&amp;nbsp;&amp;nbsp; /* Flash address [23:16] */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB2 = (fnet_uint8)(((fnet_uint32)address) &amp;gt;&amp;gt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Flash address [15:8] */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB3 = (fnet_uint8)((fnet_uint32)address);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Flash address [7:0] */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB4 = (fnet_uint8)(data &amp;gt;&amp;gt; 24);&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Data Byte 0.*/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB5 = (fnet_uint8)(data &amp;gt;&amp;gt; 16);&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Data Byte 1.*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB6 = (fnet_uint8)(data &amp;gt;&amp;gt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Data Byte 2.*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB7 = (fnet_uint8)(data);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Data Byte 3.*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fftfl_command_lunch_inram();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FMC_PFAPR = temp_reg;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu_irq_enable(irq_desc);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 02 Mar 2015 16:34:24 GMT</pubDate>
    <dc:creator>juanandujar</dc:creator>
    <dc:date>2015-03-02T16:34:24Z</dc:date>
    <item>
      <title>K60FX512 problem writing to P-Flash</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60FX512-problem-writing-to-P-Flash/m-p/350033#M17216</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 have a big trouble writing in P-Flash. I am able to erase and read a section. However&amp;nbsp; I cannot write 16 bytes on a specific memory.&lt;/P&gt;&lt;P&gt;To erase the flash the command 0x09 is employed and to write the &lt;SPAN style="font-size: 13.3333330154419px;"&gt;employed&amp;nbsp; &lt;/SPAN&gt;command is 0x06.&lt;/P&gt;&lt;P&gt;I have read the datasheet and everything seems to be fine. But I do not know what can be wrong.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void ftfl_command( unsigned char command, unsigned long *address, unsigned long data )&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32 temp_reg;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp_reg = FMC_PFAPR;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* store present value of FMC_PFAPR */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Set M0PFD through M7PFD to 1 to disable prefetch */&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR |= FMC_PFAPR_M7PFD_MASK | FMC_PFAPR_M6PFD_MASK |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M5PFD_MASK | FMC_PFAPR_M4PFD_MASK |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M3PFD_MASK | FMC_PFAPR_M2PFD_MASK |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M1PFD_MASK | FMC_PFAPR_M0PFD_MASK |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M0AP_MASK&amp;nbsp; | FMC_PFAPR_M1AP_MASK&amp;nbsp; |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M2AP_MASK&amp;nbsp; | FMC_PFAPR_M3AP_MASK&amp;nbsp; |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M4AP_MASK&amp;nbsp; | FMC_PFAPR_M5AP_MASK&amp;nbsp; |&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFAPR_M6AP_MASK&amp;nbsp; | FMC_PFAPR_M7AP_MASK&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFB01CR &amp;amp;= 0xFFFFFFE6; /* Single entry buffer disable.*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFB23CR &amp;amp;= 0xFFFFFFE6; /* Single entry buffer disable. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFB01CR &amp;amp;= 0xFFFFFFF9; /* Data Cache disable. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; FMC_PFB23CR &amp;amp;= 0xFFFFFFF9; /* Data Cache disable. */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; irq_desc = cpu_irq_disable();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!(FTFE_FSTAT &amp;amp; FTFE_FCNFG_CCIE_MASK))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FSTAT = (FTFE_FSTAT_ACCERR_MASK | FTFE_FSTAT_FPVIOL_MASK | FTFE_FSTAT_RDCOLERR_MASK);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB0 = command;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB1 = (fnet_uint8)(((fnet_uint32)address) &amp;gt;&amp;gt; 16);&amp;nbsp;&amp;nbsp; /* Flash address [23:16] */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB2 = (fnet_uint8)(((fnet_uint32)address) &amp;gt;&amp;gt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Flash address [15:8] */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB3 = (fnet_uint8)((fnet_uint32)address);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Flash address [7:0] */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB4 = (fnet_uint8)(data &amp;gt;&amp;gt; 24);&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Data Byte 0.*/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB5 = (fnet_uint8)(data &amp;gt;&amp;gt; 16);&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Data Byte 1.*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB6 = (fnet_uint8)(data &amp;gt;&amp;gt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Data Byte 2.*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB7 = (fnet_uint8)(data);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Data Byte 3.*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fftfl_command_lunch_inram();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FMC_PFAPR = temp_reg;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu_irq_enable(irq_desc);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Mar 2015 16:34:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60FX512-problem-writing-to-P-Flash/m-p/350033#M17216</guid>
      <dc:creator>juanandujar</dc:creator>
      <dc:date>2015-03-02T16:34:24Z</dc:date>
    </item>
    <item>
      <title>Re: K60FX512 problem writing to P-Flash</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60FX512-problem-writing-to-P-Flash/m-p/350034#M17217</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Juan:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Command 0x06 is not supported by K60FX512 (FTFE Flash module). Instead you should use the 0x07 command (Program Phrase). This command is to write 8 bytes (64 bits) at once.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, be careful that the address at which you want to write data is aligned to 64 bits, so the 6 least significant bits of the address must be 0.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Regards!&lt;BR /&gt;Jorge Gonzalez&lt;/P&gt;&lt;P&gt;&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>Wed, 04 Mar 2015 18:27:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60FX512-problem-writing-to-P-Flash/m-p/350034#M17217</guid>
      <dc:creator>Jorge_Gonzalez</dc:creator>
      <dc:date>2015-03-04T18:27:28Z</dc:date>
    </item>
  </channel>
</rss>

