Ishmeet
Ishmeet

Reputation: 1620

STM32F401 Nucleo SPI Clock issue, using STM32CubeF4

STM32F401RE --> CortexM4 I am using SPI1 with HAL low level drivers, STM32CubeF4. I have used the following SPI configuration:-

SPI_HandleTypeDef hspi;
hspi.Instance=SPI1;
hspi.Init.Mode=SPI_MODE_MASTER;
hspi.Init.Direction=SPI_DIRECTION_2LINES;
hspi.Init.DataSize=SPI_DATASIZE_8BIT;
hspi.Init.CLKPolarity=SPI_POLARITY_HIGH;
hspi.Init.CLKPhase=SPI_PHASE_1EDGE;
hspi.Init.NSS=SPI_NSS_SOFT;
hspi.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_256;
hspi.Init.FirstBit=SPI_FIRSTBIT_MSB;
hspi.Init.TIMode=SPI_TIMODE_ENABLED;
hspi.Init.CRCCalculation=SPI_CRCCALCULATION_DISABLED;
hspi.Init.CRCPolynomial=0;
HAL_SPI_Init(&hspi);

After sending some bytes on MOSI. On logic analyzer, I see clock and MOSI data are mismatched. This is a very zoomed in pic, If required I can send the whole logic analyzer file.

enter image description here

For read and write, I am using HAL_spi_transmit(&hspi, Byte, 1, 5); HAL_spi_Receive(&hspi, Byte, 1, 5);

I did the almost same spi configuration with stm32l151rct6a, using std periph library and it is working.

Question: Why is the clock not synchronised with MOSI?

Upvotes: 0

Views: 2551

Answers (1)

glglgl
glglgl

Reputation: 91119

I could imagine that there is just a command flow like

SET_SCK_HIGH();
SET_MOSI_HIGH();

in the master, and thus the effects are visible at a slightly different time.

Upvotes: 0

Related Questions