67 lines
1.9 KiB
C
67 lines
1.9 KiB
C
//
|
|
// Created by cfif on 27.09.22.
|
|
//
|
|
#include "SpiPorts.h"
|
|
#include "n32g45x.h"
|
|
|
|
tSpiPorts SPI_PORTS;
|
|
|
|
static void vSpiPort_InitClocks() {
|
|
|
|
RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_SPI2, ENABLE);
|
|
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_SPI1, ENABLE);
|
|
|
|
}
|
|
|
|
static void vSpiPort_InitSPI2RxTxPin() {
|
|
|
|
GPIO_InitType GPIO_InitStructure;
|
|
// SCLK MOSI
|
|
GPIO_InitStructure.Pin = GPIO_PIN_13 | GPIO_PIN_15;
|
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
GPIO_InitPeripheral(GPIOB, &GPIO_InitStructure);
|
|
|
|
// MISO
|
|
GPIO_InitStructure.Pin = GPIO_PIN_14;
|
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
|
|
GPIO_InitPeripheral(GPIOB, &GPIO_InitStructure);
|
|
|
|
}
|
|
|
|
static void vSpiPort_InitSPI1RxTxPin() {
|
|
|
|
GPIO_InitType GPIO_InitStructure;
|
|
// SCLK MOSI
|
|
GPIO_InitStructure.Pin = GPIO_PIN_5 | GPIO_PIN_7;
|
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
|
|
|
|
// MISO
|
|
GPIO_InitStructure.Pin = GPIO_PIN_6;
|
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
|
|
GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
|
|
|
|
}
|
|
|
|
// Настройка порта акселерометра
|
|
static tSpiPortNation SpiPort_InitSPI2(tGpioPin *chipSelect) {
|
|
vSpiPort_InitSPI2RxTxPin();
|
|
return SpiPort_InitName(SPI2, SPI_DATA_SIZE_8BITS, chipSelect);
|
|
}
|
|
|
|
static tSpiPortNation SpiPort_InitSPI1(tGpioPin *chipSelect) {
|
|
vSpiPort_InitSPI1RxTxPin();
|
|
return SpiPort_InitName(SPI1, SPI_DATA_SIZE_8BITS, chipSelect);
|
|
}
|
|
|
|
void SpiPorts_Init(tAccelPins *accelPins, tFlashPins *flashPins) {
|
|
vSpiPort_InitClocks();
|
|
|
|
SPI_PORTS.accelHW = SpiPort_InitSPI2(&accelPins->spiChipSelect);
|
|
SPI_PORTS.accelIO = SpiPort_GetIo(&SPI_PORTS.accelHW);
|
|
SPI_PORTS.flashHW = SpiPort_InitSPI1(&flashPins->spiChipSelect);
|
|
SPI_PORTS.flashIO = SpiPort_GetIo(&SPI_PORTS.flashHW);
|
|
}
|