<?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 How to use S32K144 SPI0 in S32K</title>
    <link>https://community.nxp.com/t5/S32K/How-to-use-S32K144-SPI0/m-p/1607476#M21032</link>
    <description>&lt;P&gt;&lt;SPAN&gt;I have used SPI0 SPI1 SPI2 on S32K144, why only SPI0 does not work, the following is my code。&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Is it because I haven't enabled SPI0 all the time?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;this is my code&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;#define FMC_BSP_ETH1_SCK_PORT PORTE&lt;BR /&gt;#define FMC_BSP_ETH1_SCK_IDX (0U)&lt;BR /&gt;#define FMC_BSP_ETH1_SCK_MUX PORT_MUX_ALT3&lt;BR /&gt;#define FMC_BSP_ETH1_SCK_PDS PORT_LOW_DRIVE_STRENGTH&lt;/P&gt;&lt;P&gt;#define FMC_BSP_ETH1_MISO_PORT PORTE&lt;BR /&gt;#define FMC_BSP_ETH1_MISO_IDX (1U)&lt;BR /&gt;#define FMC_BSP_ETH1_MISO_MUX PORT_MUX_ALT3&lt;BR /&gt;#define FMC_BSP_ETH1_MISO_PDS PORT_LOW_DRIVE_STRENGTH&lt;/P&gt;&lt;P&gt;#define FMC_BSP_ETH1_MOSI_PORT PORTE&lt;BR /&gt;#define FMC_BSP_ETH1_MOSI_IDX (2U)&lt;BR /&gt;#define FMC_BSP_ETH1_MOSI_MUX PORT_MUX_ALT3&lt;BR /&gt;#define FMC_BSP_ETH1_MOSI_PDS PORT_LOW_DRIVE_STRENGTH&lt;/P&gt;&lt;P&gt;#define FMC_BSP_ETH1_CS_PORT PORTE&lt;BR /&gt;#define FMC_BSP_ETH1_CS_IDX (6U)&lt;BR /&gt;#define FMC_BSP_ETH1_CS_MUX PORT_MUX_AS_GPIO&lt;BR /&gt;#define FMC_BSP_ETH1_CS_PDS PORT_HIGH_DRIVE_STRENGTH&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#define FMC_BSP_SPI0_PCS (LPSPI_PCS2) /*! ETH1 片选*/&lt;BR /&gt;#define FMC_BSP_SPI1_PCS (LPSPI_PCS3) /*! ETH2 片选*/&lt;/P&gt;&lt;P&gt;#define FMC_BSP_SPI_PCS_POL (LPSPI_ACTIVE_LOW) /*! 片选极性*/&lt;BR /&gt;#define FMC_BSP_SPI_BITCOUNT (8U) /*! 帧大小*/&lt;BR /&gt;#define FMC_BSP_SPI_SRC_CLK (48000000U) /*! 时钟源频率*/&lt;BR /&gt;#define FMC_BSP_SPI_LSBFIRST (FALSE) /*! MSB OR LSB*/&lt;BR /&gt;#define FMC_BSP_SPI_CLOCK_PHASE (LPSPI_CLOCK_PHASE_1ST_EDGE) /*! 数据在时钟的第几个边沿传输*/&lt;BR /&gt;#define FMC_BSP_SPI_SCK_PHASE (LPSPI_SCK_ACTIVE_HIGH) /*! CLK 极性*/&lt;BR /&gt;#define FMC_BSP_SPI_TRANSFER_TYPE (LPSPI_USING_INTERRUPTS) /*! DMA还是中断*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;uint8_t FmcBspEthSpiPortCfg(PORT_Type *pPort, uint32_t u32Index,port_drive_strength_t tpds, port_mux_t tMux,uint8_t CSInit,uint8_t direc)&lt;BR /&gt;{&lt;BR /&gt;pin_settings_config_t tPinCtg;&lt;BR /&gt;//参数设置&lt;BR /&gt;memset(&amp;amp;tPinCtg, 0 ,sizeof(tPinCtg));&lt;BR /&gt;tPinCtg.base = pPort;&lt;BR /&gt;tPinCtg.pinPortIdx = u32Index;&lt;BR /&gt;tPinCtg.pullConfig = PORT_INTERNAL_PULL_NOT_ENABLED;&lt;BR /&gt;tPinCtg.passiveFilter = false;&lt;BR /&gt;tPinCtg.driveSelect = tpds;&lt;BR /&gt;tPinCtg.mux = tMux;&lt;BR /&gt;tPinCtg.pinLock = false;&lt;BR /&gt;tPinCtg.intConfig = PORT_DMA_INT_DISABLED;&lt;BR /&gt;tPinCtg.clearIntFlag = false;&lt;BR /&gt;tPinCtg.gpioBase = NULL;&lt;BR /&gt;if(CSInit==1)//ETH1&lt;BR /&gt;{&lt;BR /&gt;tPinCtg.gpioBase = PTE;&lt;BR /&gt;}&lt;BR /&gt;else if(CSInit==2)//ETH2&lt;BR /&gt;{&lt;BR /&gt;tPinCtg.gpioBase = PTB;&lt;BR /&gt;}&lt;BR /&gt;if(direc==1)&lt;BR /&gt;{&lt;BR /&gt;tPinCtg.direction = GPIO_INPUT_DIRECTION;&lt;BR /&gt;}&lt;BR /&gt;else if(direc==2)&lt;BR /&gt;{&lt;BR /&gt;tPinCtg.direction = GPIO_OUTPUT_DIRECTION;&lt;BR /&gt;}&lt;BR /&gt;PINS_Init(&amp;amp;tPinCtg);&lt;BR /&gt;return TRUE;&lt;BR /&gt;}&lt;BR /&gt;/**************************************************************************//**&lt;BR /&gt;* 获取SPI的配置参数&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt;&lt;BR /&gt;* pCfg 参数存放地址&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt;&lt;BR /&gt;* uIndex SPI的设备索引&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt;&lt;BR /&gt;* uBaudRate 波特率 KbpS&lt;BR /&gt;*&lt;BR /&gt;* @retval&lt;BR /&gt;* BOOL&lt;BR /&gt;* @return&lt;BR /&gt;* 函数执行结果，成功执行，返回TRUE&lt;BR /&gt;*******************************************************************************/&lt;BR /&gt;uint8_t FmcBspEthSpiGetCfg(lpspi_master_config_t *pCfg, uint8_t uIndex, uint32_t uBaudRate)&lt;BR /&gt;{&lt;BR /&gt;uint8_t bRet = FALSE;&lt;BR /&gt;pCfg-&amp;gt;bitsPerSec = uBaudRate;&lt;BR /&gt;pCfg-&amp;gt;isPcsContinuous = false;&lt;BR /&gt;pCfg-&amp;gt;rxDMAChannel = 255;&lt;BR /&gt;pCfg-&amp;gt;txDMAChannel = 255;&lt;BR /&gt;pCfg-&amp;gt;callback = NULL;&lt;BR /&gt;pCfg-&amp;gt;callbackParam = NULL;&lt;/P&gt;&lt;P&gt;pCfg-&amp;gt;pcsPolarity = FMC_BSP_SPI_PCS_POL;&lt;BR /&gt;pCfg-&amp;gt;bitcount = FMC_BSP_SPI_BITCOUNT;&lt;BR /&gt;pCfg-&amp;gt;lpspiSrcClk = FMC_BSP_SPI_SRC_CLK;&lt;BR /&gt;pCfg-&amp;gt;clkPhase = FMC_BSP_SPI_CLOCK_PHASE;&lt;BR /&gt;pCfg-&amp;gt;clkPolarity = FMC_BSP_SPI_SCK_PHASE;&lt;BR /&gt;pCfg-&amp;gt;lsbFirst = FMC_BSP_SPI_LSBFIRST;&lt;BR /&gt;pCfg-&amp;gt;transferType = FMC_BSP_SPI_TRANSFER_TYPE;&lt;BR /&gt;if(uIndex==0)&lt;BR /&gt;{&lt;BR /&gt;pCfg-&amp;gt;whichPcs = FMC_BSP_SPI0_PCS;&lt;BR /&gt;}&lt;BR /&gt;else if(uIndex==1)&lt;BR /&gt;{&lt;BR /&gt;pCfg-&amp;gt;whichPcs = FMC_BSP_SPI1_PCS;&lt;BR /&gt;}&lt;BR /&gt;bRet = TRUE;&lt;BR /&gt;return bRet;&lt;BR /&gt;}&lt;BR /&gt;/**************************************************************************//**&lt;BR /&gt;* 获取SPI状态的存取结构体&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt;&lt;BR /&gt;* eIndex SPI的设备索引&lt;BR /&gt;* @retval&lt;BR /&gt;* lpspi_state_t*&lt;BR /&gt;* @return&lt;BR /&gt;* 函数执行结果，成功执行非NULL&lt;BR /&gt;*******************************************************************************/&lt;BR /&gt;lpspi_state_t *FmcBspEthGetSpiStateStruct(uint8_t uIndex)&lt;BR /&gt;{&lt;BR /&gt;lpspi_state_t *pState = NULL;&lt;BR /&gt;if(uIndex==0)&lt;BR /&gt;{&lt;BR /&gt;pState = &amp;amp;g_spi0State;&lt;BR /&gt;}&lt;BR /&gt;else if(uIndex==1)&lt;BR /&gt;{&lt;BR /&gt;pState = &amp;amp;g_spi1State;&lt;BR /&gt;}&lt;BR /&gt;return pState;&lt;BR /&gt;}&lt;BR /&gt;/**************************************************************************//**&lt;BR /&gt;* 初始化SPI外设&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt;&lt;BR /&gt;* uIndex SPI的设备索引&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt;&lt;BR /&gt;* uBaudRate SPI的波特率&lt;BR /&gt;* @retval&lt;BR /&gt;* BOOL&lt;BR /&gt;* @return&lt;BR /&gt;* 函数执行结果，若成功则返回TRUE，否则返回FLASE&lt;BR /&gt;*******************************************************************************/&lt;BR /&gt;uint8_t FmcBspEthSpiMasterInit(uint8_t uIndex, uint32_t uBaudRate)&lt;BR /&gt;{&lt;BR /&gt;lpspi_master_config_t spiCfg;&lt;BR /&gt;lpspi_state_t *pState;&lt;BR /&gt;if( FALSE == FmcBspEthSpiGetCfg(&amp;amp;spiCfg, uIndex, uBaudRate) ) {&lt;BR /&gt;return FALSE;&lt;BR /&gt;}&lt;BR /&gt;pState = FmcBspEthGetSpiStateStruct(uIndex);&lt;BR /&gt;if( NULL == pState ) {&lt;BR /&gt;return FALSE;&lt;BR /&gt;}&lt;BR /&gt;if( STATUS_SUCCESS == LPSPI_DRV_MasterInit(uIndex, pState, &amp;amp;spiCfg) ) {&lt;BR /&gt;return TRUE;&lt;BR /&gt;}&lt;BR /&gt;return FALSE;&lt;BR /&gt;}&lt;BR /&gt;//spi_clock&lt;BR /&gt;void FmcBspEthClockSPIInit(void)&lt;BR /&gt;{&lt;BR /&gt;peripheral_clock_config_t Spi0Clk = {&lt;BR /&gt;.clockName = PCC_LPSPI0_CLOCK,&lt;BR /&gt;.clkGate = true,&lt;BR /&gt;.clksrc=CLK_SRC_FIRC,&lt;BR /&gt;.frac = MULTIPLY_BY_ONE,&lt;BR /&gt;.divider = DIVIDE_BY_ONE,&lt;BR /&gt;};&lt;BR /&gt;peripheral_clock_config_t Spi1Clk = {&lt;BR /&gt;.clockName = PCC_LPSPI1_CLOCK,&lt;BR /&gt;.clkGate = true,&lt;BR /&gt;.clksrc=CLK_SRC_FIRC,&lt;BR /&gt;.frac = MULTIPLY_BY_ONE,&lt;BR /&gt;.divider = DIVIDE_BY_ONE,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;/* Disable the peripheral clock */&lt;BR /&gt;PCC_SetClockMode(PCC, Spi0Clk.clockName, false);&lt;BR /&gt;PCC_SetClockMode(PCC, Spi1Clk.clockName, false);&lt;/P&gt;&lt;P&gt;/* Set peripheral clock control */&lt;BR /&gt;PCC_SetPeripheralClockControl(PCC,&lt;BR /&gt;Spi0Clk.clockName,&lt;BR /&gt;Spi0Clk.clkGate,&lt;BR /&gt;Spi0Clk.clkSrc,&lt;BR /&gt;Spi0Clk.divider,&lt;BR /&gt;Spi0Clk.frac);&lt;BR /&gt;PCC_SetPeripheralClockControl(PCC,&lt;BR /&gt;Spi1Clk.clockName,&lt;BR /&gt;Spi1Clk.clkGate,&lt;BR /&gt;Spi1Clk.clkSrc,&lt;BR /&gt;Spi1Clk.divider,&lt;BR /&gt;Spi1Clk.frac);&lt;BR /&gt;}&lt;BR /&gt;//IO init&lt;BR /&gt;void FmcEthSpiPortInit(void)&lt;BR /&gt;{&lt;BR /&gt;//ETH1&lt;BR /&gt;//CLK&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH1_SCK_PORT,FMC_BSP_ETH1_SCK_IDX,FMC_BSP_ETH1_SCK_PDS,FMC_BSP_ETH1_SCK_MUX,1,2);&lt;BR /&gt;//MISO&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH1_MISO_PORT,FMC_BSP_ETH1_MISO_IDX,FMC_BSP_ETH1_MISO_PDS,FMC_BSP_ETH1_MISO_MUX,1,1);&lt;BR /&gt;//MOSI&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH1_MOSI_PORT,FMC_BSP_ETH1_MOSI_IDX,FMC_BSP_ETH1_MOSI_PDS,FMC_BSP_ETH1_MOSI_MUX,1,2);&lt;BR /&gt;//CS&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH1_CS_PORT,FMC_BSP_ETH1_CS_IDX,FMC_BSP_ETH1_CS_PDS,FMC_BSP_ETH1_CS_MUX,1,2);&lt;BR /&gt;//初始化IO口状态&lt;BR /&gt;PINS_GPIO_SetPins(FMC_BSP_ETH1_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH1_CS_PIN);&lt;BR /&gt;// PINS_GPIO_SetPins(FMC_BSP_ETH1_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH1_SCK_IDX);//这个怎么不起作用？&lt;BR /&gt;//ETH2&lt;BR /&gt;//CLK&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH2_SCK_PORT,FMC_BSP_ETH2_SCK_IDX,FMC_BSP_ETH2_SCK_PDS,FMC_BSP_ETH2_SCK_MUX,2,2);&lt;BR /&gt;//MISO&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH2_MISO_PORT,FMC_BSP_ETH2_MISO_IDX,FMC_BSP_ETH2_MISO_PDS,FMC_BSP_ETH2_MISO_MUX,2,1);&lt;BR /&gt;//MOSI&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH2_MOSI_PORT,FMC_BSP_ETH2_MOSI_IDX,FMC_BSP_ETH2_MOSI_PDS,FMC_BSP_ETH2_MOSI_MUX,2,2);&lt;BR /&gt;//CS&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH2_CS_PORT,FMC_BSP_ETH2_CS_IDX,FMC_BSP_ETH2_CS_PDS,FMC_BSP_ETH2_CS_MUX,2,2);&lt;BR /&gt;//初始化IO口状态&lt;BR /&gt;PINS_GPIO_SetPins(FMC_BSP_ETH2_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH2_CS_PIN);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/***************************************************************************//**&lt;BR /&gt;* 使用片选&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt; uDev,ETH1/ETH2&lt;BR /&gt;* @retval&lt;BR /&gt;* VOID&lt;BR /&gt;* @return&lt;BR /&gt;* VOID&lt;BR /&gt;*******************************************************************************/&lt;BR /&gt;void SpiEthCsEnable(uint8_t uDev)&lt;BR /&gt;{&lt;BR /&gt;if(uDev==0) {&lt;BR /&gt;// PINS_GPIO_SetPins(FMC_BSP_ETH1_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH1_CS_PIN);&lt;BR /&gt;PINS_GPIO_ClearPins(FMC_BSP_ETH1_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH1_CS_PIN);&lt;BR /&gt;} else {&lt;BR /&gt;// PINS_GPIO_SetPins(FMC_BSP_ETH2_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH2_CS_PIN);&lt;BR /&gt;PINS_GPIO_ClearPins(FMC_BSP_ETH2_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH2_CS_PIN);&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;/***************************************************************************//**&lt;BR /&gt;* 失能片选&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt; uDev,ETH1/ETH2&lt;BR /&gt;* @retval&lt;BR /&gt;* VOID&lt;BR /&gt;* @return&lt;BR /&gt;* VOID&lt;BR /&gt;*******************************************************************************/&lt;BR /&gt;void SpiEthCsDisable(uint8_t uDev)&lt;BR /&gt;{&lt;BR /&gt;if(uDev==0) {&lt;BR /&gt;// PINS_GPIO_ClearPins(FMC_BSP_ETH1_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH1_CS_PIN);&lt;BR /&gt;PINS_GPIO_SetPins(FMC_BSP_ETH1_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH1_CS_PIN);&lt;BR /&gt;} else {&lt;BR /&gt;// PINS_GPIO_ClearPins(FMC_BSP_ETH2_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH2_CS_PIN);&lt;BR /&gt;PINS_GPIO_SetPins(FMC_BSP_ETH2_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH2_CS_PIN);&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;</description>
    <pubDate>Wed, 01 Mar 2023 08:32:58 GMT</pubDate>
    <dc:creator>leonordo</dc:creator>
    <dc:date>2023-03-01T08:32:58Z</dc:date>
    <item>
      <title>How to use S32K144 SPI0</title>
      <link>https://community.nxp.com/t5/S32K/How-to-use-S32K144-SPI0/m-p/1607476#M21032</link>
      <description>&lt;P&gt;&lt;SPAN&gt;I have used SPI0 SPI1 SPI2 on S32K144, why only SPI0 does not work, the following is my code。&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Is it because I haven't enabled SPI0 all the time?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;this is my code&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;#define FMC_BSP_ETH1_SCK_PORT PORTE&lt;BR /&gt;#define FMC_BSP_ETH1_SCK_IDX (0U)&lt;BR /&gt;#define FMC_BSP_ETH1_SCK_MUX PORT_MUX_ALT3&lt;BR /&gt;#define FMC_BSP_ETH1_SCK_PDS PORT_LOW_DRIVE_STRENGTH&lt;/P&gt;&lt;P&gt;#define FMC_BSP_ETH1_MISO_PORT PORTE&lt;BR /&gt;#define FMC_BSP_ETH1_MISO_IDX (1U)&lt;BR /&gt;#define FMC_BSP_ETH1_MISO_MUX PORT_MUX_ALT3&lt;BR /&gt;#define FMC_BSP_ETH1_MISO_PDS PORT_LOW_DRIVE_STRENGTH&lt;/P&gt;&lt;P&gt;#define FMC_BSP_ETH1_MOSI_PORT PORTE&lt;BR /&gt;#define FMC_BSP_ETH1_MOSI_IDX (2U)&lt;BR /&gt;#define FMC_BSP_ETH1_MOSI_MUX PORT_MUX_ALT3&lt;BR /&gt;#define FMC_BSP_ETH1_MOSI_PDS PORT_LOW_DRIVE_STRENGTH&lt;/P&gt;&lt;P&gt;#define FMC_BSP_ETH1_CS_PORT PORTE&lt;BR /&gt;#define FMC_BSP_ETH1_CS_IDX (6U)&lt;BR /&gt;#define FMC_BSP_ETH1_CS_MUX PORT_MUX_AS_GPIO&lt;BR /&gt;#define FMC_BSP_ETH1_CS_PDS PORT_HIGH_DRIVE_STRENGTH&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#define FMC_BSP_SPI0_PCS (LPSPI_PCS2) /*! ETH1 片选*/&lt;BR /&gt;#define FMC_BSP_SPI1_PCS (LPSPI_PCS3) /*! ETH2 片选*/&lt;/P&gt;&lt;P&gt;#define FMC_BSP_SPI_PCS_POL (LPSPI_ACTIVE_LOW) /*! 片选极性*/&lt;BR /&gt;#define FMC_BSP_SPI_BITCOUNT (8U) /*! 帧大小*/&lt;BR /&gt;#define FMC_BSP_SPI_SRC_CLK (48000000U) /*! 时钟源频率*/&lt;BR /&gt;#define FMC_BSP_SPI_LSBFIRST (FALSE) /*! MSB OR LSB*/&lt;BR /&gt;#define FMC_BSP_SPI_CLOCK_PHASE (LPSPI_CLOCK_PHASE_1ST_EDGE) /*! 数据在时钟的第几个边沿传输*/&lt;BR /&gt;#define FMC_BSP_SPI_SCK_PHASE (LPSPI_SCK_ACTIVE_HIGH) /*! CLK 极性*/&lt;BR /&gt;#define FMC_BSP_SPI_TRANSFER_TYPE (LPSPI_USING_INTERRUPTS) /*! DMA还是中断*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;uint8_t FmcBspEthSpiPortCfg(PORT_Type *pPort, uint32_t u32Index,port_drive_strength_t tpds, port_mux_t tMux,uint8_t CSInit,uint8_t direc)&lt;BR /&gt;{&lt;BR /&gt;pin_settings_config_t tPinCtg;&lt;BR /&gt;//参数设置&lt;BR /&gt;memset(&amp;amp;tPinCtg, 0 ,sizeof(tPinCtg));&lt;BR /&gt;tPinCtg.base = pPort;&lt;BR /&gt;tPinCtg.pinPortIdx = u32Index;&lt;BR /&gt;tPinCtg.pullConfig = PORT_INTERNAL_PULL_NOT_ENABLED;&lt;BR /&gt;tPinCtg.passiveFilter = false;&lt;BR /&gt;tPinCtg.driveSelect = tpds;&lt;BR /&gt;tPinCtg.mux = tMux;&lt;BR /&gt;tPinCtg.pinLock = false;&lt;BR /&gt;tPinCtg.intConfig = PORT_DMA_INT_DISABLED;&lt;BR /&gt;tPinCtg.clearIntFlag = false;&lt;BR /&gt;tPinCtg.gpioBase = NULL;&lt;BR /&gt;if(CSInit==1)//ETH1&lt;BR /&gt;{&lt;BR /&gt;tPinCtg.gpioBase = PTE;&lt;BR /&gt;}&lt;BR /&gt;else if(CSInit==2)//ETH2&lt;BR /&gt;{&lt;BR /&gt;tPinCtg.gpioBase = PTB;&lt;BR /&gt;}&lt;BR /&gt;if(direc==1)&lt;BR /&gt;{&lt;BR /&gt;tPinCtg.direction = GPIO_INPUT_DIRECTION;&lt;BR /&gt;}&lt;BR /&gt;else if(direc==2)&lt;BR /&gt;{&lt;BR /&gt;tPinCtg.direction = GPIO_OUTPUT_DIRECTION;&lt;BR /&gt;}&lt;BR /&gt;PINS_Init(&amp;amp;tPinCtg);&lt;BR /&gt;return TRUE;&lt;BR /&gt;}&lt;BR /&gt;/**************************************************************************//**&lt;BR /&gt;* 获取SPI的配置参数&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt;&lt;BR /&gt;* pCfg 参数存放地址&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt;&lt;BR /&gt;* uIndex SPI的设备索引&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt;&lt;BR /&gt;* uBaudRate 波特率 KbpS&lt;BR /&gt;*&lt;BR /&gt;* @retval&lt;BR /&gt;* BOOL&lt;BR /&gt;* @return&lt;BR /&gt;* 函数执行结果，成功执行，返回TRUE&lt;BR /&gt;*******************************************************************************/&lt;BR /&gt;uint8_t FmcBspEthSpiGetCfg(lpspi_master_config_t *pCfg, uint8_t uIndex, uint32_t uBaudRate)&lt;BR /&gt;{&lt;BR /&gt;uint8_t bRet = FALSE;&lt;BR /&gt;pCfg-&amp;gt;bitsPerSec = uBaudRate;&lt;BR /&gt;pCfg-&amp;gt;isPcsContinuous = false;&lt;BR /&gt;pCfg-&amp;gt;rxDMAChannel = 255;&lt;BR /&gt;pCfg-&amp;gt;txDMAChannel = 255;&lt;BR /&gt;pCfg-&amp;gt;callback = NULL;&lt;BR /&gt;pCfg-&amp;gt;callbackParam = NULL;&lt;/P&gt;&lt;P&gt;pCfg-&amp;gt;pcsPolarity = FMC_BSP_SPI_PCS_POL;&lt;BR /&gt;pCfg-&amp;gt;bitcount = FMC_BSP_SPI_BITCOUNT;&lt;BR /&gt;pCfg-&amp;gt;lpspiSrcClk = FMC_BSP_SPI_SRC_CLK;&lt;BR /&gt;pCfg-&amp;gt;clkPhase = FMC_BSP_SPI_CLOCK_PHASE;&lt;BR /&gt;pCfg-&amp;gt;clkPolarity = FMC_BSP_SPI_SCK_PHASE;&lt;BR /&gt;pCfg-&amp;gt;lsbFirst = FMC_BSP_SPI_LSBFIRST;&lt;BR /&gt;pCfg-&amp;gt;transferType = FMC_BSP_SPI_TRANSFER_TYPE;&lt;BR /&gt;if(uIndex==0)&lt;BR /&gt;{&lt;BR /&gt;pCfg-&amp;gt;whichPcs = FMC_BSP_SPI0_PCS;&lt;BR /&gt;}&lt;BR /&gt;else if(uIndex==1)&lt;BR /&gt;{&lt;BR /&gt;pCfg-&amp;gt;whichPcs = FMC_BSP_SPI1_PCS;&lt;BR /&gt;}&lt;BR /&gt;bRet = TRUE;&lt;BR /&gt;return bRet;&lt;BR /&gt;}&lt;BR /&gt;/**************************************************************************//**&lt;BR /&gt;* 获取SPI状态的存取结构体&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt;&lt;BR /&gt;* eIndex SPI的设备索引&lt;BR /&gt;* @retval&lt;BR /&gt;* lpspi_state_t*&lt;BR /&gt;* @return&lt;BR /&gt;* 函数执行结果，成功执行非NULL&lt;BR /&gt;*******************************************************************************/&lt;BR /&gt;lpspi_state_t *FmcBspEthGetSpiStateStruct(uint8_t uIndex)&lt;BR /&gt;{&lt;BR /&gt;lpspi_state_t *pState = NULL;&lt;BR /&gt;if(uIndex==0)&lt;BR /&gt;{&lt;BR /&gt;pState = &amp;amp;g_spi0State;&lt;BR /&gt;}&lt;BR /&gt;else if(uIndex==1)&lt;BR /&gt;{&lt;BR /&gt;pState = &amp;amp;g_spi1State;&lt;BR /&gt;}&lt;BR /&gt;return pState;&lt;BR /&gt;}&lt;BR /&gt;/**************************************************************************//**&lt;BR /&gt;* 初始化SPI外设&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt;&lt;BR /&gt;* uIndex SPI的设备索引&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt;&lt;BR /&gt;* uBaudRate SPI的波特率&lt;BR /&gt;* @retval&lt;BR /&gt;* BOOL&lt;BR /&gt;* @return&lt;BR /&gt;* 函数执行结果，若成功则返回TRUE，否则返回FLASE&lt;BR /&gt;*******************************************************************************/&lt;BR /&gt;uint8_t FmcBspEthSpiMasterInit(uint8_t uIndex, uint32_t uBaudRate)&lt;BR /&gt;{&lt;BR /&gt;lpspi_master_config_t spiCfg;&lt;BR /&gt;lpspi_state_t *pState;&lt;BR /&gt;if( FALSE == FmcBspEthSpiGetCfg(&amp;amp;spiCfg, uIndex, uBaudRate) ) {&lt;BR /&gt;return FALSE;&lt;BR /&gt;}&lt;BR /&gt;pState = FmcBspEthGetSpiStateStruct(uIndex);&lt;BR /&gt;if( NULL == pState ) {&lt;BR /&gt;return FALSE;&lt;BR /&gt;}&lt;BR /&gt;if( STATUS_SUCCESS == LPSPI_DRV_MasterInit(uIndex, pState, &amp;amp;spiCfg) ) {&lt;BR /&gt;return TRUE;&lt;BR /&gt;}&lt;BR /&gt;return FALSE;&lt;BR /&gt;}&lt;BR /&gt;//spi_clock&lt;BR /&gt;void FmcBspEthClockSPIInit(void)&lt;BR /&gt;{&lt;BR /&gt;peripheral_clock_config_t Spi0Clk = {&lt;BR /&gt;.clockName = PCC_LPSPI0_CLOCK,&lt;BR /&gt;.clkGate = true,&lt;BR /&gt;.clksrc=CLK_SRC_FIRC,&lt;BR /&gt;.frac = MULTIPLY_BY_ONE,&lt;BR /&gt;.divider = DIVIDE_BY_ONE,&lt;BR /&gt;};&lt;BR /&gt;peripheral_clock_config_t Spi1Clk = {&lt;BR /&gt;.clockName = PCC_LPSPI1_CLOCK,&lt;BR /&gt;.clkGate = true,&lt;BR /&gt;.clksrc=CLK_SRC_FIRC,&lt;BR /&gt;.frac = MULTIPLY_BY_ONE,&lt;BR /&gt;.divider = DIVIDE_BY_ONE,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;/* Disable the peripheral clock */&lt;BR /&gt;PCC_SetClockMode(PCC, Spi0Clk.clockName, false);&lt;BR /&gt;PCC_SetClockMode(PCC, Spi1Clk.clockName, false);&lt;/P&gt;&lt;P&gt;/* Set peripheral clock control */&lt;BR /&gt;PCC_SetPeripheralClockControl(PCC,&lt;BR /&gt;Spi0Clk.clockName,&lt;BR /&gt;Spi0Clk.clkGate,&lt;BR /&gt;Spi0Clk.clkSrc,&lt;BR /&gt;Spi0Clk.divider,&lt;BR /&gt;Spi0Clk.frac);&lt;BR /&gt;PCC_SetPeripheralClockControl(PCC,&lt;BR /&gt;Spi1Clk.clockName,&lt;BR /&gt;Spi1Clk.clkGate,&lt;BR /&gt;Spi1Clk.clkSrc,&lt;BR /&gt;Spi1Clk.divider,&lt;BR /&gt;Spi1Clk.frac);&lt;BR /&gt;}&lt;BR /&gt;//IO init&lt;BR /&gt;void FmcEthSpiPortInit(void)&lt;BR /&gt;{&lt;BR /&gt;//ETH1&lt;BR /&gt;//CLK&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH1_SCK_PORT,FMC_BSP_ETH1_SCK_IDX,FMC_BSP_ETH1_SCK_PDS,FMC_BSP_ETH1_SCK_MUX,1,2);&lt;BR /&gt;//MISO&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH1_MISO_PORT,FMC_BSP_ETH1_MISO_IDX,FMC_BSP_ETH1_MISO_PDS,FMC_BSP_ETH1_MISO_MUX,1,1);&lt;BR /&gt;//MOSI&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH1_MOSI_PORT,FMC_BSP_ETH1_MOSI_IDX,FMC_BSP_ETH1_MOSI_PDS,FMC_BSP_ETH1_MOSI_MUX,1,2);&lt;BR /&gt;//CS&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH1_CS_PORT,FMC_BSP_ETH1_CS_IDX,FMC_BSP_ETH1_CS_PDS,FMC_BSP_ETH1_CS_MUX,1,2);&lt;BR /&gt;//初始化IO口状态&lt;BR /&gt;PINS_GPIO_SetPins(FMC_BSP_ETH1_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH1_CS_PIN);&lt;BR /&gt;// PINS_GPIO_SetPins(FMC_BSP_ETH1_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH1_SCK_IDX);//这个怎么不起作用？&lt;BR /&gt;//ETH2&lt;BR /&gt;//CLK&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH2_SCK_PORT,FMC_BSP_ETH2_SCK_IDX,FMC_BSP_ETH2_SCK_PDS,FMC_BSP_ETH2_SCK_MUX,2,2);&lt;BR /&gt;//MISO&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH2_MISO_PORT,FMC_BSP_ETH2_MISO_IDX,FMC_BSP_ETH2_MISO_PDS,FMC_BSP_ETH2_MISO_MUX,2,1);&lt;BR /&gt;//MOSI&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH2_MOSI_PORT,FMC_BSP_ETH2_MOSI_IDX,FMC_BSP_ETH2_MOSI_PDS,FMC_BSP_ETH2_MOSI_MUX,2,2);&lt;BR /&gt;//CS&lt;BR /&gt;FmcBspEthSpiPortCfg(FMC_BSP_ETH2_CS_PORT,FMC_BSP_ETH2_CS_IDX,FMC_BSP_ETH2_CS_PDS,FMC_BSP_ETH2_CS_MUX,2,2);&lt;BR /&gt;//初始化IO口状态&lt;BR /&gt;PINS_GPIO_SetPins(FMC_BSP_ETH2_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH2_CS_PIN);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/***************************************************************************//**&lt;BR /&gt;* 使用片选&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt; uDev,ETH1/ETH2&lt;BR /&gt;* @retval&lt;BR /&gt;* VOID&lt;BR /&gt;* @return&lt;BR /&gt;* VOID&lt;BR /&gt;*******************************************************************************/&lt;BR /&gt;void SpiEthCsEnable(uint8_t uDev)&lt;BR /&gt;{&lt;BR /&gt;if(uDev==0) {&lt;BR /&gt;// PINS_GPIO_SetPins(FMC_BSP_ETH1_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH1_CS_PIN);&lt;BR /&gt;PINS_GPIO_ClearPins(FMC_BSP_ETH1_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH1_CS_PIN);&lt;BR /&gt;} else {&lt;BR /&gt;// PINS_GPIO_SetPins(FMC_BSP_ETH2_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH2_CS_PIN);&lt;BR /&gt;PINS_GPIO_ClearPins(FMC_BSP_ETH2_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH2_CS_PIN);&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;/***************************************************************************//**&lt;BR /&gt;* 失能片选&lt;BR /&gt;* &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/197964"&gt;@Param&lt;/a&gt; uDev,ETH1/ETH2&lt;BR /&gt;* @retval&lt;BR /&gt;* VOID&lt;BR /&gt;* @return&lt;BR /&gt;* VOID&lt;BR /&gt;*******************************************************************************/&lt;BR /&gt;void SpiEthCsDisable(uint8_t uDev)&lt;BR /&gt;{&lt;BR /&gt;if(uDev==0) {&lt;BR /&gt;// PINS_GPIO_ClearPins(FMC_BSP_ETH1_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH1_CS_PIN);&lt;BR /&gt;PINS_GPIO_SetPins(FMC_BSP_ETH1_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH1_CS_PIN);&lt;BR /&gt;} else {&lt;BR /&gt;// PINS_GPIO_ClearPins(FMC_BSP_ETH2_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH2_CS_PIN);&lt;BR /&gt;PINS_GPIO_SetPins(FMC_BSP_ETH2_CS, 1U &amp;lt;&amp;lt; FMC_BSP_ETH2_CS_PIN);&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;</description>
      <pubDate>Wed, 01 Mar 2023 08:32:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/How-to-use-S32K144-SPI0/m-p/1607476#M21032</guid>
      <dc:creator>leonordo</dc:creator>
      <dc:date>2023-03-01T08:32:58Z</dc:date>
    </item>
    <item>
      <title>Re: How to use S32K144 SPI0</title>
      <link>https://community.nxp.com/t5/S32K/How-to-use-S32K144-SPI0/m-p/1607890#M21050</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/212515"&gt;@leonordo&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It is essential to enable the module for its operation.&lt;/P&gt;
&lt;P&gt;I suggest looking at the LPSPI examples included in the SDK and RTD for reference for your project.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;B.R.&lt;/P&gt;
&lt;P&gt;VaneB&lt;/P&gt;</description>
      <pubDate>Wed, 01 Mar 2023 18:30:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/How-to-use-S32K144-SPI0/m-p/1607890#M21050</guid>
      <dc:creator>VaneB</dc:creator>
      <dc:date>2023-03-01T18:30:04Z</dc:date>
    </item>
  </channel>
</rss>

