<?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: S32K144 SPI interface in S32K</title>
    <link>https://community.nxp.com/t5/S32K/S32K144-SPI-interface/m-p/1527308#M17909</link>
    <description>&lt;P&gt;hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/160001"&gt;@danielmartynek&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It's working Thank you..&lt;/P&gt;</description>
    <pubDate>Fri, 23 Sep 2022 10:18:58 GMT</pubDate>
    <dc:creator>AnilKumar409</dc:creator>
    <dc:date>2022-09-23T10:18:58Z</dc:date>
    <item>
      <title>S32K144 SPI interface</title>
      <link>https://community.nxp.com/t5/S32K/S32K144-SPI-interface/m-p/1527111#M17900</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I'm implemented the LPSPI in master(LPSPI1) and slave modes (LPSPI0) by initializing ports(D,B). But I was not able to build the communication. I'm attaching the code. Please have a look and suggest me.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*&lt;BR /&gt;* main implementation: use this 'C' sample to create your own application&lt;BR /&gt;*&lt;BR /&gt;*/&lt;BR /&gt;#include "S32K144.h"&lt;BR /&gt;#include "Clock_modes.h"&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;uint16_t tx_16bits = 0xFD00;&lt;BR /&gt;uint16_t LPSPI1_16bits_read; /* Returned data in to SPI */&lt;BR /&gt;uint16_t LPSPI0_16bits_read; /* Returned data in to SPI */&lt;/P&gt;&lt;P&gt;void PORT_init(){&lt;BR /&gt;//Master:&lt;BR /&gt;PCC-&amp;gt;PCCn[PCC_PORTD_INDEX] |= PCC_PCCn_CGC_MASK;&lt;BR /&gt;PORTD-&amp;gt;PCR[0] |= PORT_PCR_MUX(3); /*Port D0: MUX = ALT3, SCK*/&lt;BR /&gt;PORTD-&amp;gt;PCR[1] |= PORT_PCR_MUX(3); /*Port D1: MUX = ALT3, SIN*/&lt;BR /&gt;PORTD-&amp;gt;PCR[2] |= PORT_PCR_MUX(3); /*Port D2: MUX = ALT3, SOUT*/&lt;BR /&gt;PORTD-&amp;gt;PCR[3] |= PORT_PCR_MUX(3); /*Port D3: MUX = ALT3, PCS0*/&lt;/P&gt;&lt;P&gt;// Slave&lt;BR /&gt;PCC-&amp;gt;PCCn[PCC_PORTB_INDEX] |= PCC_PCCn_CGC_MASK;&lt;BR /&gt;PORTB-&amp;gt;PCR[2] |= PORT_PCR_MUX(3); /*Port B2: MUX = ALT3, SCK*/&lt;BR /&gt;PORTB-&amp;gt;PCR[3] |= PORT_PCR_MUX(3); /*Port B1: MUX = ALT3, SIN*/&lt;BR /&gt;PORTB-&amp;gt;PCR[1] |= PORT_PCR_MUX(3); /*Port B1: MUX = ALT3, SOUT*/&lt;BR /&gt;PORTB-&amp;gt;PCR[0] |= PORT_PCR_MUX(3);&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;void LPSPI1_init_master(void) {&lt;BR /&gt;PCC-&amp;gt;PCCn[PCC_LPSPI1_INDEX] = 0; /* Disable clocks to modify PCS ( default) */&lt;BR /&gt;PCC-&amp;gt;PCCn[PCC_LPSPI1_INDEX] = 0xC6000000; /* Enable PCS=SPLL_DIV2 (40 MHz func'l clock) */&lt;/P&gt;&lt;P&gt;LPSPI1-&amp;gt;CR = 0x00000000; /* Disable module for configuration */&lt;BR /&gt;LPSPI1-&amp;gt;IER = 0x00000000; /* Interrupts not used */&lt;BR /&gt;LPSPI1-&amp;gt;DER = 0x00000000; /* DMA not used */&lt;BR /&gt;LPSPI1-&amp;gt;CFGR0 = 0x00000000; /* Defaults: */&lt;BR /&gt;/* RDM0=0: rec'd data to FIFO as normal */&lt;BR /&gt;/* CIRFIFO=0; Circular FIFO is disabled */&lt;BR /&gt;/* HRSEL, HRPOL, HREN=0: Host request disabled */&lt;BR /&gt;LPSPI1-&amp;gt;CFGR1 = 0x00000001; /* Configurations: master mode*/&lt;BR /&gt;/* PCSCFG=0: PCS[3:2] are enabled */&lt;BR /&gt;/* OUTCFG=0: Output data retains last value when CS negated */&lt;BR /&gt;/* PINCFG=0: SIN is input, SOUT is output */&lt;BR /&gt;/* MATCFG=0: Match disabled */&lt;BR /&gt;/* PCSPOL=0: PCS is active low */&lt;BR /&gt;/* NOSTALL=0: Stall if Tx FIFO empty or Rx FIFO full */&lt;BR /&gt;/* AUTOPCS=0: does not apply for master mode */&lt;BR /&gt;/* SAMPLE=0: input data sampled on SCK edge */&lt;BR /&gt;/* MASTER=1: Master mode */&lt;BR /&gt;LPSPI1-&amp;gt;TCR = 0x5300000F; /* Transmit cmd: PCS3, 16 bits, prescale func'l clk by 4, etc*/&lt;BR /&gt;/* CPOL=0: SCK inactive state is low */&lt;BR /&gt;/* CPHA=1: Change data on SCK lead'g, capture on trail'g edge*/&lt;BR /&gt;/* PRESCALE=2: Functional clock divided by 2**2 = 4 */&lt;BR /&gt;/* PCS=3: Transfer using PCS3 */&lt;BR /&gt;/* LSBF=0: Data is transfered MSB first */&lt;BR /&gt;/* BYSW=0: Byte swap disabled */&lt;BR /&gt;/* CONT, CONTC=0: Continuous transfer disabled */&lt;BR /&gt;/* RXMSK=0: Normal transfer: rx data stored in rx FIFO */&lt;BR /&gt;/* TXMSK=0: Normal transfer: data loaded from tx FIFO */&lt;BR /&gt;/* WIDTH=0: Single bit transfer */&lt;BR /&gt;/* FRAMESZ=15: # bits in frame = 15+1=16 */&lt;BR /&gt;LPSPI1-&amp;gt;CCR = 0x04090808; /* Clock dividers based on prescaled func'l clk of 100 nsec */&lt;BR /&gt;/* SCKPCS=4: SCK to PCS delay = 4+1 = 5 (500 nsec) */&lt;BR /&gt;/* PCSSCK=4: PCS to SCK delay = 9+1 = 10 (1 usec) */&lt;BR /&gt;/* DBT=8: Delay between Transfers = 8+2 = 10 (1 usec) */&lt;BR /&gt;/* SCKDIV=8: SCK divider =8+2 = 10 (1 usec: 1 MHz baud rate) */&lt;BR /&gt;LPSPI1-&amp;gt;FCR = 0x00000003; /* RXWATER=0: Rx flags set when Rx FIFO &amp;gt;0 */&lt;BR /&gt;/* TXWATER=3: Tx flags set when Tx FIFO &amp;lt;= 3 */&lt;BR /&gt;LPSPI1-&amp;gt;CR = 0x00000009; /* Enable module for operation */&lt;BR /&gt;/* DBGEN=1: module enabled in debug mode */&lt;BR /&gt;/* DOZEN=0: module enabled in Doze mode */&lt;BR /&gt;/* RST=0: Master logic not reset */&lt;BR /&gt;/* MEN=1: Module is enabled */&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;}&lt;BR /&gt;void LPSPI0_init_slave(void) {&lt;BR /&gt;PCC-&amp;gt;PCCn[PCC_LPSPI0_INDEX] = 0; /* Disable clocks to modify PCS ( default) */&lt;BR /&gt;PCC-&amp;gt;PCCn[PCC_LPSPI0_INDEX] = 0xC6000000; /* Enable PCS=SPLL_DIV2 (40 MHz func'l clock) */&lt;/P&gt;&lt;P&gt;LPSPI0 -&amp;gt; CR = 0x00000000;&lt;BR /&gt;LPSPI0 -&amp;gt; CFGR0 = 0x00000000;&lt;BR /&gt;LPSPI0 -&amp;gt; CFGR1 = 0x00000004;/* PCSCFG=1: PCS[3:2] are disabled */&lt;BR /&gt;/* AUTOPCS=1: does not apply for master mode */&lt;BR /&gt;LPSPI0-&amp;gt;FCR = 0x00000003; /* TXWATER=3: Tx flags set when Tx FIFO &amp;lt;= 3 */&lt;BR /&gt;LPSPI0 -&amp;gt; TCR = 0x4000000F; /* CPHA=1: Change data on SCK lead'g, capture on trail'g edge*/&lt;BR /&gt;/* FRAMESZ=15: # bits in frame = 15+1=16 */&lt;BR /&gt;LPSPI0 -&amp;gt; CR = 0x00000009;/* DBGEN=1: module enabled in debug mode */&lt;BR /&gt;/* MEN=1: Module is enabled */&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void LPSPI1_tx_16bits (uint16_t send) {&lt;BR /&gt;while((LPSPI1-&amp;gt;SR &amp;amp; LPSPI_SR_TDF_MASK)&amp;gt;&amp;gt;LPSPI_SR_TDF_SHIFT==0);&lt;BR /&gt;/* Wait for Tx FIFO available */&lt;BR /&gt;LPSPI1-&amp;gt;TDR = send; /* Transmit data */&lt;BR /&gt;LPSPI1-&amp;gt;SR |= LPSPI_SR_TDF_MASK; /* Clear TDF flag */&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;void LPSPI0_tx_16bits (uint16_t send) {&lt;BR /&gt;while((LPSPI0-&amp;gt;SR &amp;amp; LPSPI_SR_TDF_MASK)&amp;gt;&amp;gt;LPSPI_SR_TDF_SHIFT==0);&lt;BR /&gt;/* Wait for Tx FIFO available */&lt;BR /&gt;LPSPI0-&amp;gt;TDR = send; /* Transmit data */&lt;BR /&gt;LPSPI0-&amp;gt;SR |= LPSPI_SR_TDF_MASK; /* Clear TDF flag */&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;uint16_t LPSPI1_rx_16bits (void) {&lt;BR /&gt;uint16_t recieve = 0;&lt;/P&gt;&lt;P&gt;while((LPSPI1-&amp;gt;SR &amp;amp; LPSPI_SR_RDF_MASK)&amp;gt;&amp;gt;LPSPI_SR_RDF_SHIFT==0);&lt;BR /&gt;/* Wait at least one RxFIFO entry */&lt;BR /&gt;recieve|= LPSPI1-&amp;gt;RDR; /* Read received data */&lt;BR /&gt;LPSPI1-&amp;gt;SR |= LPSPI_SR_RDF_MASK; /* Clear RDF flag */&lt;BR /&gt;return recieve; /* Return received data */&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;uint16_t LPSPI0_rx_16bits (void) {&lt;BR /&gt;uint16_t recieve = 0;&lt;/P&gt;&lt;P&gt;while((LPSPI0-&amp;gt;SR &amp;amp; LPSPI_SR_RDF_MASK)&amp;gt;&amp;gt;LPSPI_SR_RDF_SHIFT==0);&lt;BR /&gt;/* Wait at least one RxFIFO entry */&lt;BR /&gt;recieve= LPSPI0-&amp;gt;RDR; /* Read received data */&lt;BR /&gt;LPSPI0-&amp;gt;SR |= LPSPI_SR_RDF_MASK; /* Clear RDF flag */&lt;BR /&gt;return recieve; /* Return received data */&lt;BR /&gt;}&lt;BR /&gt;int main(void) {&lt;BR /&gt;uint32_t cnt = 0;&lt;BR /&gt;WDOG_disable();&lt;BR /&gt;SOSC_init_8MHz();&lt;BR /&gt;SPLL_init_160MHz();&lt;BR /&gt;NormalRunMode_80MHz();&lt;BR /&gt;LPSPI1_init_master();&lt;BR /&gt;LPSPI0_init_slave();&lt;BR /&gt;PORT_init();&lt;BR /&gt;for (;;) {&lt;BR /&gt;LPSPI1_tx_16bits(tx_16bits);&lt;BR /&gt;LPSPI0_tx_16bits(tx_16bits);&lt;BR /&gt;LPSPI1_16bits_read = LPSPI1_rx_16bits();&lt;BR /&gt;LPSPI0_16bits_read = LPSPI0_rx_16bits();&lt;BR /&gt;cnt++;&lt;BR /&gt;}&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 23 Sep 2022 04:57:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K144-SPI-interface/m-p/1527111#M17900</guid>
      <dc:creator>AnilKumar409</dc:creator>
      <dc:date>2022-09-23T04:57:35Z</dc:date>
    </item>
    <item>
      <title>Re: S32K144 SPI interface</title>
      <link>https://community.nxp.com/t5/S32K/S32K144-SPI-interface/m-p/1527237#M17905</link>
      <description>&lt;P&gt;Hello &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/206728"&gt;@AnilKumar409&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;At the time the Master starts the transfer, the Slave TX buffer must be filled with data.&lt;/P&gt;
&lt;P&gt;Try calling&lt;/P&gt;
&lt;P&gt;LPSPI0_tx_16bits(tx_16bits);&lt;/P&gt;
&lt;P&gt;before&lt;/P&gt;
&lt;P&gt;LPSPI1_tx_16bits(tx_16bits);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BR, Daniel&lt;/P&gt;</description>
      <pubDate>Fri, 23 Sep 2022 08:34:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K144-SPI-interface/m-p/1527237#M17905</guid>
      <dc:creator>danielmartynek</dc:creator>
      <dc:date>2022-09-23T08:34:33Z</dc:date>
    </item>
    <item>
      <title>Re: S32K144 SPI interface</title>
      <link>https://community.nxp.com/t5/S32K/S32K144-SPI-interface/m-p/1527308#M17909</link>
      <description>&lt;P&gt;hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/160001"&gt;@danielmartynek&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It's working Thank you..&lt;/P&gt;</description>
      <pubDate>Fri, 23 Sep 2022 10:18:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K144-SPI-interface/m-p/1527308#M17909</guid>
      <dc:creator>AnilKumar409</dc:creator>
      <dc:date>2022-09-23T10:18:58Z</dc:date>
    </item>
  </channel>
</rss>

