diff --git a/SpiPorts.c b/SpiPorts.c index 79fbc3d..1420fb0 100644 --- a/SpiPorts.c +++ b/SpiPorts.c @@ -14,14 +14,14 @@ static void vSpiPort_InitSPI1RxTxPin() { //// spi1 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_pull = GPIO_PULL_NONE; GPIO_InitStruct.gpio_mode = GPIO_MODE_MUX; GPIO_InitStruct.gpio_pins = GPIO_PINS_5; gpio_init(GPIOA, &GPIO_InitStruct); gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE5, GPIO_MUX_5); //// spi1 mosi pin - GPIO_InitStruct.gpio_pull = GPIO_PULL_UP; + GPIO_InitStruct.gpio_pull = GPIO_PULL_NONE; GPIO_InitStruct.gpio_pins = GPIO_PINS_7; gpio_init(GPIOA, &GPIO_InitStruct); gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE7, GPIO_MUX_5); @@ -33,7 +33,39 @@ static tSpiPortArtery vSpiPort_InitSPI1(tGpioPin *chipSelect) { } + + +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_NONE; + GPIO_InitStruct.gpio_mode = GPIO_MODE_MUX; + GPIO_InitStruct.gpio_pins = GPIO_PINS_1; + gpio_init(GPIOB, &GPIO_InitStruct); + gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE1, GPIO_MUX_6); + + //// spi2 mosi pin + GPIO_InitStruct.gpio_pull = GPIO_PULL_NONE; + GPIO_InitStruct.gpio_pins = GPIO_PINS_1; + gpio_init(GPIOC, &GPIO_InitStruct); + gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE1, GPIO_MUX_7); +} + +static tSpiPortArtery vSpiPort_InitSPI2(tGpioPin *chipSelect) { + vSpiPort_InitSPI2RxTxPin(); + return vSpiPortInitName(SPI2, SPI_FRAME_8BIT, SPI_MCLK_DIV_32, SPI_CLOCK_POLARITY_LOW, SPI_CLOCK_PHASE_1EDGE, chipSelect); + +} + void SpiPorts_Init(tSpiChipSelectPins *SpiChipSelectPins) { SPI_PORTS.Spi1 = vSpiPort_InitSPI1(&SpiChipSelectPins->spi1ChipSelect); SPI_PORTS.Spi1_IO = vSpiPortGetIo(&SPI_PORTS.Spi1); + + SPI_PORTS.Spi2 = vSpiPort_InitSPI2(&SpiChipSelectPins->spi2ChipSelect); + SPI_PORTS.Spi2_IO = vSpiPortGetIo(&SPI_PORTS.Spi2); } \ No newline at end of file diff --git a/SpiPorts.h b/SpiPorts.h index ca6738b..b7a72d0 100644 --- a/SpiPorts.h +++ b/SpiPorts.h @@ -9,11 +9,15 @@ typedef struct { tGpioPin spi1ChipSelect; + tGpioPin spi2ChipSelect; } tSpiChipSelectPins; typedef struct { tSpiPortArtery Spi1; tSpiPortIO Spi1_IO; + + tSpiPortArtery Spi2; + tSpiPortIO Spi2_IO; } tSpiPorts; extern tSpiPorts SPI_PORTS;