Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // SPI
- //
- #include "spi.h"
- #include "gpio.h"
- #include <stm32f4xx.h>
- // SPI1
- // Выводы: PA5: SCK
- static const TPin SCK = { PA, 5 };
- // Выводы: PA6: MISO
- static const TPin MISO = { PA, 6 };
- // Выводы: PA7: MOSI
- static const TPin MOSI = { PA, 7 };
- // Инициализация модуля SPI
- void spi_Init(void)
- {
- // Альтернативная функция на выводах SCK/MISO/MOSI
- gpio_SetAlternateFunction(&SCK, 5);
- gpio_SetAlternateFunction(&MISO, 5);
- gpio_SetAlternateFunction(&MOSI, 5);
- // Тактирование на модуль SPI
- RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;
- // Настроим скорость передачи: 0b100 (fp / 8)
- SPI1->CR1 &= ~SPI_CR1_BR;
- SPI1->CR1 |= (SPI_CR1_BR_1);
- // Программное управление SS (внутренним)
- SPI1->CR1 |= SPI_CR1_SSI | SPI_CR1_SSM;
- // Установим флаг мастера (MSTR) и разрешения работы (SPE)
- SPI1->CR1 |= SPI_CR1_MSTR | SPI_CR1_SPE;
- }
- // Отправить байт по SPI
- uint8_t spi_Send(uint8_t Data)
- {
- // Отправим
- SPI1->DR = Data;
- // Подождём завершения
- while(!(SPI1->SR & SPI_SR_RXNE)) {}
- // Вернм полученное
- return SPI1->DR;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement