Reputation: 1620
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.
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
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