<?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 Re: QE8 SPI slave does not transmit data to master in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/QE8-SPI-slave-does-not-transmit-data-to-master/m-p/174842#M12093</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hello Carlos,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Following the master sending the command byte, you will need to wait a sufficient time for the slave ISR to complete, before sending the next dummy byte to interrogate the returned data from the slave.&amp;nbsp; The return byte value needs to already have been written to SPID before SS input again becomes active low for the return byte transfer.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;If this is the problem, the inclusion of a small delay within the master code should help.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Incidently, I have found that &lt;FONT face="Courier New"&gt;switch&lt;/FONT&gt; statements generally require more processing cycles than the equivalent &amp;nbsp;&lt;FONT face="Courier New"&gt;if...else if...else&lt;/FONT&gt;&amp;nbsp; construct.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;There also seems to be a misunderstanding about the values&amp;nbsp;read from and written to the SPID register.&amp;nbsp; You cannot read back the value previously written.&amp;nbsp; The following thread covers similar ground in this respect.&lt;/DIV&gt;&lt;DIV&gt;&lt;A href="http://forums.freescale.com/freescale/board/message?board.id=8BITCOMM&amp;amp;thread.id=11435" target="_blank"&gt;http://forums.freescale.com/freescale/board/message?board.id=8BITCOMM&amp;amp;thread.id=11435&lt;/A&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Regards,&lt;/DIV&gt;&lt;DIV&gt;Mac&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 22 Jul 2008 17:24:44 GMT</pubDate>
    <dc:creator>bigmac</dc:creator>
    <dc:date>2008-07-22T17:24:44Z</dc:date>
    <item>
      <title>QE8 SPI slave does not transmit data to master</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/QE8-SPI-slave-does-not-transmit-data-to-master/m-p/174841#M12092</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Dear community,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I've been developing a SPI slave application using the QE8, so far I haven't been able to make the QE8 slave transmit data to the master, the master does trasmit the first "command" byte and then a blank byte just to clock the bus and get the byte out of the slave but it doesn't work. I know my master code is not bad because I'm using the same one to read other SPI devices.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I've read a couple fo threads in this forums regarding SPI_slave bugs but those are for the HSC12, the same fix didn't work for my case.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;My application code is the following (using interrupts):&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void interrupt SPI_RX_isr (void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;byte temp;&lt;BR /&gt;&amp;nbsp;temp = SPIS;&amp;nbsp; /* Read the SPI Status and Control Register (required to acknowledge interrupt) */&lt;BR /&gt;&amp;nbsp;temp = SPID; /* Read of SPDR to complete the interrupt acknowledgement.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (temp &amp;amp; READ_FLAG) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (temp) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case GXP_HITS_ACUM_L:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPID = (byte) g_hits;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!SPIS_SPRF);&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;&amp;nbsp;&amp;nbsp; temp = SPID;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case GXP_HITS_ACUM_H:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPID = (byte) (g_hits &amp;gt;&amp;gt; 8);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!SPIS_SPRF);&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;&amp;nbsp;&amp;nbsp; temp = SPID;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPID = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } // if (temp &amp;amp; READ_FLAG)&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;What I read all the time is the same byte the master srote to the slave, so it seems like the slave cannot modify the SPID register... When I step-by-step my code, the SPID = X assignment doesn't do a thing with the SPID memory location (address 0x2D).&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;An observation I made is that the SPIS_SPTEF flag never gets set, could this be related to my bug? (if it is it will be a HW bug)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Has somebody made the SPI slave work on a HCS08?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Kindest Regards,&lt;/DIV&gt;&lt;DIV&gt;Carlos&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Message Edited by Lokutas on &lt;/SPAN&gt;&lt;SPAN class="date_text"&gt;2008-07-22&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;09:24 AM&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Message Edited by Lokutas on &lt;/SPAN&gt;&lt;SPAN class="date_text"&gt;2008-07-22&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;09:27 AM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 Jul 2008 15:21:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/QE8-SPI-slave-does-not-transmit-data-to-master/m-p/174841#M12092</guid>
      <dc:creator>Lokutas</dc:creator>
      <dc:date>2008-07-22T15:21:02Z</dc:date>
    </item>
    <item>
      <title>Re: QE8 SPI slave does not transmit data to master</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/QE8-SPI-slave-does-not-transmit-data-to-master/m-p/174842#M12093</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hello Carlos,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Following the master sending the command byte, you will need to wait a sufficient time for the slave ISR to complete, before sending the next dummy byte to interrogate the returned data from the slave.&amp;nbsp; The return byte value needs to already have been written to SPID before SS input again becomes active low for the return byte transfer.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;If this is the problem, the inclusion of a small delay within the master code should help.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Incidently, I have found that &lt;FONT face="Courier New"&gt;switch&lt;/FONT&gt; statements generally require more processing cycles than the equivalent &amp;nbsp;&lt;FONT face="Courier New"&gt;if...else if...else&lt;/FONT&gt;&amp;nbsp; construct.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;There also seems to be a misunderstanding about the values&amp;nbsp;read from and written to the SPID register.&amp;nbsp; You cannot read back the value previously written.&amp;nbsp; The following thread covers similar ground in this respect.&lt;/DIV&gt;&lt;DIV&gt;&lt;A href="http://forums.freescale.com/freescale/board/message?board.id=8BITCOMM&amp;amp;thread.id=11435" target="_blank"&gt;http://forums.freescale.com/freescale/board/message?board.id=8BITCOMM&amp;amp;thread.id=11435&lt;/A&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Regards,&lt;/DIV&gt;&lt;DIV&gt;Mac&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 Jul 2008 17:24:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/QE8-SPI-slave-does-not-transmit-data-to-master/m-p/174842#M12093</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2008-07-22T17:24:44Z</dc:date>
    </item>
    <item>
      <title>Re: QE8 SPI slave does not transmit data to master</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/QE8-SPI-slave-does-not-transmit-data-to-master/m-p/174843#M12094</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi Mac,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks a lot for your help, I added a delay to my master, a dummy delay just to debug and the problem is still there.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void dummy_delay(byte i) {&lt;BR /&gt;&amp;nbsp; byte a,b,c;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; for (a = 0; a &amp;lt; i; a++)&lt;BR /&gt;&amp;nbsp; for (b = 0; b &amp;lt; i; b++)&lt;BR /&gt;&amp;nbsp; for (c = 0; c &amp;lt; i; c++);&lt;BR /&gt;}&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;It seems like the slave is not effectively loading the SPID value I write during the ISR&amp;nbsp;to the SPI TX shift register.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I guess that's why the master allways reads the same command byte it outputs to the slave, even after the master's SPID has been filled with a dummy byte different than the first command byte.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Any one else has a better idea?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I've seen app notes and example code where the SPI slave only receives data doesn't send anything back, could this be all the functionality FSC provides for a SPI slave?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks,&lt;/DIV&gt;&lt;DIV&gt;Carlos&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 Jul 2008 19:55:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/QE8-SPI-slave-does-not-transmit-data-to-master/m-p/174843#M12094</guid>
      <dc:creator>Lokutas</dc:creator>
      <dc:date>2008-07-22T19:55:45Z</dc:date>
    </item>
    <item>
      <title>Re: QE8 SPI slave does not transmit data to master</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/QE8-SPI-slave-does-not-transmit-data-to-master/m-p/174844#M12095</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;I have continued my testing, a key piece of the puzzle should be that the SPIS_SPTEF flag only gets set when the SPI module is enabled in my init sequence and doesn't get set ever again.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Has somebody managed to make an SPI_slave output a byte?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks,&lt;/DIV&gt;&lt;DIV&gt;Carlos&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jul 2008 16:14:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/QE8-SPI-slave-does-not-transmit-data-to-master/m-p/174844#M12095</guid>
      <dc:creator>Lokutas</dc:creator>
      <dc:date>2008-07-23T16:14:47Z</dc:date>
    </item>
    <item>
      <title>Re: QE8 SPI slave does not transmit data to master</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/QE8-SPI-slave-does-not-transmit-data-to-master/m-p/174845#M12096</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;It was a bad solder joint on my connector that spoiled the related Chip Select and also, the fact that a slave with CPHA=0 required the master to again pull high and low the CS for every byte.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;A lesson to me to start with the basics of a thourough read of the datasheet and a complete debug of the HW.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks a lot,&lt;/DIV&gt;&lt;DIV&gt;Carlos&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jul 2008 07:12:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/QE8-SPI-slave-does-not-transmit-data-to-master/m-p/174845#M12096</guid>
      <dc:creator>Lokutas</dc:creator>
      <dc:date>2008-07-24T07:12:08Z</dc:date>
    </item>
  </channel>
</rss>

