<?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: SPI SPIF flag not getting (Read) set in S12XDP512 in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-SPIF-flag-not-getting-Read-set-in-S12XDP512/m-p/273313#M9940</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Few general notes abour SPI module:&lt;/P&gt;&lt;P&gt;We can say that all SPI devices typically work as simply shift register. If clock at SCLK pin is presented, data are transferred. SPI Master produce clock signal. &lt;/P&gt;&lt;P&gt;In fact there are two buffers behind SPIDR register in MCU. When you read SPIDR register, you always read receiver buffer. When you write to SPIDR register, you always write to transmitter buffer. &lt;/P&gt;&lt;P&gt;When MCU is master, write to SPIDR register also start SCLK signal generation.&lt;/P&gt;&lt;P&gt;Settings SPI1BR&amp;nbsp; = 0x00 (=fBUS/2) presents the maximum SCI speed for master mode. In slave mode is maximum communication speed fBUS/4. In fact, in slave mode have value of SPIBR no meaning, because baud rate divider is disabled to decrease IDD current.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is example code for SPI read and SPI send:&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#define SPIReadStatReg() (void)SPI0SR;&amp;nbsp; // Clear Status reg. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#define SPIReadDataReg() (void)SPI0DR;&amp;nbsp; // Clear Data reg.(Dummy read)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#define SPIWaitReceiveDone()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!(SPI0SR_SPIF)); // Wait for full buf&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#define SPIWaitTransferDone()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!(SPI0SR_SPTEF));//Wait for buf empty&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;/*******************************************************************************/&lt;/EM&gt; &lt;/P&gt;&lt;P&gt;&lt;EM&gt;void SPI_send_byte(unsigned char data) &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;{&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; SPIWaitTransferDone();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for buf empty&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; SPIReadStatReg();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read status register (possible SPRF, SPTEF)&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; SPIReadDataReg();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read receive data register. It clears flags &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; SPI0DR = data;&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; // Start transfer - send byte &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; SPIWaitTransferDone();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for transfer complete&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; SPIWaitReceiveDone();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for receive complete &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;/*******************************************************************************/&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;unsigned char SPI_read_byte()&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;{&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; unsigned char value=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // function cannot directly return register value&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; SPIReadStatReg();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read status register (possible SPRF, SPTEF)&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; SPIReadDataReg();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read receive data register. It clears flags&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;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; SPI0DR = 0x00;&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; // Generate clocks for reading 1 byte of data!&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; SPIWaitReceiveDone();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for receive complete&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; value = SPI0DRL;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // read received data and store to result&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; return(value);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 10 Oct 2013 12:02:41 GMT</pubDate>
    <dc:creator>RadekS</dc:creator>
    <dc:date>2013-10-10T12:02:41Z</dc:date>
    <item>
      <title>SPI SPIF flag not getting (Read) set in S12XDP512</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-SPIF-flag-not-getting-Read-set-in-S12XDP512/m-p/273312#M9939</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello All,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to interface an external SRAM from Microchip to S12XDP512 controller. And the interface is through SPI.&lt;/P&gt;&lt;P&gt;I am using SPI 1 of my controller for this purpose. The procedure to access this SRAM is straight forward. But I was not able to read data from the Device.&lt;/P&gt;&lt;P&gt;So I would like to get your help to review if my SPI read and Write are functions are correct. Please find the functions as below&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void SPI1_Initialization(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; //initialize pins, mosi-0, sck/clr/ld/cs - 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SPI_MOSI = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SPI_MISO = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SPI_SCK = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SPI_CS = 1;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SPI1BR = 0x07;//0x05;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Clk rate=bus clock/256&amp;nbsp; , so Clk rate = 8000000/256 = 31250&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SPI1CR1 = 0x54;&amp;nbsp; // enable SPI, Master Mode,CPHA=1,CPOL=0, select clock polarity/phase&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SPI1CR2 = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Normal mode of operation&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;unsigned int SPI_Send(unsigned char Data)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;unsigned int Test0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI_CS = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Test0 = SPI1DR;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while( (unsigned char)(SPI1SR &amp;amp; 0x20) != 0x20); /* Wait SPTEF */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI1DR = Data;&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; //data stored in buffer and waiting for SCK&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI_CS = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return(1);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;unsigned int SPI_Read(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; unsigned int temp_data, max_count, temp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; max_count = 0xffff;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SPI_CS = 0;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp;&amp;nbsp; while( ((unsigned char)(SPI1SR &amp;amp; 0x80) != 0x80) &amp;amp;&amp;amp; (--max_count) ) ; // wait for End of Transmission&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; temp_data = SPI1DR;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SPI_CS = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return temp_data; &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can some one help me with this issue.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Santhosh S L&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Oct 2013 11:29:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-SPIF-flag-not-getting-Read-set-in-S12XDP512/m-p/273312#M9939</guid>
      <dc:creator>santhoshsl</dc:creator>
      <dc:date>2013-10-10T11:29:58Z</dc:date>
    </item>
    <item>
      <title>Re: SPI SPIF flag not getting (Read) set in S12XDP512</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-SPIF-flag-not-getting-Read-set-in-S12XDP512/m-p/273313#M9940</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Few general notes abour SPI module:&lt;/P&gt;&lt;P&gt;We can say that all SPI devices typically work as simply shift register. If clock at SCLK pin is presented, data are transferred. SPI Master produce clock signal. &lt;/P&gt;&lt;P&gt;In fact there are two buffers behind SPIDR register in MCU. When you read SPIDR register, you always read receiver buffer. When you write to SPIDR register, you always write to transmitter buffer. &lt;/P&gt;&lt;P&gt;When MCU is master, write to SPIDR register also start SCLK signal generation.&lt;/P&gt;&lt;P&gt;Settings SPI1BR&amp;nbsp; = 0x00 (=fBUS/2) presents the maximum SCI speed for master mode. In slave mode is maximum communication speed fBUS/4. In fact, in slave mode have value of SPIBR no meaning, because baud rate divider is disabled to decrease IDD current.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is example code for SPI read and SPI send:&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#define SPIReadStatReg() (void)SPI0SR;&amp;nbsp; // Clear Status reg. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#define SPIReadDataReg() (void)SPI0DR;&amp;nbsp; // Clear Data reg.(Dummy read)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#define SPIWaitReceiveDone()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!(SPI0SR_SPIF)); // Wait for full buf&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;#define SPIWaitTransferDone()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!(SPI0SR_SPTEF));//Wait for buf empty&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;/*******************************************************************************/&lt;/EM&gt; &lt;/P&gt;&lt;P&gt;&lt;EM&gt;void SPI_send_byte(unsigned char data) &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;{&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; SPIWaitTransferDone();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for buf empty&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; SPIReadStatReg();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read status register (possible SPRF, SPTEF)&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; SPIReadDataReg();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read receive data register. It clears flags &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; SPI0DR = data;&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; // Start transfer - send byte &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; SPIWaitTransferDone();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for transfer complete&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp; SPIWaitReceiveDone();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for receive complete &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;/*******************************************************************************/&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;unsigned char SPI_read_byte()&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;{&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; unsigned char value=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // function cannot directly return register value&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; SPIReadStatReg();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read status register (possible SPRF, SPTEF)&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; SPIReadDataReg();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read receive data register. It clears flags&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;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; SPI0DR = 0x00;&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; // Generate clocks for reading 1 byte of data!&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; SPIWaitReceiveDone();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for receive complete&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; value = SPI0DRL;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // read received data and store to result&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; return(value);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Oct 2013 12:02:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-SPIF-flag-not-getting-Read-set-in-S12XDP512/m-p/273313#M9940</guid>
      <dc:creator>RadekS</dc:creator>
      <dc:date>2013-10-10T12:02:41Z</dc:date>
    </item>
    <item>
      <title>Re: SPI SPIF flag not getting (Read) set in S12XDP512</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-SPIF-flag-not-getting-Read-set-in-S12XDP512/m-p/273314#M9941</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Radek,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your inputs. And infact I implemented my handlers in similar way.&lt;/P&gt;&lt;P&gt;But I am seeing some issues in seeing inconsistent behaviour with SPTEF and SPIF flags.&lt;/P&gt;&lt;P&gt;I feel, once the data is written in to the SPDR, SPTEF flag should be 0 for a while and then go back to 1. But in my debugging I could see that SPTEF flag being 1 always.&lt;/P&gt;&lt;P&gt;Similarly, when I send out a dummy data to initiate clock to read data from other device, I am&amp;nbsp; seeing SPIF going high when SPDR is loaded with value. But in the next line when i check for the SPIF flag like (while((SPI1SR&amp;amp; 0x80) != 0x80)), SPIF is going back to 0 and hence code getting stuck at this point.&lt;/P&gt;&lt;P&gt;I am not sure why this SPIF bit is being transient and I am not able to capture it with a logic operation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also when I try to initiate sck by writing dummy value on to the SPDR sometimes I am not seeing SCK on CRO. I am not sure why this SPI is being so inconsistent.&lt;/P&gt;&lt;P&gt;Can you please help me to resolve this issue.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 Oct 2013 11:25:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/SPI-SPIF-flag-not-getting-Read-set-in-S12XDP512/m-p/273314#M9941</guid>
      <dc:creator>santhoshsl</dc:creator>
      <dc:date>2013-10-11T11:25:34Z</dc:date>
    </item>
  </channel>
</rss>

