STM32H7 SPI时钟频率,不会随着不同的BaudratePrescaler值而变化

时间:2019-09-03 10:34:18

标签: c embedded

仅在此配置下,我的SPI内核时钟为400Mhz,预分频器256,我的SPI正在生成Clk,MISO,MOSI,CS信号,当我更改该值以外的预分频器值时,没有信号产生,代码进入循环,设备繁忙状态返回。

使用此配置,仅运行1.56Mhz SPI clk速度。我想提高SPI clk速度。请帮我。

我的SPI初始化如下:

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;

我想以80或100 Mhz执行SPI clk,这是STM32中SPI的最大执行速度。

1 个答案:

答案 0 :(得分:2)

我遇到了完全相同的问题,这是由于GPIO输出速度设置所致。您应该检查并将其更改为“非常高速”(寄存器GPIOx_OSPEEDR)。