zephyr/drivers/pinmux/stm32/pinmux_stm32f1.h
Armando Visconti 620ff636d4 drivers/pinmux: stm32: (FIX) Force very_high speed to SPIx_SCK gpio
Fix issue #9028: last bit of SPI/I2S transaction may be corrupted.
Impacted STM32 SOC series: F0/F1/F2/F3/F4/L0.

Notes:
- F2/F4/L0: set gpio to very_high speed ('11')
- F0/F3: set gpio to high speed ('11').
- F1: set gpio to 50MHz.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2019-02-07 10:45:10 -06:00

74 lines
3.2 KiB
C

/*
* Copyright (c) 2016 Open-RnD Sp. z o.o.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_DRIVERS_PINMUX_STM32_PINMUX_STM32F1_H_
#define ZEPHYR_DRIVERS_PINMUX_STM32_PINMUX_STM32F1_H_
/**
* @file Header for STM32F1 pin multiplexing helper
*/
/*
* Note:
* The SPIx_SCK pin speed must be set to 50MHz ('11') to avoid last data bit
* corruption which is a known issue of STM32F1 SPI peripheral (see errata
* sheets).
*/
#define STM32F1_PINMUX_FUNC_PA9_USART1_TX STM32_PIN_USART_TX
#define STM32F1_PINMUX_FUNC_PA10_USART1_RX STM32_PIN_USART_RX
#define STM32F1_PINMUX_FUNC_PA2_USART2_TX STM32_PIN_USART_TX
#define STM32F1_PINMUX_FUNC_PA3_USART2_RX STM32_PIN_USART_RX
#define STM32F1_PINMUX_FUNC_PA4_SPI1_MASTER_NSS STM32_PIN_SPI_MASTER_NSS
#define STM32F1_PINMUX_FUNC_PA4_SPI1_MASTER_NSS_OE STM32_PIN_SPI_MASTER_NSS_OE
#define STM32F1_PINMUX_FUNC_PA4_SPI1_SLAVE_NSS STM32_PIN_SPI_SLAVE_NSS
#define STM32F1_PINMUX_FUNC_PA5_SPI1_MASTER_SCK STM32_PIN_SPI_MASTER_SCK | \
STM32_MODE_OUTPUT_MAX_50
#define STM32F1_PINMUX_FUNC_PA5_SPI1_SLAVE_SCK STM32_PIN_SPI_SLAVE_SCK | \
STM32_MODE_OUTPUT_MAX_50
#define STM32F1_PINMUX_FUNC_PA6_SPI1_MASTER_MISO STM32_PIN_SPI_MASTER_MISO
#define STM32F1_PINMUX_FUNC_PA6_SPI1_SLAVE_MISO STM32_PIN_SPI_SLAVE_MISO
#define STM32F1_PINMUX_FUNC_PA7_SPI1_MASTER_MOSI STM32_PIN_SPI_MASTER_MOSI
#define STM32F1_PINMUX_FUNC_PA7_SPI1_SLAVE_MOSI STM32_PIN_SPI_SLAVE_MOSI
#define STM32F1_PINMUX_FUNC_PA11_USB_DM STM32_PIN_USB
#define STM32F1_PINMUX_FUNC_PA12_USB_DP STM32_PIN_USB
#define STM32F1_PINMUX_FUNC_PD5_USART2_TX STM32_PIN_USART_TX
#define STM32F1_PINMUX_FUNC_PD6_USART2_RX STM32_PIN_USART_RX
#define STM32F1_PINMUX_FUNC_PB6_I2C1_SCL STM32_PIN_I2C
#define STM32F1_PINMUX_FUNC_PB7_I2C1_SDA STM32_PIN_I2C
#define STM32F1_PINMUX_FUNC_PB8_I2C1_SCL STM32_PIN_I2C
#define STM32F1_PINMUX_FUNC_PB9_I2C1_SDA STM32_PIN_I2C
#define STM32F1_PINMUX_FUNC_PB10_USART3_TX STM32_PIN_USART_TX
#define STM32F1_PINMUX_FUNC_PB11_USART3_RX STM32_PIN_USART_RX
#define STM32F1_PINMUX_FUNC_PC10_UART4_TX STM32_PIN_USART_TX
#define STM32F1_PINMUX_FUNC_PC11_UART4_RX STM32_PIN_USART_RX
#define STM32F1_PINMUX_FUNC_PB10_I2C2_SCL STM32_PIN_I2C
#define STM32F1_PINMUX_FUNC_PB11_I2C2_SDA STM32_PIN_I2C
#define STM32F1_PINMUX_FUNC_PB12_SPI2_MASTER_NSS STM32_PIN_SPI_MASTER_NSS
#define STM32F1_PINMUX_FUNC_PB12_SPI2_MASTER_NSS_OE STM32_PIN_SPI_MASTER_NSS_OE
#define STM32F1_PINMUX_FUNC_PB12_SPI2_SLAVE_NSS STM32_PIN_SPI_SLAVE_NSS
#define STM32F1_PINMUX_FUNC_PB13_SPI2_MASTER_SCK STM32_PIN_SPI_MASTER_SCK | \
STM32_MODE_OUTPUT_MAX_50
#define STM32F1_PINMUX_FUNC_PB13_SPI2_SLAVE_SCK STM32_PIN_SPI_SLAVE_SCK | \
STM32_MODE_OUTPUT_MAX_50
#define STM32F1_PINMUX_FUNC_PB14_SPI2_MASTER_MISO STM32_PIN_SPI_MASTER_MISO
#define STM32F1_PINMUX_FUNC_PB14_SPI2_SLAVE_MISO STM32_PIN_SPI_SLAVE_MISO
#define STM32F1_PINMUX_FUNC_PB15_SPI2_MASTER_MOSI STM32_PIN_SPI_MASTER_MOSI
#define STM32F1_PINMUX_FUNC_PB15_SPI2_SLAVE_MOSI STM32_PIN_SPI_SLAVE_MOSI
#define STM32F1_PINMUX_FUNC_PA8_PWM1_CH1 STM32_PIN_PWM
#endif /* ZEPHYR_DRIVERS_PINMUX_STM32_PINMUX_STM32F1_H_ */