fsl Hspi dma driver 0xff read error, device id of slave.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

fsl Hspi dma driver 0xff read error, device id of slave.

505 Views
vi77
Contributor I

Hi,

     I am using lpc55s28 evk , using the demo example of spi_HS_LSPI_dma_b2b_transfer_master as a reference and changed the default spi settings clock .to communicate to my slave mikroe click .

I am trying to read the spi  slave id which is 0x60 but always getting 0xFF instead.

Kindly suggest any solution. Below is the code :

 

static void EXAMPLE_MasterInit(void)
{
/* SPI init */
uint32_t srcClock_Hz = 0U;
spi_master_config_t masterConfig;
srcClock_Hz = EXAMPLE_SPI_MASTER_CLK_FREQ;

SPI_MasterGetDefaultConfig(&masterConfig);
masterConfig.sselNum = (spi_ssel_t)EXAMPLE_SPI_SSEL;
masterConfig.sselPol = (spi_spol_t)EXAMPLE_MASTER_SPI_SPOL;
masterConfig.baudRate_Bps = 500000U;

masterConfig.polarity = kSPI_ClockPolarityActiveHigh;
masterConfig.phase = kSPI_ClockPhaseFirstEdge; //first
masterConfig.direction = kSPI_MsbFirst;
masterConfig.dataWidth = kSPI_Data8Bits;
masterConfig.sselNum = kSPI_Ssel1;
masterConfig.txWatermark = (uint8_t)kSPI_TxFifo0;
masterConfig.rxWatermark = (uint8_t)kSPI_RxFifo1;
masterConfig.sselPol = kSPI_SpolActiveAllLow;

SPI_MasterInit(EXAMPLE_SPI_MASTER, &masterConfig, srcClock_Hz);
}

 

static void EXAMPLE_MasterStartDMATransfer(void)
{
spi_transfer_t masterXfer;
uint32_t i = 0U;

/* Set up the transfer data */

/* SPI is configured for 8 bits transfer - set only lower 8 bits of buffers */

masterTxDatan[0] = 0xD0;    //id register
masterRxDatan[0] = 0U;

/* Set up handle for spi master */
SPI_MasterTransferCreateHandleDMA(EXAMPLE_SPI_MASTER, &masterHandle, SPI_MasterUserCallback, NULL, &masterTxHandle,
&masterRxHandle);

/* Start master transfer */
masterXfer.txData = (uint8_t *)&masterTxDatan;
masterXfer.rxData = (uint8_t *)&masterRxDatan;
masterXfer.dataSize = TRANSFER_SIZE * sizeof(masterTxDatan[0]);
masterXfer.configFlags = kSPI_FrameAssert;

if (kStatus_Success != SPI_MasterTransferDMA(EXAMPLE_SPI_MASTER, &masterHandle, &masterXfer))
{
PRINTF("There is an error when start SPI_MasterTransferDMA \r\n ");
}
}

 

int main(void)
{
/* Initialize board setting. */
/* set BOD VBAT level to 1.65V */
POWER_SetBodVbatLevel(kPOWER_BodVbatLevel1650mv, kPOWER_BodHystLevel50mv, false);
/* attach 12 MHz clock to FLEXCOMM0 (debug console) */
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);

BOARD_InitBootPins();
BOARD_InitBootClocks();
BOARD_InitDebugConsole();


CLOCK_SetClkDiv(kCLOCK_DivPll0Clk, 0U, true); /*!< Reset PLL0DIV divider counter and halt it */
CLOCK_SetClkDiv(kCLOCK_DivPll0Clk, 24U, false); /*!< Set PLL0DIV divider to value 24 */

/*!< Set up clock selectors - Attach clocks to the peripheries */
CLOCK_AttachClk(kPLL0_to_MAIN_CLK); /*!< Switch MAIN_CLK to PLL0 */
CLOCK_AttachClk(kPLL0_DIV_to_HSLSPI); /*!< Switch HSLSPI to PLL0_DIV */

/* reset FLEXCOMM for SPI */
RESET_PeripheralReset(kHSLSPI_RST_SHIFT_RSTn);

/* Print project information. */
PRINTF("This is SPI DMA transfer master example.\r\n");
PRINTF("This example will communicate with another slave SPI on the other board.\r\n");


/* Initialize SPI master with configuration. */
EXAMPLE_MasterInit();
/* Set up DMA for SPI master TX and RX channel. */
EXAMPLE_MasterDMASetup();
/* Prepare DMA and start SPI master transfer in DMA way. */

EXAMPLE_MasterStartDMATransfer();
while (!isTransferCompleted)
{
}
uint32_t i;
for(i = 0 ; i<TRANSFER_SIZE ; i++)
{
PRINTF("masterRxDataan[%d] = %x \r\n",i,masterRxDatan[i]);
}

SPI_Deinit(EXAMPLE_SPI_MASTER);
return 0;
}

 

 

 

Thanks

 

 

 

Labels (1)
0 Kudos
Reply
0 Replies