Skip to main content
Maksh.1
Associate III
March 10, 2022
Question

Unable to transmit data Via SPI for STM32MP157C Cortex M4

  • March 10, 2022
  • 1 reply
  • 756 views

Hi , iam using STM32mp157C micro processor ,On the cortexM4 i have configured SPI 1

but iam unable to transmit using HAL_SPI_Transmit(), 

i have done some debugging in the spi driver , i found it is always returnning the HAL_TIMEOUT from SPI_WaitOnFlagUntilTimeout();

spi configuration:

 hspi1.Instance = SPI1;

 hspi1.Init.Mode = SPI_MODE_MASTER;

 hspi1.Init.Direction = SPI_DIRECTION_2LINES;

 hspi1.Init.DataSize = SPI_DATASIZE_8BIT;

 hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;

 hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;

 hspi1.Init.NSS = SPI_NSS_HARD_OUTPUT;

 hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;

 hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;

 hspi1.Init.TIMode = SPI_TIMODE_DISABLE;

 hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;

 hspi1.Init.CRCPolynomial = 0x0;

 hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;

 hspi1.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;

 hspi1.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA;

 hspi1.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;

 hspi1.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;

 hspi1.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE;

 hspi1.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE;

 hspi1.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE;

 hspi1.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_ENABLE;

 hspi1.Init.IOSwap = SPI_IO_SWAP_DISABLE;

Any help is appreciated

This topic has been closed for replies.

1 reply

PatrickF
Technical Moderator
March 10, 2022

Hi @Maksh.1​ ,

there is two posts which might help you:

https://community.st.com/s/question/0D53W00001EG6BbSAL/stm32mp157c-spi-dma-transfer-stuck-problem

https://community.st.com/s/question/0D53W00000qvWwoSAE/stm32mp157ca-spi1-clock-does-not-work

Did you generates init code from CubeMx?

Are you doing you tests in 'engineering mode' (i.e. No Linux running, so Cortex-M4 has some more init to do wrt clocks) or 'production mode' (Linux is managing root clocks, and deserve custom DT to enable SPI on M4) ?

Regards.

In order to give better visibility on the answered topics, please click on 'Best Answer' on the reply which solved your issue or answered your question.Tip of the day: Try Sidekick STM32 AI agent
PatrickF
Technical Moderator
April 12, 2022

Hi @Maksh.1​ ,

Do you progress on this subject ?

Regards.

In order to give better visibility on the answered topics, please click on 'Select as Best' on the reply which solved your issue or answered your question. See also 'Best Answers'

In order to give better visibility on the answered topics, please click on 'Best Answer' on the reply which solved your issue or answered your question.Tip of the day: Try Sidekick STM32 AI agent