<?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 configure SPI correctly? LPC824 and accelerometer(ISM330DLC). MCU Xpresso SDK in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-configure-SPI-correctly-LPC824-and-accelerometer/m-p/1745483#M54534</link>
    <description>&lt;P&gt;Hello, my name is Pavel, and I will be supporting your case, I reviewed your information and in main there is a function that the core never calls (SPI_Deinit). I recommend reviewing the frequency if it is the same as the "accelerometer" need if the CS is in the same form, I mean the Idel.&amp;nbsp;Maybe could use a logic analyzer to get more details.&lt;/P&gt;
&lt;P&gt;I suggest reviewing the example on the SDK, you could download it from this page,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://mcuxpresso.nxp.com/en/dashboard?uvid=538677" target="_blank"&gt;Dashboard | MCUXpresso SDK Builder (nxp.com)&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pavel_Hernandez_0-1698183431129.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/246619i7C98468E075AB9BB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Pavel_Hernandez_0-1698183431129.png" alt="Pavel_Hernandez_0-1698183431129.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;There are many examples available that you could modify to your application.&lt;/P&gt;
&lt;P&gt;Best regards,&lt;BR /&gt;Pavel&lt;/P&gt;</description>
    <pubDate>Tue, 24 Oct 2023 21:51:05 GMT</pubDate>
    <dc:creator>Pavel_Hernandez</dc:creator>
    <dc:date>2023-10-24T21:51:05Z</dc:date>
    <item>
      <title>How to configure SPI correctly? LPC824 and accelerometer(ISM330DLC). MCU Xpresso SDK</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-configure-SPI-correctly-LPC824-and-accelerometer/m-p/1745126#M54531</link>
      <description>&lt;H1&gt;Problem:&lt;/H1&gt;&lt;P&gt;The main issue is that I can't read/write the register. The accelerometer &lt;FONT face="arial black,avant garde"&gt;ISM330DLC&lt;/FONT&gt; is connected to the &lt;FONT face="arial black,avant garde"&gt;LPC824&lt;/FONT&gt; controller via&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;SPI&lt;/EM&gt;. In the project, I use the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;MCUXpresso SDK&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="teleportboy_2-1698136812508.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/246530i62896CEC5E7C9F57/image-size/medium?v=v2&amp;amp;px=400" role="button" title="teleportboy_2-1698136812508.png" alt="teleportboy_2-1698136812508.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;H1&gt;main.c:&lt;BR /&gt;&lt;BR /&gt;&lt;/H1&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;#&lt;SPAN class=""&gt;include&lt;/SPAN&gt; &lt;SPAN class=""&gt;"fsl_spi.h"&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;SPAN class=""&gt;include&lt;/SPAN&gt; &lt;SPAN class=""&gt;"pin_mux.h"&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;SPAN class=""&gt;include&lt;/SPAN&gt; &lt;SPAN class=""&gt;"board.h"&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;SPAN class=""&gt;include&lt;/SPAN&gt; &lt;SPAN class=""&gt;"fsl_debug_console.h"&lt;/SPAN&gt;&lt;/SPAN&gt;

&lt;SPAN class=""&gt;#&lt;SPAN class=""&gt;include&lt;/SPAN&gt; &lt;SPAN class=""&gt;&amp;lt;stdbool.h&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;

&lt;SPAN class=""&gt;#&lt;SPAN class=""&gt;define&lt;/SPAN&gt; SPI_MASTER          SPI0&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;SPAN class=""&gt;define&lt;/SPAN&gt; MASTER_CLK_SRC      kCLOCK_MainClk&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;SPAN class=""&gt;define&lt;/SPAN&gt; SPI_MASTER_CLK_FREQ CLOCK_GetFreq(MASTER_CLK_SRC)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;SPAN class=""&gt;define&lt;/SPAN&gt; SPI_MASTER_BAUDRATE 500000U&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#&lt;SPAN class=""&gt;define&lt;/SPAN&gt; SPI_MASTER_SSEL     kSPI_Ssel0Assert&lt;/SPAN&gt;

&lt;SPAN class=""&gt;static&lt;/SPAN&gt; &lt;SPAN class=""&gt;void&lt;/SPAN&gt; &lt;SPAN class=""&gt;SPIMasterInit&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;void&lt;/SPAN&gt;)&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;static&lt;/SPAN&gt; &lt;SPAN class=""&gt;void&lt;/SPAN&gt; &lt;SPAN class=""&gt;MasterStartTransfer&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;uint8_t&lt;/SPAN&gt; reg)&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;static&lt;/SPAN&gt; &lt;SPAN class=""&gt;void&lt;/SPAN&gt; &lt;SPAN class=""&gt;TransferDataCheck&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;void&lt;/SPAN&gt;)&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;static&lt;/SPAN&gt; &lt;SPAN class=""&gt;void&lt;/SPAN&gt; &lt;SPAN class=""&gt;activateISM330&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;void&lt;/SPAN&gt;)&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;static&lt;/SPAN&gt; &lt;SPAN class=""&gt;void&lt;/SPAN&gt; &lt;SPAN class=""&gt;writeToISM330Registr&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;uint8_t&lt;/SPAN&gt;, &lt;SPAN class=""&gt;uint8_t&lt;/SPAN&gt;)&lt;/SPAN&gt;;

&lt;SPAN class=""&gt;#&lt;SPAN class=""&gt;define&lt;/SPAN&gt; BUFFER_SIZE (2)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;static&lt;/SPAN&gt; &lt;SPAN class=""&gt;uint8_t&lt;/SPAN&gt; txBuffer[BUFFER_SIZE];
&lt;SPAN class=""&gt;static&lt;/SPAN&gt; &lt;SPAN class=""&gt;uint8_t&lt;/SPAN&gt; rxBuffer[BUFFER_SIZE];

&lt;SPAN class=""&gt;int&lt;/SPAN&gt; &lt;SPAN class=""&gt;main&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;void&lt;/SPAN&gt;)&lt;/SPAN&gt;
{
    CLOCK_EnableClock(kCLOCK_Uart0);

    CLOCK_SetClkDivider(kCLOCK_DivUsartClk, &lt;SPAN class=""&gt;1U&lt;/SPAN&gt;);

    CLOCK_EnableClock(kCLOCK_Spi0);

    BOARD_InitBootPins();
    BOARD_InitBootClocks();
    BOARD_InitDebugConsole();

    SPIMasterInit();

    activateISM330(); // setup ctrl reg in ism330dlc

    MasterStartTransfer(&lt;SPAN class=""&gt;0x0F&lt;/SPAN&gt;); 
    TransferDataCheck();

    &lt;SPAN class=""&gt;while&lt;/SPAN&gt;(&lt;SPAN class=""&gt;1&lt;/SPAN&gt;) {

    }

    SPI_Deinit(SPI_MASTER);
}&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;static&lt;/SPAN&gt; &lt;SPAN class=""&gt;void&lt;/SPAN&gt; &lt;SPAN class=""&gt;SPIMasterInit&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;void&lt;/SPAN&gt;)&lt;/SPAN&gt;
{
    &lt;SPAN class=""&gt;spi_master_config_t&lt;/SPAN&gt; userConfig = {&lt;SPAN class=""&gt;0&lt;/SPAN&gt;};
    &lt;SPAN class=""&gt;uint32_t&lt;/SPAN&gt; srcFreq               = &lt;SPAN class=""&gt;0U&lt;/SPAN&gt;;

    SPI_MasterGetDefaultConfig(&amp;amp;userConfig);
    userConfig.baudRate_Bps   = SPI_MASTER_BAUDRATE;
    userConfig.sselNumber     = kSPI_Ssel0Assert;
    userConfig.clockPolarity  = kSPI_ClockPolarityActiveLow;
    userConfig.clockPhase     = kSPI_ClockPhaseFirstEdge;
    userConfig.direction      = kSPI_MsbFirst;
    userConfig.dataWidth      = kSPI_Data8Bits;
    userConfig.sselPolarity   = kSPI_SpolActiveAllLow;
    userConfig.enableLoopback = &lt;SPAN class=""&gt;false&lt;/SPAN&gt;;
    &lt;SPAN class=""&gt;//userConfig.delayConfig.postDelay     = 0xFF;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;//userConfig.delayConfig.preDelay      = 0xFF;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;//userConfig.delayConfig.transferDelay = 0xFF;&lt;/SPAN&gt;
    PRINTF(&lt;SPAN class=""&gt;"CLK FREQ: %d\n\r"&lt;/SPAN&gt;, SPI_MASTER_CLK_FREQ);
    srcFreq = SPI_MASTER_CLK_FREQ;
    SPI_MasterInit(SPI_MASTER, &amp;amp;userConfig, srcFreq);
}&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;//setup ctrl registr&lt;BR /&gt;static&lt;/SPAN&gt; &lt;SPAN class=""&gt;void&lt;/SPAN&gt; &lt;SPAN class=""&gt;activateISM330&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;void&lt;/SPAN&gt;)&lt;/SPAN&gt;
{
    txBuffer[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;] = &lt;SPAN class=""&gt;0x01&lt;/SPAN&gt;; &lt;SPAN class=""&gt;// 0000 0001 first bit = r/w&lt;/SPAN&gt;
    txBuffer[&lt;SPAN class=""&gt;1&lt;/SPAN&gt;] = &lt;SPAN class=""&gt;0x80&lt;/SPAN&gt;; &lt;SPAN class=""&gt;// 1000 0000&lt;/SPAN&gt;


    &lt;SPAN class=""&gt;spi_transfer_t&lt;/SPAN&gt; xfer = {&lt;SPAN class=""&gt;0&lt;/SPAN&gt;};

    xfer.txData      = txBuffer;
    xfer.rxData      = rxBuffer;
    xfer.dataSize    = &lt;SPAN class=""&gt;sizeof&lt;/SPAN&gt;(txBuffer);
    xfer.configFlags = kSPI_EndOfTransfer | kSPI_EndOfFrame;

    SPI_MasterTransferBlocking(SPI_MASTER, &amp;amp;xfer);
}&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;static&lt;/SPAN&gt; &lt;SPAN class=""&gt;void&lt;/SPAN&gt; &lt;SPAN class=""&gt;MasterStartTransfer&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;uint8_t&lt;/SPAN&gt; reg)&lt;/SPAN&gt;
{
    &lt;SPAN class=""&gt;uint32_t&lt;/SPAN&gt; i          = &lt;SPAN class=""&gt;0U&lt;/SPAN&gt;;
    &lt;SPAN class=""&gt;spi_transfer_t&lt;/SPAN&gt; xfer = {&lt;SPAN class=""&gt;0&lt;/SPAN&gt;};

    &lt;SPAN class=""&gt;for&lt;/SPAN&gt;(&lt;SPAN class=""&gt;int&lt;/SPAN&gt; i = &lt;SPAN class=""&gt;0&lt;/SPAN&gt;; i &amp;lt; BUFFER_SIZE; i++) {
        rxBuffer[i] = &lt;SPAN class=""&gt;0&lt;/SPAN&gt;;
        txBuffer[i] = &lt;SPAN class=""&gt;0&lt;/SPAN&gt;;
    }

    txBuffer[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;] = (&lt;SPAN class=""&gt;1&lt;/SPAN&gt; &amp;lt;&amp;lt; &lt;SPAN class=""&gt;7&lt;/SPAN&gt;) | reg;

    xfer.txData      = txBuffer;
    xfer.rxData      = rxBuffer;
    xfer.dataSize    = &lt;SPAN class=""&gt;sizeof&lt;/SPAN&gt;(txBuffer);
    xfer.configFlags = kSPI_EndOfTransfer | kSPI_EndOfFrame;
    SPI_MasterTransferBlocking(SPI_MASTER, &amp;amp;xfer);
}

&lt;SPAN class=""&gt;static&lt;/SPAN&gt; &lt;SPAN class=""&gt;void&lt;/SPAN&gt; &lt;SPAN class=""&gt;TransferDataCheck&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;void&lt;/SPAN&gt;)&lt;/SPAN&gt;
{
    &lt;SPAN class=""&gt;uint32_t&lt;/SPAN&gt; i = &lt;SPAN class=""&gt;0U&lt;/SPAN&gt;;
&lt;SPAN class=""&gt;//    PRINTF("\n\rThe TX data are: ");&lt;/SPAN&gt;
&lt;SPAN class=""&gt;//    for(i = 0; i &amp;lt; BUFFER_SIZE; i++) {&lt;/SPAN&gt;
&lt;SPAN class=""&gt;//        PRINTF("0x%02X ", txBuffer[i]);&lt;/SPAN&gt;
&lt;SPAN class=""&gt;//    }&lt;/SPAN&gt;

    PRINTF(&lt;SPAN class=""&gt;"\n\rThe RX data are: "&lt;/SPAN&gt;);
    &lt;SPAN class=""&gt;for&lt;/SPAN&gt;(i = &lt;SPAN class=""&gt;0&lt;/SPAN&gt;; i &amp;lt; BUFFER_SIZE; i++) {
        PRINTF(&lt;SPAN class=""&gt;"0X%02X "&lt;/SPAN&gt;, rxBuffer[i]);
    }

}&lt;/PRE&gt;&lt;H1&gt;Pins initializaton:&lt;BR /&gt;&lt;BR /&gt;&lt;/H1&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;void&lt;/SPAN&gt; &lt;SPAN class=""&gt;BOARD_InitPins&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;SPAN class=""&gt;void&lt;/SPAN&gt;)&lt;/SPAN&gt;
{
    CLOCK_EnableClock(kCLOCK_Iocon);
    CLOCK_EnableClock(kCLOCK_Swm);

    &lt;SPAN class=""&gt;gpio_pin_config_t&lt;/SPAN&gt; dereConfig = {
            kGPIO_DigitalOutput,
            &lt;SPAN class=""&gt;1&lt;/SPAN&gt;,
    };
    GPIO_PinInit(GPIO, &lt;SPAN class=""&gt;0&lt;/SPAN&gt;, &lt;SPAN class=""&gt;15U&lt;/SPAN&gt;, &amp;amp;dereConfig);

    &lt;SPAN class=""&gt;gpio_pin_config_t&lt;/SPAN&gt; ssel = {
            kGPIO_DigitalOutput,
            &lt;SPAN class=""&gt;0&lt;/SPAN&gt;,
    };
    GPIO_PinInit(GPIO, &lt;SPAN class=""&gt;0&lt;/SPAN&gt;, &lt;SPAN class=""&gt;12U&lt;/SPAN&gt;, &amp;amp;ssel);

    &lt;SPAN class=""&gt;gpio_pin_config_t&lt;/SPAN&gt; lampochka = {
            kGPIO_DigitalOutput,
            &lt;SPAN class=""&gt;0&lt;/SPAN&gt;
    };
    GPIO_PinInit(GPIO, &lt;SPAN class=""&gt;0&lt;/SPAN&gt;, &lt;SPAN class=""&gt;0&lt;/SPAN&gt;, &amp;amp;lampochka);

    SWM_SetMovablePinSelect(SWM0, kSWM_USART0_TXD, kSWM_PortPin_P0_14);
    &lt;SPAN class=""&gt;//SWM_SetMovablePinSelect(SWM0, kSWM_USART0_RTS, kSWM_PortPin_P0_15);&lt;/SPAN&gt;
    SWM_SetMovablePinSelect(SWM0, kSWM_USART0_RXD, kSWM_PortPin_P0_11);
    SWM_SetMovablePinSelect(SWM0, kSWM_SPI0_SCK, kSWM_PortPin_P0_13);
    SWM_SetMovablePinSelect(SWM0, kSWM_SPI0_MOSI, kSWM_PortPin_P0_23);
    SWM_SetMovablePinSelect(SWM0, kSWM_SPI0_MISO, kSWM_PortPin_P0_17);
    SWM_SetMovablePinSelect(SWM0, kSWM_SPI0_SSEL0, kSWM_PortPin_P0_12);

    CLOCK_DisableClock(kCLOCK_Swm);
}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 24 Oct 2023 08:44:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-configure-SPI-correctly-LPC824-and-accelerometer/m-p/1745126#M54531</guid>
      <dc:creator>teleportboy</dc:creator>
      <dc:date>2023-10-24T08:44:48Z</dc:date>
    </item>
    <item>
      <title>Re: How to configure SPI correctly? LPC824 and accelerometer(ISM330DLC). MCU Xpresso SDK</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-configure-SPI-correctly-LPC824-and-accelerometer/m-p/1745483#M54534</link>
      <description>&lt;P&gt;Hello, my name is Pavel, and I will be supporting your case, I reviewed your information and in main there is a function that the core never calls (SPI_Deinit). I recommend reviewing the frequency if it is the same as the "accelerometer" need if the CS is in the same form, I mean the Idel.&amp;nbsp;Maybe could use a logic analyzer to get more details.&lt;/P&gt;
&lt;P&gt;I suggest reviewing the example on the SDK, you could download it from this page,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://mcuxpresso.nxp.com/en/dashboard?uvid=538677" target="_blank"&gt;Dashboard | MCUXpresso SDK Builder (nxp.com)&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pavel_Hernandez_0-1698183431129.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/246619i7C98468E075AB9BB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Pavel_Hernandez_0-1698183431129.png" alt="Pavel_Hernandez_0-1698183431129.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;There are many examples available that you could modify to your application.&lt;/P&gt;
&lt;P&gt;Best regards,&lt;BR /&gt;Pavel&lt;/P&gt;</description>
      <pubDate>Tue, 24 Oct 2023 21:51:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/How-to-configure-SPI-correctly-LPC824-and-accelerometer/m-p/1745483#M54534</guid>
      <dc:creator>Pavel_Hernandez</dc:creator>
      <dc:date>2023-10-24T21:51:05Z</dc:date>
    </item>
  </channel>
</rss>

