<?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 Kinetis Controller Not Replying Properly in SPI Slave Mode in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-Controller-Not-Replying-Properly-in-SPI-Slave-Mode/m-p/617805#M36855</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I am using K20 series controller. In slave mode the controller keeps sending the first value that has been pushed through PUSHR_SLAVE. It never updates.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The slave is receiving data correctly which can be seen through the oscilloscope. The settings CPHA and CPOL also match in slave and master&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Images of Oscilloscope&lt;/P&gt;&lt;P&gt;1. Yellow (Clk)&lt;/P&gt;&lt;P&gt;2. Blue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(Slave Out)&lt;/P&gt;&lt;P&gt;3. Purple (Master Out)&lt;/P&gt;&lt;P&gt;4. Green (Chip Select)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="DS0001.PNG"&gt;&lt;IMG alt="DS0001.PNG" src="https://community.nxp.com/t5/image/serverpage/image-id/12088i6DB2FD506BD28BA8/image-size/large?v=v2&amp;amp;px=999" title="DS0001.PNG" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="DS0002.PNG"&gt;&lt;IMG alt="DS0002.PNG" src="https://community.nxp.com/t5/image/serverpage/image-id/12129i85B971D1E4AF9ED9/image-size/large?v=v2&amp;amp;px=999" title="DS0002.PNG" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Slave Code is as follows&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;SLAVE:&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;// Initialization
void SPI1_Init(void)
{
 /* SIM_SCGC6: DSPI1=1 */
 SIM_SCGC6 |= SIM_SCGC6_DSPI1_MASK;
 /* SPI1_MCR: MSTR=0,CONT_SCKE=0,DCONF=0,FRZ=0,MTFE=0,PCSSE=0,ROOE=0,??=0,??=0,PCSIS=0,DOZE=0,MDIS=0,DIS_TXF=0,DIS_RXF=0,CLR_TXF=0,CLR_RXF=0,SMPL_PT=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,HALT=1 */
 SPI1_MCR = SPI_MCR_DCONF(0x00) |
 SPI_MCR_PCSIS(0x00) |
 SPI_MCR_SMPL_PT(0x00) |
 SPI_MCR_HALT_MASK;
 /* SPI1_MCR: MSTR=0,CONT_SCKE=0,DCONF=0,FRZ=0,MTFE=0,PCSSE=0,ROOE=0,??=0,??=0,PCSIS=0x0F,DOZE=0,MDIS=0,DIS_TXF=1,DIS_RXF=1,CLR_TXF=1,CLR_RXF=1,SMPL_PT=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,HALT=1 */
 SPI1_MCR = SPI_MCR_DCONF(0x00) |
 SPI_MCR_PCSIS(0x0F) |
 SPI_MCR_DIS_TXF_MASK |
 SPI_MCR_DIS_RXF_MASK |
 SPI_MCR_CLR_TXF_MASK |
 SPI_MCR_CLR_RXF_MASK |
 SPI_MCR_SMPL_PT(0x00) |
 SPI_MCR_HALT_MASK;
 /* SPI1_TCR: SPI_TCNT=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0 */
 SPI1_TCR = SPI_TCR_SPI_TCNT(0x00);
 /* SPI1_CTAR1: DBR=0,FMSZ=0x0F,CPOL=0,CPHA=0,LSBFE=0,PCSSCK=0,PASC=0,PDT=0,PBR=0,CSSCK=0,ASC=0,DT=0,BR=0 */
 SPI1_CTAR1 = SPI_CTAR_FMSZ(0x0F) |
 SPI_CTAR_PCSSCK(0x00) |
 SPI_CTAR_PASC(0x00) |
 SPI_CTAR_PDT(0x00) |
 SPI_CTAR_PBR(0x00) |
 SPI_CTAR_CSSCK(0x00) |
 SPI_CTAR_ASC(0x00) |
 SPI_CTAR_DT(0x00) |
 SPI_CTAR_BR(0x00);
 /* SPI1_CTAR0_SLAVE: FMSZ=7,CPOL=0,CPHA=0 */
 SPI1_CTAR0_SLAVE = (uint32_t)((SPI1_CTAR0_SLAVE &amp;amp; (uint32_t)~(uint32_t)(
 SPI_CTAR_SLAVE_FMSZ(0x18) |
 SPI_CTAR_SLAVE_CPOL_MASK |
 SPI_CTAR_SLAVE_CPHA_MASK
 )) | (uint32_t)(
 SPI_CTAR_SLAVE_FMSZ(0x07)
 ));
 /* SPI1_SR: TCF=1,TXRXS=1,??=0,EOQF=1,TFUF=1,??=0,TFFF=1,??=0,??=0,??=0,??=0,??=0,RFOF=1,??=0,RFDF=1,??=0,TXCTR=0,TXNXTPTR=0,RXCTR=0,POPNXTPTR=0 */
 SPI1_SR = SPI_SR_TCF_MASK |
 SPI_SR_TXRXS_MASK |
 SPI_SR_EOQF_MASK |
 SPI_SR_TFUF_MASK |
 SPI_SR_TFFF_MASK |
 SPI_SR_RFOF_MASK |
 SPI_SR_RFDF_MASK |
 SPI_SR_TXCTR(0x00) |
 SPI_SR_TXNXTPTR(0x00) |
 SPI_SR_RXCTR(0x00) |
 SPI_SR_POPNXTPTR(0x00);
 /* SPI1_RSER: TCF_RE=0,??=0,??=0,EOQF_RE=0,TFUF_RE=0,??=0,TFFF_RE=0,TFFF_DIRS=0,??=0,??=0,??=0,??=0,RFOF_RE=0,??=0,RFDF_RE=1,RFDF_DIRS=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0 */
 SPI1_RSER = SPI_RSER_RFDF_RE_MASK;
 /* SPI1_MCR: HALT=0 */
 SPI1_MCR &amp;amp;= (uint32_t)~(uint32_t)(SPI_MCR_HALT_MASK);
}


// Service Routine
PE_ISR(INT_SPI1_HANDLER)
{
 &amp;nbsp;&amp;nbsp;&amp;nbsp;uint32_t receivedValue = SPI1_POPR;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t valueToSend = 0;

&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI1_SR = SPI_SR_RFDF_MASK | SPI_SR_TCF_MASK;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;if(receivedValue == 0x81)
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;valueToSend = 0xF0;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;else
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;valueToSend = 0x0F;
&amp;nbsp;&amp;nbsp;&amp;nbsp;while((SPI1_SR &amp;amp; SPI_SR_TFFF_MASK)==0);
&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI1_PUSHR_SLAVE = valueToSend;
}&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 02 Nov 2020 13:52:26 GMT</pubDate>
    <dc:creator>waqasbutt</dc:creator>
    <dc:date>2020-11-02T13:52:26Z</dc:date>
    <item>
      <title>Kinetis Controller Not Replying Properly in SPI Slave Mode</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-Controller-Not-Replying-Properly-in-SPI-Slave-Mode/m-p/617805#M36855</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I am using K20 series controller. In slave mode the controller keeps sending the first value that has been pushed through PUSHR_SLAVE. It never updates.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The slave is receiving data correctly which can be seen through the oscilloscope. The settings CPHA and CPOL also match in slave and master&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Images of Oscilloscope&lt;/P&gt;&lt;P&gt;1. Yellow (Clk)&lt;/P&gt;&lt;P&gt;2. Blue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(Slave Out)&lt;/P&gt;&lt;P&gt;3. Purple (Master Out)&lt;/P&gt;&lt;P&gt;4. Green (Chip Select)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="DS0001.PNG"&gt;&lt;IMG alt="DS0001.PNG" src="https://community.nxp.com/t5/image/serverpage/image-id/12088i6DB2FD506BD28BA8/image-size/large?v=v2&amp;amp;px=999" title="DS0001.PNG" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="DS0002.PNG"&gt;&lt;IMG alt="DS0002.PNG" src="https://community.nxp.com/t5/image/serverpage/image-id/12129i85B971D1E4AF9ED9/image-size/large?v=v2&amp;amp;px=999" title="DS0002.PNG" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Slave Code is as follows&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;SLAVE:&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;// Initialization
void SPI1_Init(void)
{
 /* SIM_SCGC6: DSPI1=1 */
 SIM_SCGC6 |= SIM_SCGC6_DSPI1_MASK;
 /* SPI1_MCR: MSTR=0,CONT_SCKE=0,DCONF=0,FRZ=0,MTFE=0,PCSSE=0,ROOE=0,??=0,??=0,PCSIS=0,DOZE=0,MDIS=0,DIS_TXF=0,DIS_RXF=0,CLR_TXF=0,CLR_RXF=0,SMPL_PT=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,HALT=1 */
 SPI1_MCR = SPI_MCR_DCONF(0x00) |
 SPI_MCR_PCSIS(0x00) |
 SPI_MCR_SMPL_PT(0x00) |
 SPI_MCR_HALT_MASK;
 /* SPI1_MCR: MSTR=0,CONT_SCKE=0,DCONF=0,FRZ=0,MTFE=0,PCSSE=0,ROOE=0,??=0,??=0,PCSIS=0x0F,DOZE=0,MDIS=0,DIS_TXF=1,DIS_RXF=1,CLR_TXF=1,CLR_RXF=1,SMPL_PT=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,HALT=1 */
 SPI1_MCR = SPI_MCR_DCONF(0x00) |
 SPI_MCR_PCSIS(0x0F) |
 SPI_MCR_DIS_TXF_MASK |
 SPI_MCR_DIS_RXF_MASK |
 SPI_MCR_CLR_TXF_MASK |
 SPI_MCR_CLR_RXF_MASK |
 SPI_MCR_SMPL_PT(0x00) |
 SPI_MCR_HALT_MASK;
 /* SPI1_TCR: SPI_TCNT=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0 */
 SPI1_TCR = SPI_TCR_SPI_TCNT(0x00);
 /* SPI1_CTAR1: DBR=0,FMSZ=0x0F,CPOL=0,CPHA=0,LSBFE=0,PCSSCK=0,PASC=0,PDT=0,PBR=0,CSSCK=0,ASC=0,DT=0,BR=0 */
 SPI1_CTAR1 = SPI_CTAR_FMSZ(0x0F) |
 SPI_CTAR_PCSSCK(0x00) |
 SPI_CTAR_PASC(0x00) |
 SPI_CTAR_PDT(0x00) |
 SPI_CTAR_PBR(0x00) |
 SPI_CTAR_CSSCK(0x00) |
 SPI_CTAR_ASC(0x00) |
 SPI_CTAR_DT(0x00) |
 SPI_CTAR_BR(0x00);
 /* SPI1_CTAR0_SLAVE: FMSZ=7,CPOL=0,CPHA=0 */
 SPI1_CTAR0_SLAVE = (uint32_t)((SPI1_CTAR0_SLAVE &amp;amp; (uint32_t)~(uint32_t)(
 SPI_CTAR_SLAVE_FMSZ(0x18) |
 SPI_CTAR_SLAVE_CPOL_MASK |
 SPI_CTAR_SLAVE_CPHA_MASK
 )) | (uint32_t)(
 SPI_CTAR_SLAVE_FMSZ(0x07)
 ));
 /* SPI1_SR: TCF=1,TXRXS=1,??=0,EOQF=1,TFUF=1,??=0,TFFF=1,??=0,??=0,??=0,??=0,??=0,RFOF=1,??=0,RFDF=1,??=0,TXCTR=0,TXNXTPTR=0,RXCTR=0,POPNXTPTR=0 */
 SPI1_SR = SPI_SR_TCF_MASK |
 SPI_SR_TXRXS_MASK |
 SPI_SR_EOQF_MASK |
 SPI_SR_TFUF_MASK |
 SPI_SR_TFFF_MASK |
 SPI_SR_RFOF_MASK |
 SPI_SR_RFDF_MASK |
 SPI_SR_TXCTR(0x00) |
 SPI_SR_TXNXTPTR(0x00) |
 SPI_SR_RXCTR(0x00) |
 SPI_SR_POPNXTPTR(0x00);
 /* SPI1_RSER: TCF_RE=0,??=0,??=0,EOQF_RE=0,TFUF_RE=0,??=0,TFFF_RE=0,TFFF_DIRS=0,??=0,??=0,??=0,??=0,RFOF_RE=0,??=0,RFDF_RE=1,RFDF_DIRS=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0 */
 SPI1_RSER = SPI_RSER_RFDF_RE_MASK;
 /* SPI1_MCR: HALT=0 */
 SPI1_MCR &amp;amp;= (uint32_t)~(uint32_t)(SPI_MCR_HALT_MASK);
}


// Service Routine
PE_ISR(INT_SPI1_HANDLER)
{
 &amp;nbsp;&amp;nbsp;&amp;nbsp;uint32_t receivedValue = SPI1_POPR;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t valueToSend = 0;

&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI1_SR = SPI_SR_RFDF_MASK | SPI_SR_TCF_MASK;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;if(receivedValue == 0x81)
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;valueToSend = 0xF0;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;else
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;valueToSend = 0x0F;
&amp;nbsp;&amp;nbsp;&amp;nbsp;while((SPI1_SR &amp;amp; SPI_SR_TFFF_MASK)==0);
&amp;nbsp;&amp;nbsp;&amp;nbsp;SPI1_PUSHR_SLAVE = valueToSend;
}&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Nov 2020 13:52:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-Controller-Not-Replying-Properly-in-SPI-Slave-Mode/m-p/617805#M36855</guid>
      <dc:creator>waqasbutt</dc:creator>
      <dc:date>2020-11-02T13:52:26Z</dc:date>
    </item>
    <item>
      <title>Re: Kinetis Controller Not Replying Properly in SPI Slave Mode</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-Controller-Not-Replying-Properly-in-SPI-Slave-Mode/m-p/617806#M36856</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Problem solved.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It was a hardware problem. cs pin was not correctly attached&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Dec 2016 11:42:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-Controller-Not-Replying-Properly-in-SPI-Slave-Mode/m-p/617806#M36856</guid>
      <dc:creator>waqasbutt</dc:creator>
      <dc:date>2016-12-16T11:42:48Z</dc:date>
    </item>
  </channel>
</rss>

