/**************************************************************************** * boards/arm/stm32wb/nucleo-wb55rg/include/board.h * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. The * ASF licenses this file to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * ****************************************************************************/ #ifndef __BOARDS_ARM_STM32WB_NUCLEO_WB55RG_INCLUDE_BOARD_H #define __BOARDS_ARM_STM32WB_NUCLEO_WB55RG_INCLUDE_BOARD_H /**************************************************************************** * Included Files ****************************************************************************/ #include #ifndef __ASSEMBLY__ # include #endif /* Clocking *****************************************************************/ #include "nucleo-wb55rg.h" /* Do not include STM32WB header files here */ /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ /* DMA Channel/Stream Selections ********************************************/ /* Stream selections are arbitrary for now but might become important in the * future is we set aside more DMA channels/streams. */ /* Values defined in arch/arm/src/stm32wb/hardware/stm32wb_dmamux.h */ #define DMAMAP_SPI1_RX DMAMAP_SPI1_RX_0 /* DMA1 */ #define DMAMAP_SPI1_TX DMAMAP_SPI1_TX_0 /* DMA1 */ /* UART RX DMA configurations */ #define DMAMAP_USART1_RX DMAMAP_USART1_RX_0 /* DMA1 */ /* ADC */ #define DMAMAP_ADC1 DMAMAP_ADC1_0 /* DMA1 */ /* Alternate function pin selections ****************************************/ /* USART */ #define GPIO_USART1_RX GPIO_USART1_RX_2 /* PB7 */ #define GPIO_USART1_TX GPIO_USART1_TX_2 /* PB6 */ /* LPUART */ #define GPIO_LPUART1_RX GPIO_LPUART1_RX_1 /* PA3 */ #define GPIO_LPUART1_TX GPIO_LPUART1_TX_1 /* PA2 */ /* I2C * * The optional _GPIO configurations allow the I2C driver to manually * reset the bus to clear stuck slaves. They match the pin configuration, * but are normally-high GPIOs. */ #define GPIO_I2C1_SCL (GPIO_I2C1_SCL_2 | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET) #define GPIO_I2C1_SDA (GPIO_I2C1_SDA_2 | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET) #define GPIO_I2C1_SCL_GPIO \ (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | \ GPIO_PORTB | GPIO_PIN8) #define GPIO_I2C1_SDA_GPIO \ (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | \ GPIO_PORTB | GPIO_PIN9) /* SPI */ #define GPIO_SPI1_NSS GPIO_SPI1_NSS_2 /* PB2 */ #define GPIO_SPI1_SCK GPIO_SPI1_SCK_2 /* PA5 */ #define GPIO_SPI1_MISO GPIO_SPI1_MISO_1 /* PA6 */ #define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_1 /* PA7 */ /* LEDs * * The Nucleo WB55RG board provides three user LEDs. * * - When the I/O is HIGH value, the LED is on. * - When the I/O is LOW, the LED is off. */ /* LED index values for use with board_userled() */ #define BOARD_LED1 0 /* PB5 */ #define BOARD_LED2 1 /* PB0 */ #define BOARD_LED3 2 /* PB1 */ #define BOARD_NLEDS 3 #define BOARD_LED_BLUE BOARD_LED1 #define BOARD_LED_GREEN BOARD_LED2 #define BOARD_LED_RED BOARD_LED3 /* LED bits for use with board_userled_all() */ #define BOARD_LED1_BIT (1 << BOARD_LED1) #define BOARD_LED2_BIT (1 << BOARD_LED2) #define BOARD_LED3_BIT (1 << BOARD_LED3) /* These LEDs are not used by the board port unless CONFIG_ARCH_LEDS is * defined. In that case, the usage by the board port is defined in * include/board.h and src/stm32_autoleds.c. */ #define LED_STARTED 0 #define LED_HEAPALLOCATE 0 #define LED_IRQSENABLED 0 #define LED_STACKCREATED 1 #define LED_INIRQ 1 #define LED_SIGNAL 2 #define LED_ASSERTION 2 #define LED_PANIC 1 /* Buttons */ #define BUTTON_SW1 0 /* PC4, needs SB47 close */ #define BUTTON_SW2 1 /* PD0 */ #define BUTTON_SW3 2 /* PD1 */ #define NUM_BUTTONS 3 #define BUTTON_SW1_BIT (1 << BUTTON_SW1) #define BUTTON_SW2_BIT (1 << BUTTON_SW2) #define BUTTON_SW3_BIT (1 << BUTTON_SW3) /* Quadrature Encoder */ #define GPIO_TIM2_CH1IN GPIO_TIM2_CH1IN_1 /* PA0 */ #define GPIO_TIM2_CH2IN GPIO_TIM2_CH2IN_1 /* PA1 */ /* PWM output for full bridge */ #define GPIO_TIM1_CH1OUT GPIO_TIM1_CH1OUT_1 /* PA8 */ #define GPIO_TIM1_CH1NOUT GPIO_TIM1_CH1N_2 /* PB13 */ #define GPIO_TIM1_CH2OUT GPIO_TIM1_CH2OUT_1 /* PA9 */ #define GPIO_TIM1_CH2NOUT GPIO_TIM1_CH2N_2 /* PB14 */ /* LPTIM PWM */ #define GPIO_LPTIM1_CH1OUT GPIO_LPTIM1_OUT_3 /* PC1 */ #define GPIO_LPTIM2_CH1OUT GPIO_LPTIM2_OUT_1 /* PA4 */ /**************************************************************************** * Public Data ****************************************************************************/ #ifndef __ASSEMBLY__ #undef EXTERN #if defined(__cplusplus) #define EXTERN extern "C" extern "C" { #else #define EXTERN extern #endif /**************************************************************************** * Public Function Prototypes ****************************************************************************/ /**************************************************************************** * Name: stm32wb_board_initialize * * Description: * All STM32WB architectures must provide the following entry point. * This entry point is called early in the initialization -- after all * memory has been configured and mapped but before any devices have been * initialized. * ****************************************************************************/ void stm32wb_board_initialize(void); #undef EXTERN #if defined(__cplusplus) } #endif #endif /* __ASSEMBLY__ */ #endif /* __BOARDS_ARM_STM32WB_NUCLEO_WB55RG_INCLUDE_BOARD_H */