<?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のトピックQSPI single transfer setup (MFC5272)</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-single-transfer-setup-MFC5272/m-p/249546#M11552</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm trying to receive an 8 bit value from a tlv0831 (datasheet here: &lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.ti.com%2Flit%2Fds%2Fsymlink%2Ftlv0831.pdf" rel="nofollow noopener noreferrer" target="_blank"&gt;http://www.ti.com/lit/ds/symlink/tlv0831.pdf&lt;/A&gt;) and the value that I keep receiving goes back and forth between 63 and 191. I believe I'm reading the datasheet correctly in that I just need to send the A/D a dummy value (0x00) and I will get back only the most significant byte.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class="c++" name="code"&gt;uint8 GetBatteryLevel( void ) { &amp;nbsp; //uint8 battery_level; &amp;nbsp; vuint16 test;&amp;nbsp; &amp;nbsp; //SPI Chip Select MUX control pins &amp;nbsp; MCF5272_GPIO_PBDAT = MCF5272_GPIO_PBDAT &amp;nbsp; &amp;amp; ~MCF5272_GPIO_PB9_SPICS_CTRL0 &amp;nbsp; &amp;amp; ~MCF5272_GPIO_PB12_SPI_CS_CTRL1;&amp;nbsp; &amp;nbsp; /* Set up QMR mode register */ &amp;nbsp; MCF5272_QSPI_QMR = 0 &amp;nbsp; | MCF5272_QSPI_QMR_MSTR /* Master Mode Enable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &amp;nbsp; | MCF5272_QSPI_QMR_DOHIE /* High Impedance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &amp;nbsp; | MCF5272_QSPI_QMR_BITS(8) /* 8 bits transfer size&amp;nbsp; */ &amp;nbsp; | MCF5272_QSPI_QMR_CPOL /* Inactive state logic 0 */ &amp;nbsp; | MCF5272_QSPI_QMR_CPHA /* Captured '0' */ &amp;nbsp; | MCF5272_QSPI_QMR_BAUD(250); /* 250k Baud rate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &amp;nbsp; /* Set up QDLYR delay register&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &amp;nbsp; MCF5272_QSPI_QDLYR = 0x0D01;&amp;nbsp; &amp;nbsp; /* Set up QIR interrupt register - Clear all Interrupts */ &amp;nbsp; MCF5272_QSPI_QIR = 0xD00D;&amp;nbsp; &amp;nbsp; /* QAR address register - Command RAM 0x20 */ &amp;nbsp; MCF5272_QSPI_QAR = 0x0020;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* Set up QDR data register - CS3 */ &amp;nbsp; //SPI Chip Select MUX enable &amp;nbsp; MCF5272_GPIO_PADAT = MCF5272_GPIO_PADAT &amp;nbsp; &amp;amp; ~MCF5272_GPIO_PA7_QSPI_CS_MUX_CTRLER;&amp;nbsp; &amp;nbsp; /* Set up QWR wrap register */ &amp;nbsp; MCF5272_QSPI_QWR = 0 | MCF5272_QSPI_QWR_CSIV;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* Select first transmit RAM entry */ &amp;nbsp; MCF5272_QSPI_QAR = 0x0000;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* Transmit - Read 1 word */ &amp;nbsp; MCF5272_QSPI_QDR = 0x00;&amp;nbsp; &amp;nbsp; /* Set up a queue beginning at entry 0 */ &amp;nbsp; MCF5272_QSPI_QWR = MCF5272_QSPI_QWR | 0x0800;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* Enable QSPI module&amp;nbsp; */ &amp;nbsp; MCF5272_QSPI_QDLYR = MCF5272_QSPI_QDLYR | 0x8000;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* Wait to finish transfer */ &amp;nbsp; while((MCF5272_QSPI_QIR &amp;amp; 0x0001) == 0) ;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* Select the first receive RAM entry */ &amp;nbsp; MCF5272_QSPI_QAR = 0x0010;&amp;nbsp; &amp;nbsp; /* Read from first receive RAM entry */ &amp;nbsp; test = (MCF5272_QSPI_QDR &amp;amp; 0x00FF);&amp;nbsp; &amp;nbsp; /* Disable QSPI module&amp;nbsp; */ &amp;nbsp; MCF5272_QSPI_QDLYR = 0 &amp;nbsp; | MCF5272_QSPI_QDLYR &amp;nbsp; &amp;amp; 0x7FFF;&amp;nbsp; &amp;nbsp; //SPI Chip Select MUX disable &amp;nbsp; MCF5272_GPIO_PADAT = MCF5272_GPIO_PADAT &amp;nbsp; | MCF5272_GPIO_PA7_QSPI_CS_MUX_CTRLER;&amp;nbsp; &amp;nbsp; //SPI Chip Select MUX control pins reset &amp;nbsp; MCF5272_GPIO_PBDAT = MCF5272_GPIO_PBDAT &amp;nbsp; | MCF5272_GPIO_PB9_SPICS_CTRL0 &amp;nbsp; | MCF5272_GPIO_PB12_SPI_CS_CTRL1;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; return (uint8)test; }&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 21 May 2013 15:17:27 GMT</pubDate>
    <dc:creator>louis_springbok</dc:creator>
    <dc:date>2013-05-21T15:17:27Z</dc:date>
    <item>
      <title>QSPI single transfer setup (MFC5272)</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-single-transfer-setup-MFC5272/m-p/249546#M11552</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm trying to receive an 8 bit value from a tlv0831 (datasheet here: &lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.ti.com%2Flit%2Fds%2Fsymlink%2Ftlv0831.pdf" rel="nofollow noopener noreferrer" target="_blank"&gt;http://www.ti.com/lit/ds/symlink/tlv0831.pdf&lt;/A&gt;) and the value that I keep receiving goes back and forth between 63 and 191. I believe I'm reading the datasheet correctly in that I just need to send the A/D a dummy value (0x00) and I will get back only the most significant byte.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class="c++" name="code"&gt;uint8 GetBatteryLevel( void ) { &amp;nbsp; //uint8 battery_level; &amp;nbsp; vuint16 test;&amp;nbsp; &amp;nbsp; //SPI Chip Select MUX control pins &amp;nbsp; MCF5272_GPIO_PBDAT = MCF5272_GPIO_PBDAT &amp;nbsp; &amp;amp; ~MCF5272_GPIO_PB9_SPICS_CTRL0 &amp;nbsp; &amp;amp; ~MCF5272_GPIO_PB12_SPI_CS_CTRL1;&amp;nbsp; &amp;nbsp; /* Set up QMR mode register */ &amp;nbsp; MCF5272_QSPI_QMR = 0 &amp;nbsp; | MCF5272_QSPI_QMR_MSTR /* Master Mode Enable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &amp;nbsp; | MCF5272_QSPI_QMR_DOHIE /* High Impedance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &amp;nbsp; | MCF5272_QSPI_QMR_BITS(8) /* 8 bits transfer size&amp;nbsp; */ &amp;nbsp; | MCF5272_QSPI_QMR_CPOL /* Inactive state logic 0 */ &amp;nbsp; | MCF5272_QSPI_QMR_CPHA /* Captured '0' */ &amp;nbsp; | MCF5272_QSPI_QMR_BAUD(250); /* 250k Baud rate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &amp;nbsp; /* Set up QDLYR delay register&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &amp;nbsp; MCF5272_QSPI_QDLYR = 0x0D01;&amp;nbsp; &amp;nbsp; /* Set up QIR interrupt register - Clear all Interrupts */ &amp;nbsp; MCF5272_QSPI_QIR = 0xD00D;&amp;nbsp; &amp;nbsp; /* QAR address register - Command RAM 0x20 */ &amp;nbsp; MCF5272_QSPI_QAR = 0x0020;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* Set up QDR data register - CS3 */ &amp;nbsp; //SPI Chip Select MUX enable &amp;nbsp; MCF5272_GPIO_PADAT = MCF5272_GPIO_PADAT &amp;nbsp; &amp;amp; ~MCF5272_GPIO_PA7_QSPI_CS_MUX_CTRLER;&amp;nbsp; &amp;nbsp; /* Set up QWR wrap register */ &amp;nbsp; MCF5272_QSPI_QWR = 0 | MCF5272_QSPI_QWR_CSIV;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* Select first transmit RAM entry */ &amp;nbsp; MCF5272_QSPI_QAR = 0x0000;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* Transmit - Read 1 word */ &amp;nbsp; MCF5272_QSPI_QDR = 0x00;&amp;nbsp; &amp;nbsp; /* Set up a queue beginning at entry 0 */ &amp;nbsp; MCF5272_QSPI_QWR = MCF5272_QSPI_QWR | 0x0800;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* Enable QSPI module&amp;nbsp; */ &amp;nbsp; MCF5272_QSPI_QDLYR = MCF5272_QSPI_QDLYR | 0x8000;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* Wait to finish transfer */ &amp;nbsp; while((MCF5272_QSPI_QIR &amp;amp; 0x0001) == 0) ;&amp;nbsp;&amp;nbsp; &amp;nbsp; /* Select the first receive RAM entry */ &amp;nbsp; MCF5272_QSPI_QAR = 0x0010;&amp;nbsp; &amp;nbsp; /* Read from first receive RAM entry */ &amp;nbsp; test = (MCF5272_QSPI_QDR &amp;amp; 0x00FF);&amp;nbsp; &amp;nbsp; /* Disable QSPI module&amp;nbsp; */ &amp;nbsp; MCF5272_QSPI_QDLYR = 0 &amp;nbsp; | MCF5272_QSPI_QDLYR &amp;nbsp; &amp;amp; 0x7FFF;&amp;nbsp; &amp;nbsp; //SPI Chip Select MUX disable &amp;nbsp; MCF5272_GPIO_PADAT = MCF5272_GPIO_PADAT &amp;nbsp; | MCF5272_GPIO_PA7_QSPI_CS_MUX_CTRLER;&amp;nbsp; &amp;nbsp; //SPI Chip Select MUX control pins reset &amp;nbsp; MCF5272_GPIO_PBDAT = MCF5272_GPIO_PBDAT &amp;nbsp; | MCF5272_GPIO_PB9_SPICS_CTRL0 &amp;nbsp; | MCF5272_GPIO_PB12_SPI_CS_CTRL1;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; return (uint8)test; }&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 21 May 2013 15:17:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-single-transfer-setup-MFC5272/m-p/249546#M11552</guid>
      <dc:creator>louis_springbok</dc:creator>
      <dc:date>2013-05-21T15:17:27Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI single transfer setup (MFC5272)</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-single-transfer-setup-MFC5272/m-p/249547#M11553</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Easy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ADCs need time to convert. The more complicated ones need to be commanded to perform a conversion on one SPI sequence with the data to be read back on the next one. You're lucky with this chip as it returns the data in one SPI cycle. But it still needs time to work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a closer look at the "Sequence of Operations" on Page 4 of the TI data sheet.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The bit numbers go from 1 to TEN, not 1 to eight.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So change your code to "MCF5272_QSPI_QMR_BITS(10&lt;SPAN class="number"&gt;)".&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="number"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="number"&gt;Check CPHA as well. I'm pretty sure it is correct, but compare the QSPI and TI timing diagrams.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="number"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="number"&gt;If this answers your question, please mark it "Answered".&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="number"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="number"&gt;Tom&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="number"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 21 May 2013 23:31:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-single-transfer-setup-MFC5272/m-p/249547#M11553</guid>
      <dc:creator>TomE</dc:creator>
      <dc:date>2013-05-21T23:31:02Z</dc:date>
    </item>
    <item>
      <title>Re: QSPI single transfer setup (MFC5272)</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-single-transfer-setup-MFC5272/m-p/249548#M11554</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you very much Tom. The problem was making &lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;"MCF5272_QSPI_QMR_BITS(10&lt;/SPAN&gt;&lt;SPAN class="number" style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;)"&lt;/SPAN&gt; and the CPHA was correct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Louis&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 22 May 2013 14:52:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/QSPI-single-transfer-setup-MFC5272/m-p/249548#M11554</guid>
      <dc:creator>louis_springbok</dc:creator>
      <dc:date>2013-05-22T14:52:36Z</dc:date>
    </item>
  </channel>
</rss>

