<?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: How to program SPI on LPC54018 with another different board? in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1187941#M43010</link>
    <description>&lt;P&gt;///////&lt;/P&gt;</description>
    <pubDate>Fri, 18 Jun 2021 00:40:10 GMT</pubDate>
    <dc:creator>mohd_</dc:creator>
    <dc:date>2021-06-18T00:40:10Z</dc:date>
    <item>
      <title>SPI on LPC54018</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1184886#M42907</link>
      <description>&lt;P&gt;Hi, does anyone know how to program SPI using LPC54018 as the master and MCP795 as the slave?&lt;/P&gt;&lt;P&gt;I tried with the demo codes from SDK but I dont understand well.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you in advanced.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Dec 2020 23:42:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1184886#M42907</guid>
      <dc:creator>mohd_</dc:creator>
      <dc:date>2020-12-22T23:42:22Z</dc:date>
    </item>
    <item>
      <title>Re: How to program SPI on LPC54018 with another different board?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1185054#M42916</link>
      <description>&lt;P&gt;Hi, Ahmad,&lt;/P&gt;
&lt;P&gt;First of all, I think it is okay to use SPI module as master to read/write the MCP795xx.&lt;/P&gt;
&lt;P&gt;This is connection:&lt;/P&gt;
&lt;P&gt;LPC54018&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; MCP795xx:&lt;/P&gt;
&lt;P&gt;SSELx&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&lt;/P&gt;
&lt;P&gt;SCK&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; SCK&lt;/P&gt;
&lt;P&gt;MOSI&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; SI&lt;/P&gt;
&lt;P&gt;MISO&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; SO&lt;/P&gt;
&lt;P&gt;Regarding the SPI configuration:&lt;/P&gt;
&lt;P&gt;configure the CPOL=0 and CPHA=0.&lt;/P&gt;
&lt;P&gt;As you have seen that the SPI transfers 24 bits for each transmission. I suggest you refer to the spi_interrupt example code, but you have to rewrite the code especially the function:&lt;/P&gt;
&lt;P&gt;void SPI_WriteData(SPI_Type *base, uint16_t data, uint32_t configFlags)&lt;BR /&gt;{&lt;BR /&gt;uint32_t control = 0U;&lt;BR /&gt;uint32_t instance;&lt;/P&gt;
&lt;P&gt;/* check params */&lt;BR /&gt;assert(NULL != base);&lt;BR /&gt;/* get and check instance */&lt;BR /&gt;instance = SPI_GetInstance(base);&lt;/P&gt;
&lt;P&gt;/* set data width */&lt;BR /&gt;control |= (uint32_t)SPI_FIFOWR_LEN((g_configs[instance].dataWidth));&lt;BR /&gt;/* set sssel */&lt;BR /&gt;control |= (SPI_DEASSERT_ALL &amp;amp; (~SPI_DEASSERTNUM_SSEL((uint32_t)(g_configs[instance].sselNum))));&lt;BR /&gt;/* mask configFlags */&lt;BR /&gt;control |= (configFlags &amp;amp; (uint32_t)SPI_FIFOWR_FLAGS_MASK);&lt;BR /&gt;/* control should not affect lower 16 bits */&lt;BR /&gt;assert(0U == (control &amp;amp; 0xFFFFU));&lt;BR /&gt;base-&amp;gt;FIFOWR = data | control;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;so that you can use Byte transfer, keep the /CS is low during the first 2 byte transfer, then write the third byte by setting the EOT bit in the control half word.&lt;/P&gt;
&lt;P&gt;Hope it can help you&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiangJun rong&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 18 Nov 2020 08:38:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1185054#M42916</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2020-11-18T08:38:33Z</dc:date>
    </item>
    <item>
      <title>Re: SPI on LPC54018</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1187860#M43002</link>
      <description>&lt;P&gt;///////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 09 Jul 2021 06:18:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1187860#M43002</guid>
      <dc:creator>mohd_</dc:creator>
      <dc:date>2021-07-09T06:18:08Z</dc:date>
    </item>
    <item>
      <title>Re: How to program SPI on LPC54018 with another different board?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1187932#M43008</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Hi, Syamil,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This is the mechanism of the spi code, the SPI_MasterInit() initializes the SPI module, and enable interrupt, after the initialization, the SPI transmit register is empty, which trigger an SPI interrupt, the &lt;/SPAN&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; SPI_MASTER_IRQHandler(&lt;STRONG&gt;void&lt;/STRONG&gt;) is the ISR of SPI.&lt;/P&gt;
&lt;P&gt;As you can see that the SPI_WriteData() is called in the ISR SPI_MASTER_IRQHandler(&lt;STRONG&gt;void&lt;/STRONG&gt;). That is why I suggest you modify the &lt;SPAN&gt;void SPI_WriteData(SPI_Type *base, uint16_t data, uint32_t configFlags).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Hope it can help you&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;BR&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;XiangJun Rong&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; SPI_MASTER_IRQHandler(&lt;STRONG&gt;void&lt;/STRONG&gt;)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* read data to avoid rxOverflow */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;while&lt;/STRONG&gt; (SPI_GetStatusFlags(EXAMPLE_SPI_MASTER) &amp;amp; &lt;EM&gt;kSPI_RxNotEmptyFlag&lt;/EM&gt;)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI_ReadData(EXAMPLE_SPI_MASTER);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* send data if buffer is not full */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (SPI_GetStatusFlags(EXAMPLE_SPI_MASTER) &amp;amp; &lt;EM&gt;kSPI_TxNotFullFlag&lt;/EM&gt;)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (masterIndex == 1)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; /* need to disable interrupts before write last data */&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; SPI_DisableInterrupts(EXAMPLE_SPI_MASTER, &lt;EM&gt;kSPI_TxLvlIrq&lt;/EM&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; SPI_WriteData(EXAMPLE_SPI_MASTER, (uint16_t)(srcBuff[BUFFER_SIZE - masterIndex]), &lt;EM&gt;kSPI_FrameAssert&lt;/EM&gt;);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;else&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; SPI_WriteData(EXAMPLE_SPI_MASTER, (uint16_t)(srcBuff[BUFFER_SIZE - masterIndex]), 0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;masterIndex--;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; (masterIndex == 0U)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; masterFinished = true;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Add for ARM &lt;U&gt;errata&lt;/U&gt; 838869, affects &lt;U&gt;Cortex&lt;/U&gt;-M4, &lt;U&gt;Cortex&lt;/U&gt;-M4F Store immediate overlapping&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exception return operation might vector to incorrect interrupt */&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;#if&lt;/STRONG&gt; defined __CORTEX_M &amp;amp;&amp;amp; (__CORTEX_M == 4U)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __DSB();&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;#endif&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;void SPI_WriteData(SPI_Type *base, uint16_t data, uint32_t configFlags)&lt;BR /&gt;{&lt;BR /&gt;uint32_t control = 0U;&lt;BR /&gt;uint32_t instance;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;/* check params */&lt;BR /&gt;assert(NULL != base);&lt;BR /&gt;/* get and check instance */&lt;BR /&gt;instance = SPI_GetInstance(base);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;/* set data width */&lt;BR /&gt;control |= (uint32_t)SPI_FIFOWR_LEN((g_configs[instance].dataWidth));&lt;BR /&gt;/* set sssel */&lt;BR /&gt;control |= (SPI_DEASSERT_ALL &amp;amp; (~SPI_DEASSERTNUM_SSEL((uint32_t)(g_configs[instance].sselNum))));&lt;BR /&gt;/* mask configFlags */&lt;BR /&gt;control |= (configFlags &amp;amp; (uint32_t)SPI_FIFOWR_FLAGS_MASK);&lt;BR /&gt;/* control should not affect lower 16 bits */&lt;BR /&gt;assert(0U == (control &amp;amp; 0xFFFFU));&lt;BR /&gt;base-&amp;gt;FIFOWR = data | control;&lt;BR /&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 24 Nov 2020 06:57:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1187932#M43008</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2020-11-24T06:57:06Z</dc:date>
    </item>
    <item>
      <title>Re: How to program SPI on LPC54018 with another different board?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1187941#M43010</link>
      <description>&lt;P&gt;///////&lt;/P&gt;</description>
      <pubDate>Fri, 18 Jun 2021 00:40:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1187941#M43010</guid>
      <dc:creator>mohd_</dc:creator>
      <dc:date>2021-06-18T00:40:10Z</dc:date>
    </item>
    <item>
      <title>Re: How to program SPI on LPC54018 with another different board?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1192704#M43124</link>
      <description>&lt;P&gt;//////&lt;/P&gt;</description>
      <pubDate>Wed, 02 Jun 2021 04:08:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/SPI-on-LPC54018/m-p/1192704#M43124</guid>
      <dc:creator>mohd_</dc:creator>
      <dc:date>2021-06-02T04:08:43Z</dc:date>
    </item>
  </channel>
</rss>

