SMART_COMPONENTS_SpiPorts/SpiPorts.c

47 lines
1.6 KiB
C

//
// Created by ilya on 25.03.24.
//
#include "SpiPorts.h"
#include "at32f435_437.h"
tSpiPorts SPI_PORTS;
//todo Проверить правильность инициализации
static void vSpiPort_InitSPI2RxTxPin() {
gpio_init_type GPIO_InitStruct;
gpio_default_para_init(&GPIO_InitStruct);
//// spi2 sck pin
GPIO_InitStruct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
GPIO_InitStruct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
GPIO_InitStruct.gpio_pull = GPIO_PULL_DOWN;
GPIO_InitStruct.gpio_mode = GPIO_MODE_MUX;
GPIO_InitStruct.gpio_pins = GPIO_PINS_13;
gpio_init(GPIOB, &GPIO_InitStruct);
gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE13, GPIO_MUX_5);
//// spi2 miso pin
GPIO_InitStruct.gpio_pull = GPIO_PULL_UP;
GPIO_InitStruct.gpio_pins = GPIO_PINS_14;
gpio_init(GPIOB, &GPIO_InitStruct);
gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE14, GPIO_MUX_5);
//// spi2 mosi pin
GPIO_InitStruct.gpio_pull = GPIO_PULL_UP;
GPIO_InitStruct.gpio_pins = GPIO_PINS_15;
gpio_init(GPIOB, &GPIO_InitStruct);
gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE15, GPIO_MUX_5);
}
static tSpiPortArtery vSpiPort_InitSPI2(tGpioPin *chipSelect) {
GpioPinSet(chipSelect, false);
vSpiPort_InitSPI2RxTxPin();
return vSpiPortInitName(SPI2, SPI_FRAME_8BIT, SPI_MCLK_DIV_16, SPI_CLOCK_POLARITY_HIGH, SPI_CLOCK_PHASE_2EDGE, chipSelect);
}
void SpiPorts_Init(tAccelPins *accelPins) {
SPI_PORTS.accelSpi2 = vSpiPort_InitSPI2(&accelPins->spiChipSelect);
SPI_PORTS.accelSpi2_IO = vSpiPortGetIo(&SPI_PORTS.accelSpi2);
}