1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #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_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);
- }
- }
|