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