Estoy utilizando la biblioteca STM32 SPL con un microcontrolador STM32F103C8. Como parte del proyecto, estoy usando el periférico SPI1 para interactuar con una tarjeta SD.
Inicialmente, la velocidad SPI debe mantenerse a menos de 400 kHz para la tarjeta SD. Mi código de inicialización SPI1 es
SPI_InitTypeDef spi;
//ENABLE THE CLOCK TO SPI1 PERIPHERAL
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
//SET SPI SPEED TO LOW SPEED MODE (~282KHZ)
spi.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
spi.SPI_CPHA = SPI_CPHA_1Edge;
spi.SPI_CPOL = SPI_CPOL_Low;
spi.SPI_DataSize = SPI_DataSize_8b;
spi.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
spi.SPI_FirstBit = SPI_FirstBit_MSB;
spi.SPI_Mode = SPI_Mode_Master;
spi.SPI_NSS = SPI_NSS_Soft;
SPI_Init(SPI1, &spi);
SPI_Cmd(SPI1, ENABLE);
Por supuesto, una vez que se complete la inicialización inicial de la tarjeta SD, me gustaría acelerar el periférico SPI1.
No pude encontrar ninguna función en la SPL que pudiera devolver una estructura del tipo SPI_InitTypeDef
que contenga las configuraciones actualmente configuradas de un periférico SPI.
¿Eso significa que tengo que crear una nueva estructura de este tipo (y repetir todos los valores de configuración incluso si solo deseo cambiar la velocidad y mantener el resto igual a lo configurado) y luego llamar a SPI_Init()
con esta nueva estructura ?