static void board_init_spi2(void) { /* Remap SPI2 to DMA channels 6 and 7 */ STM32_SYSCFG_CFGR1 |= (1 << 24); /* Set pin NSS to general purpose output mode (01b). */ /* Set pins SCK, MISO, and MOSI to alternate function (10b). */ STM32_GPIO_MODER(GPIO_B) &= ~0xff000000; STM32_GPIO_MODER(GPIO_B) |= 0xa9000000; /* Set all four pins to alternate function 0 */ STM32_GPIO_AFRH(GPIO_B) &= ~(0xffff0000); /* Set all four pins to output push-pull */ STM32_GPIO_OTYPER(GPIO_B) &= ~(0xf000); /* Set pullup on NSS */ STM32_GPIO_PUPDR(GPIO_B) |= 0x1000000; /* Set all four pins to high speed */ STM32_GPIO_OSPEEDR(GPIO_B) |= 0xff000000; /* Reset SPI2 */ STM32_RCC_APB1RSTR |= (1 << 14); STM32_RCC_APB1RSTR &= ~(1 << 14); /* Enable clocks to SPI2 module */ STM32_RCC_APB1ENR |= STM32_RCC_PB1_SPI2; }
static void pins_init(void) { /* Pin usage: * PA0 (OUT - OD GPIO) : Wakeup on Vnc / Threshold * PA1 (ANALOG - ADC_IN1) : CC sense * PA2 (ANALOG - ADC_IN2) : Current sense * PA3 (ANALOG - ADC_IN3) : Voltage sense * PA4 (OUT - OD GPIO) : PD TX enable * PA5 (AF0 - SPI1_SCK) : TX clock in * PA6 (AF0 - SPI1_MISO) : PD TX * PA7 (AF5 - TIM3_CH2) : PD RX * PA9 (AF1 - UART1_TX) : [DEBUG] UART TX * PA10 (AF1 - UART1_RX) : [DEBUG] UART RX * PA13 (OUT - GPIO) : voltage select[0] * PA14 (OUT - GPIO) : voltage select[1] * PB1 (AF0 - TIM14_CH1) : TX clock out * PF0 (OUT - GPIO) : LM5050 FET driver off * PF1 (OUT - GPIO) : discharge FET */ STM32_GPIO_ODR(GPIO_A) = /* HIGH(0) | */ HIGH(4); STM32_GPIO_AFRL(GPIO_A) = AFx(7, 1); STM32_GPIO_AFRH(GPIO_A) = AFx(9, 1) | AFx(10, 1); STM32_GPIO_OTYPER(GPIO_A) = ODR(0) | ODR(4); STM32_GPIO_OSPEEDR(GPIO_A) = HISPEED(5) | HISPEED(6) | HISPEED(7); STM32_GPIO_MODER(GPIO_A) = OUT(0) | ANALOG(1) | ANALOG(2) | ANALOG(3) | OUT(4) | AF(5) /*| AF(6)*/ | AF(7) | AF(9) | AF(10) | OUT(13) | OUT(14); /* set PF0 / PF1 as output */ STM32_GPIO_ODR(GPIO_F) = 0; STM32_GPIO_MODER(GPIO_F) = OUT(0) | OUT(1); STM32_GPIO_OTYPER(GPIO_F) = 0; /* Set PB1 as AF0 (TIM14_CH1) */ STM32_GPIO_OSPEEDR(GPIO_B) = HISPEED(1); STM32_GPIO_MODER(GPIO_B) = AF(1); }