eurorack/midi2cv/drivers/spi_mode.cc

38 lines
874 B
C++

#include "spi_mode.h"
#include <stm32f37x_conf.h>
uint8_t currentMode = 0;
void InitSPIDisplay(void);
void InitSPI(uint8_t mode)
{
if (currentMode != mode) {
switch (mode) {
case SPI_MODE_DISPLAY:
InitSPIDisplay();
break;
case SPI_MODE_DAC0:
case SPI_MODE_DAC1:
case SPI_MODE_USB:
break;
}
currentMode = mode;
}
}
void InitSPIDisplay(void)
{
SPI_InitTypeDef spi_init;
spi_init.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
spi_init.SPI_Mode = SPI_Mode_Master;
spi_init.SPI_DataSize = SPI_DataSize_8b;
spi_init.SPI_CPOL = SPI_CPOL_High;
spi_init.SPI_CPHA = SPI_CPHA_2Edge;
spi_init.SPI_NSS = SPI_NSS_Soft;
spi_init.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
spi_init.SPI_FirstBit = SPI_FirstBit_MSB;
spi_init.SPI_CRCPolynomial = 7;
SPI_Init(SPI2, &spi_init);
SPI_Cmd(SPI2, ENABLE);
}