<?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>ColdFire/68K Microcontrollers and ProcessorsのトピックRe: QSPI problems in 5282</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148732#M3650</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That's correct -- thats the *inactive* value that is used when you want no chips selected, so all lines should be the same.&amp;nbsp; You probably want that to be "1".&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then, when you have chips selected, you need to put the proper bitmask in here in the command registers:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // for all bytes...&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; request; i++) {&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; // set up the command&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; MCF_QSPI_QAR = MCF_QSPI_QAR_CMD+i;&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; MCF_QSPI_QDR = MCF_QSPI_QDR_CONT|(csiv?0:&lt;FONT color="#ff0000"&gt;MCF_QSPI_QDR_QSPI_CS0&lt;/FONT&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;&amp;nbsp;&amp;nbsp; // copy tx data to qspi ram&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; MCF_QSPI_QAR = MCF_QSPI_QAR_TRANS+i;&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; MCF_QSPI_QDR = buffer[i];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You want to change the CS0 term to be the appropriate bitmask.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 27 Feb 2009 00:12:24 GMT</pubDate>
    <dc:creator>RichTestardi</dc:creator>
    <dc:date>2009-02-27T00:12:24Z</dc:date>
    <item>
      <title>QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148712#M3630</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Trying to program a SPI flash but it is not working, as I want to.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;1) To check the completion of a transfer:&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&amp;nbsp;When transfer is initiated (MCF_QSPI_QDLYR |=&amp;nbsp; MCF_QSPI_QDLYR_SPE; ).&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; Is it recommended to check the SPI bit?&lt;BR /&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt; while(1) {&amp;nbsp; vuint16 qdlyr=MCF_QSPI_QDLYR;&amp;nbsp; if( (qdlyr &amp;amp; MCF_QSPI_QDLYR_SPE &amp;gt;&amp;gt; 0xF)==0)&amp;nbsp;&amp;nbsp; break; }&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;Or simply the SPIF bit:&amp;nbsp;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;while (!(MCF_QSPI_QIR &amp;amp; MCF_QSPI_QIR_SPIF))&amp;nbsp;&amp;nbsp; ; //wait for queue to end&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;or both?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;STRONG&gt;2)&amp;nbsp; I am always getting the response from the SPI Flash in QRR1 (&amp;nbsp;rcv[1] in code below). Any clue why?&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;void SPI_Flash_ReadStatusReg(void){ int i; spi_word_t rcv[16];&amp;nbsp; // QSPI Module&amp;nbsp; Command RAM Registers (QCR0-QCR15) #define SPI_CMD_CS_ASRT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xC0E0 //chip select 0 Active Low&amp;nbsp;&amp;nbsp; // Load Command: Set queue address (QAR) to COMMAND address [0x20 - 0x2F] MCF_QSPI_QAR = MCF_QSPI_QAR_CMD;&amp;nbsp; // Write the command words MCF_QSPI_QDR = (uint16)(SPI_CMD_CS_ASRT);&amp;nbsp;&amp;nbsp; // Write Tx Data: Set queue address (QAR) to Transmit address [0x00 - 0x0F] MCF_QSPI_QAR = MCF_QSPI_QAR_TRANS;&amp;nbsp;&amp;nbsp; // Load the data to transmit&amp;nbsp;&amp;nbsp; MCF_QSPI_QDR = RDSR; //read status register (i,e. RDSR=0x05)&amp;nbsp; /* Determine the active level, the first and last index of the transmit queue */ MCF_QSPI_QWR = (0 | (MCF_QSPI_QWR &amp;amp; MCF_QSPI_QWR_CSIV)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | MCF_QSPI_QWR_NEWQP(0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | MCF_QSPI_QWR_ENDQP(1));&amp;nbsp;&amp;nbsp;&amp;nbsp; /* begin transfer */ MCF_QSPI_QDLYR |= MCF_QSPI_QDLYR_SPE;&amp;nbsp; /* When transfer queue ends, QIR[SPIF] is set */ while (!(MCF_QSPI_QIR &amp;amp; MCF_QSPI_QIR_SPIF))&amp;nbsp; ; //wait for queue to end /* Set RAM address pointer to received data */ MCF_QSPI_QAR = MCF_QSPI_QAR_RECV; /* read received data from the RAM */ for (i = 0; i &amp;lt; 16; ++i) {&amp;nbsp; rcv[i] = MCF_QSPI_QDR; } /* done */}&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Simon&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 08:50:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148712#M3630</guid>
      <dc:creator>SVC2</dc:creator>
      <dc:date>2020-10-29T08:50:26Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148713#M3631</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;What exactly is the problem you are seeing?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;If I understand correctly, the status from the read status register command *should* be in rcv[1].&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;rcv[0] should be ignored -- that is the data that was being shifted in while you were shifting out the read status register command -- it will be undefined.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;If it helps, what I do after starting a transfer is:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // start the transfer&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_QSPI_QDLYR = MCF_QSPI_QDLYR_SPE;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // wait for transfer complete&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assert(! (MCF_QSPI_QIR &amp;amp; MCF_QSPI_QIR_SPIF));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (! (MCF_QSPI_QIR &amp;amp; MCF_QSPI_QIR_SPIF)) {&lt;BR /&gt;&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; MCF_QSPI_QIR = MCF_QSPI_QIR_SPIF;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assert((MCF_QSPI_QWR &amp;amp; 0xf0) &amp;gt;&amp;gt; 4 == request-1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assert(! (MCF_QSPI_QDLYR &amp;amp; MCF_QSPI_QDLYR_SPE));&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;I use QSPI to talk to EzPort of another MCU, which is similar to, but not identical to,&amp;nbsp;a generic SPI flash memory.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;You can see all my code, including the qspi driver in qspi.[ch] and the flash access driver above it in clone.[ch] here:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &lt;A href="http://www.cpustick.com/downloads/skeleton.zip" rel="nofollow" target="_blank"&gt;http://www.cpustick.com/downloads/skeleton.zip&lt;/A&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Another guy is having some issues with QSPI/EzPort interaction here:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &lt;A href="http://forums.freescale.com/freescale/board/message?board.id=CFCOMM&amp;amp;thread.id=5976" target="_blank"&gt;http://forums.freescale.com/freescale/board/message?board.id=CFCOMM&amp;amp;thread.id=5976&lt;/A&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;-- Rich&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Feb 2009 06:45:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148713#M3631</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2009-02-03T06:45:41Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148714#M3632</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Well, it is good to know that it is normal to have the response in rcv[1]. Thanks.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Attached are the signals: c1 (top) is Chip select, c2 (middle) is the clock and c3 (bottom) is the QSPI_Din (my forth channel on the scope is busted).&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am noticing 2 weird things:&lt;/DIV&gt;&lt;BLOCKQUOTE&gt;&lt;DIV&gt;1)&amp;nbsp;When chip select is asserted, QSPI_Din is toggling.&lt;BR /&gt;2)&amp;nbsp;Why is the clock being interrupted in the middle of the sequence?&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV&gt;Thanks,&lt;/DIV&gt;&lt;DIV&gt;SVC&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Feb 2009 23:09:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148714#M3632</guid>
      <dc:creator>SVC2</dc:creator>
      <dc:date>2009-02-03T23:09:17Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148715#M3633</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BR /&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;SVC2 wrote:&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;I am noticing 2 weird things: &lt;BLOCKQUOTE&gt;&lt;DIV&gt;1)&amp;nbsp;When chip select is asserted, QSPI_Din is toggling.&lt;BR /&gt;2)&amp;nbsp;Why is the clock being interrupted in the middle of the sequence?&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;1.)I'm not sure why that is occuring, but if it becomes a problem you can add a delay between the assertion of the CS and the beginning of the clock.&amp;nbsp; QDLYR[QCD], enabled in QCR[DSCK]&lt;BR /&gt;&lt;BR /&gt;2.) It is doing 2 8-bit transfers... The first one receives command, the second sends the response data.&amp;nbsp; Check the QCR[DT] for the delay after the transfer enable... If DT = 1, you can shrink or grow the delay by changing the value of QDLYR[DTL].&amp;nbsp; If DT = 0, a standard delay period is used.&amp;nbsp; Time is needed to ensure the transfer RAM is loaded.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Feb 2009 00:19:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148715#M3633</guid>
      <dc:creator>jayteemo</dc:creator>
      <dc:date>2009-02-04T00:19:34Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148716#M3634</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;I cannot check the DT since QCR0-QCR15 are write only but I am explicitly setting it to 0 so I presume the delay I see is normal.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;What is the Default Reset value (i.e., DT=0)? I cannot find it in the document.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks,&lt;/DIV&gt;&lt;DIV&gt;SVC&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Feb 2009 01:38:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148716#M3634</guid>
      <dc:creator>SVC2</dc:creator>
      <dc:date>2009-02-04T01:38:08Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148717#M3635</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I believe the transfer delays for both DT==0 and DT==1 are in section&amp;nbsp;22.4.3 of the MCF5282 ColdFire® Microcontroller User’s Manual, like:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Standard delay after transfer = 17/fSYS (DT = 0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I assume it is your SPI flash that is toggling the QSPI_DIN when you select it...&amp;nbsp; The glitch might just be it dropping out of tri-state mode and deciding what level to drive...&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I posted the waveforms I see on that other thread.&amp;nbsp; I definitely saw glitches on my QSPI_DIN (driven by the EzPort MCU) before the command had been processed, like here:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://forums.freescale.com/attachments/freescale/CFCOMM/6036/1/pullup.GIF" target="_blank"&gt;http://forums.freescale.com/attachments/freescale/CFCOMM/6036/1/pullup.GIF&lt;/A&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;-- Rich&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Feb 2009 01:53:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148717#M3635</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2009-02-04T01:53:00Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148718#M3636</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;The reset values for QCR are undefined.&amp;nbsp; &lt;BR /&gt;Since you are explicitly setting DT=0 you are good.&lt;BR /&gt;&lt;BR /&gt;Also, this should be applicable if you want to determine the time of the delay:&lt;BR /&gt;&lt;BLOCKQUOTE&gt;Standard delay after transfer =&amp;nbsp; 17 /&amp;nbsp; f&lt;I&gt;sys&lt;/I&gt;&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;when DT = 0.&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Feb 2009 01:58:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148718#M3636</guid>
      <dc:creator>jayteemo</dc:creator>
      <dc:date>2009-02-04T01:58:18Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148719#M3637</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face="Times New Roman" color="#000000" size="3"&gt;Hi,&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT size="3"&gt;&lt;FONT color="#000000"&gt;&lt;FONT face="Times New Roman"&gt;&amp;nbsp;&lt;NAMESPACE prefix="o" ns="urn:schemas-microsoft-com:office:office"&gt;&lt;/NAMESPACE&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face="Times New Roman" color="#000000" size="3"&gt;I’m trying to control a SPI flash using the QSPI in 5282.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT size="3"&gt;&lt;FONT color="#000000"&gt;&lt;FONT face="Times New Roman"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face="Times New Roman" color="#000000" size="3"&gt;It works well when send/received data is less that queue size.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT size="3"&gt;&lt;FONT color="#000000"&gt;&lt;FONT face="Times New Roman"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face="Times New Roman" color="#000000" size="3"&gt;It is a nighmare when data is more than queue size (for example to read/write 256 data into flash).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT size="3"&gt;&lt;FONT color="#000000"&gt;&lt;FONT face="Times New Roman"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face="Times New Roman" color="#000000" size="3"&gt;I am trying&amp;nbsp;to use it in wraparound mode, but I don't have a way to synchronize the device and the code running in the processor.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face="Times New Roman" color="#000000" size="3"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="msg_source_code"&gt;
&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;bool_t qspi_tx_cont(const uint16 cmd, 
       const uint16 *tx_buf, const uint16 tx_size, 
        Bsp_QSPI_err_t *err)
{
 const uint16 end_qp=(uint16) (tx_size &amp;gt; QSPI_QUEUE_LENGTH — QSPI_QUEUE_LENGTH : tx_size);
 uint32 count=0;
 uint16 i=0;
 
 // Fill the commands
 MCF_QSPI_QAR = MCF_QSPI_QAR_CMD; 
 for(i=0; i &amp;lt; QSPI_QUEUE_LENGTH; ++i)
  MCF_QSPI_QDR = cmd; //0xCE00;
 
 // Determine the active level, the first and last index of the transmit queue 
 MCF_QSPI_QWR = (unsigned short)(0 
                   | (MCF_QSPI_QWR &amp;amp; MCF_QSPI_QWR_CSIV)
     | MCF_QSPI_QWR_WREN   // Wrap enabled
     | MCF_QSPI_QWR_NEWQP(0)
     | MCF_QSPI_QWR_ENDQP(end_qp - 1)
     );

 // Clear the error flags 
 MCF_QSPI_QIR &amp;amp;= ~MCF_QSPI_QIR_WCEF;// Clear collision detected flag
 MCF_QSPI_QIR &amp;amp;= ~MCF_QSPI_QIR_ABRT;// Clear Abort flag

 // Fill Tx data
  MCF_QSPI_QAR = MCF_QSPI_QAR_TRANS;
        for(i=0; i &amp;lt; QSPI_QUEUE_LENGTH; ++i)
 {
  if(i &amp;lt; tx_size)
   MCF_QSPI_QDR = tx_buf[i];
  else
   MCF_QSPI_QDR = 0; // dummy 
 }

 // begin transfer in wrap around mode
 MCF_QSPI_QDLYR |= MCF_QSPI_QDLYR_SPE;
 
 
 // Send the rest
 while(i &amp;lt; tx_size)
 {
  
  // Fill Tx data
  MCF_QSPI_QAR = (uint16) (MCF_QSPI_QAR_TRANS + (i% QSPI_QUEUE_LENGTH));
  MCF_QSPI_QDR = tx_buf[i];

     // Next
  i++;
 }

 // Stop wrap around
 MCF_QSPI_QWR &amp;amp;= (~MCF_QSPI_QWR_WREN); 

 // Wait for transfer complete
 // When transfer queue ends, QIR[SPIF] is set
 count=0;
       while (! (MCF_QSPI_QIR &amp;amp; MCF_QSPI_QIR_SPIF)) 
       {
     if(count++ &amp;gt; QSPI_TRANSFER_TIMEOUT)
     {
      if(err) *err = BSP_QSPI_TRANSFER_TIMEOUT;
      return FALSE;
     }
    }

 // SPE automatically clears when transfer is complete
 if(  MCF_QSPI_QDLYR &amp;amp; MCF_QSPI_QDLYR_SPE )
 {
  if(err) *err = BSP_QSPI_SPE_NOT_ASSERTED;
  return FALSE; 
 }
  
    
 // clear the SPIF flag 
 MCF_QSPI_QIR |= MCF_QSPI_QIR_SPIF;
 
 // check if a write collision error has occured 
 if(MCF_QSPI_QIR &amp;amp; MCF_QSPI_QIR_WCEF)
 {
  if(err) *err = BSP_QSPI_COLLISION;
  return FALSE;
 }
  
 // check for if an abort error has occured 
 else if(MCF_QSPI_QIR &amp;amp; MCF_QSPI_QIR_ABRT)
 {
  if(err) *err = BSP_QSPI_ABORTED;
  return FALSE;
 }
 

 // done
 return TRUE;
 
}
  
&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face="Times New Roman" color="#000000" size="3"&gt;Any hints?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face="Times New Roman" color="#000000" size="3"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face="Times New Roman" color="#000000" size="3"&gt;Thanks,&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face="Times New Roman" color="#000000" size="3"&gt;S.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2009 00:10:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148719#M3637</guid>
      <dc:creator>SVC2</dc:creator>
      <dc:date>2009-02-18T00:10:29Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148720#M3638</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Is there a reason you need wraparound mode?&amp;nbsp; (Like you don't know how much data to expect when the transfer begins?)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;You don't need to use wraparound mode just to send more data than fits in the queue, and in fact I don't do so yet support arbitrary transfer lengths in the driver linked to above (and I use it to talk to essentially a QSPI flash device -- a CF with EzPort -- you can see all&amp;nbsp; the flash command processing in clone.c and the transport driver in qspi.c).&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The only trick when processing more than one queue of data is the chip select management.&amp;nbsp; If you use a GPIO pin, this is trivial; if you use one of the QSPI chip selects, you have to be just a bit more careful (see my qspi.c).&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;If you really want to use wraparound mode, I believe you have to synchronize with QIR[SPIF] before "reloading" the queue.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;-- Rich&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2009 00:24:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148720#M3638</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2009-02-18T00:24:16Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148721#M3639</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I tried your code and, as you mentioned, since I am using the QSPI chip Select, it does not work.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I can see on my scope the chip select toggling at each iteration of the loop.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;S.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2009 00:43:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148721#M3639</guid>
      <dc:creator>SVC2</dc:creator>
      <dc:date>2009-02-18T00:43:06Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148722#M3640</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Uggh!!!&amp;nbsp; I forgot there was a bug in that zip archive setting the command data that&amp;nbsp;I have since fixed.&amp;nbsp; Sorry, I'll try to&amp;nbsp;get the zip updated this week.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;In the meantime, try this:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;// perform both output and input qspi i/ovoidqspi_transfer(byte *buffer, int length){#if MCF52221 || MCF52233 || MCF52259    int i;    int x;    int request;    x = splx(7);        // while there is data remaining...    while (length) {        // process up to 16 bytes at a time        request = MIN(length, 16);        // for all bytes...        for (i = 0; i &amp;lt; request; i++) {            // set up the command            MCF_QSPI_QAR = MCF_QSPI_QAR_CMD+i;            MCF_QSPI_QDR = MCF_QSPI_QDR_CONT&lt;FONT color="#ff0000"&gt;|(csiv?0:MCF_QSPI_QDR_QSPI_CS0)&lt;/FONT&gt;;            // copy tx data to qspi ram            MCF_QSPI_QAR = MCF_QSPI_QAR_TRANS+i;            MCF_QSPI_QDR = buffer[i];        }        // set the queue pointers        assert(request);        MCF_QSPI_QWR = (csiv?0:MCF_QSPI_QWR_CSIV)|MCF_QSPI_QWR_ENDQP(request-1)|MCF_QSPI_QWR_NEWQP(0);        // start the transfer        MCF_QSPI_QDLYR = MCF_QSPI_QDLYR_SPE;        // wait for transfer complete        assert(! (MCF_QSPI_QIR &amp;amp; MCF_QSPI_QIR_SPIF));        while (! (MCF_QSPI_QIR &amp;amp; MCF_QSPI_QIR_SPIF)) {        }        MCF_QSPI_QIR = MCF_QSPI_QIR_SPIF;        assert((MCF_QSPI_QWR &amp;amp; 0xf0) &amp;gt;&amp;gt; 4 == request-1);        assert(! (MCF_QSPI_QDLYR &amp;amp; MCF_QSPI_QDLYR_SPE));        // for all bytes...        for (i = 0; i &amp;lt; request; i++) {            // copy rx data from qspi ram            MCF_QSPI_QAR = MCF_QSPI_QAR_RECV+i;            buffer[i] = MCF_QSPI_QDR;        }        buffer += request;        length -= request;    }    // transfer complete    MCF_QSPI_QWR = csiv?MCF_QSPI_QWR_CSIV:0;        splx(x);#elif MCF51JM128    // cs active    if (csiv) {        PTED &amp;amp;= ~PTEDD_PTEDD7_MASK;    } else {        PTED |= PTEDD_PTEDD7_MASK;    }        while (length) {        // N.B. spi needs us to read the status register even for release code!        ASSERT(SPI1S &amp;amp; SPI1S_SPTEF_MASK);        ASSERT(! (SPI1S &amp;amp; SPI1S_SPRF_MASK));                SPI1DL = *buffer;                while (! (SPI1S &amp;amp; SPI1S_SPTEF_MASK)) {            // NULL        }                while (! (SPI1S &amp;amp; SPI1S_SPRF_MASK)) {            // NULL        }                *buffer = SPI1DL;                buffer++;        length--;    }    // cs inactive    if (csiv) {        PTED |= PTEDD_PTEDD7_MASK;    } else {        PTED &amp;amp;= ~PTEDD_PTEDD7_MASK;    }#endif}&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;(I edited this because My "?" characters got munged in the paste.)&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;Message Edited by Rich T on &lt;SPAN class="date_text"&gt;2009-02-17&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;09:54 AM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 08:50:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148722#M3640</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2020-10-29T08:50:28Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148723#M3641</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;I tried with the following modifications. Again, the chip select is toggling:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;// perform both output and input qspi i/ovoid qspi_transfer(uint16 *buffer, int length){    int i;    int x;    int request;  &lt;FONT color="#ff0000"&gt;//  x = splx(7);&lt;/FONT&gt;        // while there is data remaining...    while (length) {        // process up to 16 bytes at a time        request = QSPI_MIN(length, 16);        // for all bytes...        for (i = 0; i &amp;lt; request; i++) {            // set up the command            MCF_QSPI_QAR = MCF_QSPI_QAR_CMD+i;            MCF_QSPI_QDR = &lt;FONT color="#ff0000"&gt;0xCE00&lt;/FONT&gt;;            // copy tx data to qspi ram            MCF_QSPI_QAR = MCF_QSPI_QAR_TRANS+i;            MCF_QSPI_QDR = buffer[i];        }        // set the queue pointers                assert(request);        MCF_QSPI_QWR = (&lt;FONT color="#ff0000"&gt;MCF_QSPI_QWR_CSIV|                        MCF_QSPI_QWR_ENDQP(request-1)|                        MCF_QSPI_QWR_NEWQP(0));&lt;/FONT&gt;                // start the transfer        MCF_QSPI_QDLYR = MCF_QSPI_QDLYR_SPE;        // wait for transfer complete        assert(! (MCF_QSPI_QIR &amp;amp; MCF_QSPI_QIR_SPIF));        while (! (MCF_QSPI_QIR &amp;amp; MCF_QSPI_QIR_SPIF)) {        }        MCF_QSPI_QIR = MCF_QSPI_QIR_SPIF;        assert((MCF_QSPI_QWR &amp;amp; 0xf0) &amp;gt;&amp;gt; 4 == request-1);        assert(! (MCF_QSPI_QDLYR &amp;amp; MCF_QSPI_QDLYR_SPE));        // for all bytes...        for (i = 0; i &amp;lt; request; i++) {            // copy rx data from qspi ram            MCF_QSPI_QAR = MCF_QSPI_QAR_RECV+i;            buffer[i] = MCF_QSPI_QDR;        }        buffer += request;        length -= request;    }    // transfer complete    MCF_QSPI_QWR = csiv—MCF_QSPI_QWR_CSIV:0;    &lt;FONT color="#ff0000"&gt;//    splx(x);&lt;/FONT&gt;}&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 08:50:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148723#M3641</guid>
      <dc:creator>SVC2</dc:creator>
      <dc:date>2020-10-29T08:50:30Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148724#M3642</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;If I run the following test program to read the first 32 bytes of flash over and over from EzPort:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New"&gt;&amp;gt; &lt;STRONG&gt;list&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp; 10 dim trig as pin dtin0 for digital output&lt;BR /&gt;&amp;nbsp; 20 dim cmd as byte, a1 as byte, a2 as byte, a3 as byte&lt;BR /&gt;&amp;nbsp; 30 dim d1, d2, d3, d4, d5, d6, d7, d8&lt;BR /&gt;&amp;nbsp; 40 configure qspi for 1 csiv&lt;BR /&gt;&amp;nbsp; 50 rem send read data command&lt;BR /&gt;&amp;nbsp; 60 while 1 do&lt;BR /&gt;&amp;nbsp; 70&amp;nbsp;&amp;nbsp; let cmd = 0x3, a1 = 0, a2 = 0, a3 = 0&lt;BR /&gt;&amp;nbsp; 80&amp;nbsp;&amp;nbsp; let trig = 1, trig = 0&lt;BR /&gt;&amp;nbsp; 90&amp;nbsp;&amp;nbsp; qspi cmd, a1, a2, a3, d1, d2, d3, d4, d5, d6, d7, d8&lt;BR /&gt;&amp;nbsp;100&amp;nbsp;&amp;nbsp; print hex d1, d2, d3, d4, d5, d6, d7, d8&lt;BR /&gt;&amp;nbsp;110 endwhile&lt;BR /&gt;end&lt;BR /&gt;&amp;gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I see the expected results:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Courier New"&gt;0x20003ffc 0x418 0x810 0x818 0x820 0x828 0x830 0x838&lt;BR /&gt;0x20003ffc 0x418 0x810 0x818 0x820 0x828 0x830 0x838&lt;BR /&gt;0x20003ffc 0x418 0x810 0x818 0x820 0x828 0x830 0x838&lt;BR /&gt;...&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;And my waveform is attached -- notice that the chip select is the bottom trace and it doesn't toggle, even though I needed to queue 4 separate transfers (I'm in byte mode).&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Do you want your chip select inactive value to be 1 or 0?&amp;nbsp; That is what my "csiv" flag is, and I suspect you want to follow the "1" code path.&amp;nbsp; Which chip select line are you using?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;If you're using QSPI_CS0 and you want it active low (i.e., inactive high), then I believe you need to change:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_QSPI_QWR = (&lt;FONT color="#ff0000"&gt;MCF_QSPI_QWR_CSIV|&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; MCF_QSPI_QWR_ENDQP(request-1)|&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; MCF_QSPI_QWR_NEWQP(0));&lt;/FONT&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;To:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_QSPI_QWR = (&lt;FONT color="#ff0000"&gt;MCF_QSPI_QWR_ENDQP(request-1)|&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; MCF_QSPI_QWR_NEWQP(0));&lt;/FONT&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;You might also want to change your final (non :smileyhappy: use of the csiv flag&amp;nbsp;to be consistent as well:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // transfer complete&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_QSPI_QWR = MCF_QSPI_QWR_CSIV;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;-- Rich&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2009 03:00:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148724#M3642</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2009-02-18T03:00:54Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148725#M3643</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Actually, my fault, your code works fine!&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thank you very much, I really appreciate your help.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;S.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2009 03:04:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148725#M3643</guid>
      <dc:creator>SVC2</dc:creator>
      <dc:date>2009-02-18T03:04:06Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148726#M3644</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Well, it didn't work fine the first time! :smileyhappy:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks for catching that; I updated the zip file out on the web.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;-- Rich&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2009 03:06:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148726#M3644</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2009-02-18T03:06:58Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148727#M3645</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Should there be any delay after I initialize the QSPI registers and start using it?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When I trace step through the code, it works. Nevertheless, when I run it, it does not work.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;Simon&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 Feb 2009 22:24:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148727#M3645</guid>
      <dc:creator>SVC2</dc:creator>
      <dc:date>2009-02-20T22:24:59Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148728#M3646</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The only delay I have been aware of is after I reset the target chip, it some time before it will properly respond to flash commands.&amp;nbsp; I do not believe the local qspi needs any time.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Wow, it looks like we have a new web interface here, and spell check!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 Feb 2009 22:34:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148728#M3646</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2009-02-20T22:34:23Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148729#M3647</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now I am adding more devices in different chip selects. I notice that when the code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCF_QSPI_QWR = (unsigned short) (&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; ((cs_active_lvl == SPI_CS_ACTIVE_LO) ? 0: MCF_QSPI_QWR_CSIV) |&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; MCF_QSPI_QWR_ENDQP(request-1) |&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; MCF_QSPI_QWR_NEWQP(0));&lt;/P&gt;&lt;P&gt;is executed, ALL 4 chips selects are getting asserted (driven Low).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Is there a way to assert solely the desired CS?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Note that the command I enter is:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;
MCF_QSPI_QAR = (uint16)(MCF_QSPI_QAR_CMD+i);MCF_QSPI_QDR = (uint16)(MCF_QSPI_QDR_CONT  |                    MCF_QSPI_QDR_BITSE |                           active_level);&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;where&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;
active_level= cs_active_lvl == SPI_CS_ACTIVE_LO ? ((~chip_select)&amp;amp;0xF00) : chip_select;// chip_select variable is set as //        MCF_QSPI_QDR_QSPI_CS3 or MCF_QSPI_QDR_QSPI_CS2,..//// Note:// MCF_QSPI_QDR_QSPI_CS3= 0x800 =&amp;gt; ~0x800 &amp;amp; 0xF00 = 0x700// MCF_QSPI_QDR_QSPI_CS2= 0x400 =&amp;gt; ~0x400 &amp;amp; 0xF00 = 0xB00// MCF_QSPI_QDR_QSPI_CS1= 0x200 =&amp;gt; ~0x200 &amp;amp; 0xF00 = 0xD00// MCF_QSPI_QDR_QSPI_CS0= 0x100 =&amp;gt; ~0x100 &amp;amp; 0xF00 = 0xE00//&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Simon&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 08:50:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148729#M3647</guid>
      <dc:creator>SVC2</dc:creator>
      <dc:date>2020-10-29T08:50:32Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148730#M3648</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The QWR controls the "inactive" level of the CS -- i.e., the level of all 4 lines while you are not driving a transfer.&amp;nbsp; During the transfer, you control the "active" chip selects individually with the 4 bits in the command register.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Typically, you'll want the "inactive" level to be 1, so you should set bit 12 of QWR to 1.&amp;nbsp; Then you will want to set the appropriate CS line low in the command register -- typically only one of bits 8 thru 11 of QCRx will be 0 at a time unless you are using an external decoder.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;STRONG&gt;Is there a way to assert solely the desired CS?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Yes, by setting just that desired CS to 0 (assuming active low) in QCRx, and all of the other CS to 1.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 26 Feb 2009 07:13:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148730#M3648</guid>
      <dc:creator>RichTestardi</dc:creator>
      <dc:date>2009-02-26T07:13:22Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI problems in 5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148731#M3649</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Rich,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the example you sent me, you have:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;HR /&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;while(length)&lt;/P&gt;&lt;P&gt;{&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;BLOCKQUOTE&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;// process up to 16 bytes at a time&lt;/P&gt;&lt;P&gt;request = MIN(length, 16);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// for all bytes...&lt;/P&gt;&lt;P&gt;for (i = 0; i &amp;lt; request; i++)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;// set up the command&lt;/P&gt;&lt;P&gt;MCF_QSPI_QAR = MCF_QSPI_QAR_CMD+i;&lt;/P&gt;&lt;P&gt;MCF_QSPI_QDR = MCF_QSPI_QDR_CONT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// copy tx data to qspi ram&lt;/P&gt;&lt;P&gt;MCF_QSPI_QAR = MCF_QSPI_QAR_TRANS+i;&lt;/P&gt;&lt;P&gt;MCF_QSPI_QDR = buffer[i];&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// set the queue pointers&lt;/P&gt;&lt;P&gt;assert(request);&lt;/P&gt;&lt;P&gt;MCF_QSPI_QWR = &lt;STRONG&gt;&lt;FONT color="#ff0000"&gt;(csiv?0:MCF_QSPI_QWR_CSIV)&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; |&lt;/P&gt;&lt;P&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; MCF_QSPI_QWR_ENDQP(request-1) |&lt;/P&gt;&lt;P&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; MCF_QSPI_QWR_NEWQP(0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//...&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;HR /&gt;&lt;P&gt;With &lt;EM&gt;csiv&lt;/EM&gt; set to 1, QWR is being set to 0, thus ALL 4 chip selects going Low.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Simon&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Feb 2009 00:07:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-problems-in-5282/m-p/148731#M3649</guid>
      <dc:creator>SVC2</dc:creator>
      <dc:date>2009-02-27T00:07:13Z</dc:date>
    </item>
  </channel>
</rss>

