Q:

STM32H7 SPI clock frequency, is not changing with different BaudratePrescaler Value

my SPI kernel clock at 400Mhz and prescaler 256 at this configuration alone, my SPI is generating Clk, MISO,MOSI, CS signals, when I change the Prescaler Value other than this value, none of the signals are generated, the code enters into a Loop, Device busy status is returning. 
With this configuration, only 1.56Mhz SPI clk speed is running. I want to increase the SPI clk speed. Pls help me out.
My SPI Init is as follows:
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_HIGH;
hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
//hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
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 = 7;
hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;

I want to execute the SPI clk at 80 or 100 Mhz which is the max execution speed of SPI in STM32.

A:

I've had the exact same issue and it was due to the GPIO output speed setting. You should check and change it to Very High Speed (register GPIOx_OSPEEDR).

