#include "spi_bridge.h" #include "oled_config.h" SPI_HandleTypeDef hspi2; // void spi_bridge_init(void) { hspi2.Instance = SPI2; hspi2.Init.Mode = SPI_MODE_MASTER; hspi2.Init.Direction = SPI_DIRECTION_2LINES; hspi2.Init.DataSize = SPI_DATASIZE_8BIT; hspi2.Init.CLKPolarity = SPI_POLARITY_LOW; hspi2.Init.CLKPhase = SPI_PHASE_1EDGE; hspi2.Init.NSS = SPI_NSS_SOFT; hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi2.Init.TIMode = SPI_TIMODE_DISABLE; hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; hspi2.Init.CRCPolynomial = 10; HAL_SPI_Init(&hspi2); } // SPI_HandleTypeDef *spi_get_bridge(void) { return &hspi2; } // void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if (hspi->Instance == SPI2) { __HAL_RCC_SPI2_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); // SPI SCK GPIO_InitStruct.Pin = OLED_SPI_SCK_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = OLED_SPI_SCK_AF; HAL_GPIO_Init(OLED_SPI_SCK_PORT, &GPIO_InitStruct); // SPI MOSI GPIO_InitStruct.Pin = OLED_SPI_MOSI_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = OLED_SPI_MOSI_AF; HAL_GPIO_Init(OLED_SPI_MOSI_PORT, &GPIO_InitStruct); // SPI MISO GPIO_InitStruct.Pin = OLED_SPI_MISO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = OLED_SPI_MISO_AF; HAL_GPIO_Init(OLED_SPI_MISO_PORT, &GPIO_InitStruct); // SPI CS GPIO_InitStruct.Pin = OLED_SPI_CS_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; HAL_GPIO_Init(OLED_SPI_CS_PORT, &GPIO_InitStruct); } } // void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle) { if (spiHandle->Instance == SPI2) { __HAL_RCC_SPI2_CLK_DISABLE(); HAL_GPIO_DeInit(OLED_SPI_SCK_PORT, OLED_SPI_SCK_PIN); HAL_GPIO_DeInit(OLED_SPI_MISO_PORT, OLED_SPI_MISO_PIN); HAL_GPIO_DeInit(OLED_SPI_MOSI_PORT, OLED_SPI_MOSI_PIN); HAL_GPIO_DeInit(OLED_SPI_CS_PORT, OLED_SPI_CS_PIN); } }