mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-28 18:07:25 +08:00
[board] Fix chibios common i2c and pwm input (#2897)
* [board] Fix chibios common i2c and pwm input * [board] Fix I2C defines default and px4fmu 5.0 PWM input
This commit is contained in:
@@ -30,6 +30,7 @@
|
||||
* ChibiOS board file generated by the cfg file
|
||||
*/
|
||||
#include "board.h"
|
||||
#include <hal.h>
|
||||
|
||||
/*
|
||||
* Concat macro
|
||||
@@ -299,6 +300,15 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* PWM input
|
||||
*/
|
||||
#define PWM_INPUT1_ICU CONCAT_BOARD_PARAM(ICUD, PWM_INPUT1_TIM)
|
||||
#define PWM_INPUT1_CHANNEL CONCAT_BOARD_PARAM(ICU_CHANNEL_, PWM_INPUT1_TIM_CH)
|
||||
#define PWM_INPUT1_GPIO_PORT PAL_PORT(LINE_PWM_INPUT1)
|
||||
#define PWM_INPUT1_GPIO_PIN PAL_PAD(LINE_PWM_INPUT1)
|
||||
#define PWM_INPUT1_GPIO_AF AF_LINE_PWM_INPUT1
|
||||
|
||||
/**
|
||||
* UART defines
|
||||
*/
|
||||
@@ -435,13 +445,15 @@
|
||||
*/
|
||||
// Digital noise filter: 0 disabled, [0x1 - 0xF] enable up to n t_I2CCLK
|
||||
#define STM32_CR1_DNF(n) ((n & 0x0f) << 8)
|
||||
|
||||
// Timing register
|
||||
#define I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR (STM32_TIMINGR_PRESC(0U) | \
|
||||
STM32_TIMINGR_SCLDEL(10U) | STM32_TIMINGR_SDADEL(0U) | \
|
||||
STM32_TIMINGR_SCLH(34U) | STM32_TIMINGR_SCLL(86U))
|
||||
#define I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR (STM32_TIMINGR_PRESC(1U) | \
|
||||
STM32_TIMINGR_SCLDEL(9U) | STM32_TIMINGR_SDADEL(0U) | \
|
||||
STM32_TIMINGR_SCLH(105U) | STM32_TIMINGR_SCLL(153U))
|
||||
#if defined(STM32F7XX)
|
||||
#define I2C_CFG_100KHZ_TIMINGR (STM32_TIMINGR_PRESC(3U) | STM32_TIMINGR_SCLDEL(8U) | STM32_TIMINGR_SDADEL(1U) | STM32_TIMINGR_SCLH(46U) | STM32_TIMINGR_SCLL(62U)) // 0x30812E3E
|
||||
#define I2C_CFG_400KHZ_TIMINGR (STM32_TIMINGR_PRESC(6U) | STM32_TIMINGR_SCLDEL(0U) | STM32_TIMINGR_SDADEL(0U) | STM32_TIMINGR_SCLH(3U) | STM32_TIMINGR_SCLL(13U)) // 0x6000030D
|
||||
#elif defined(STM32H7XX)
|
||||
#define I2C_CFG_100KHZ_TIMINGR (STM32_TIMINGR_PRESC(0U) | STM32_TIMINGR_SCLDEL(7U) | STM32_TIMINGR_SDADEL(0U) | STM32_TIMINGR_SCLH(124U) | STM32_TIMINGR_SCLL(187U)) // 0x00707CBB
|
||||
#define I2C_CFG_400KHZ_TIMINGR (STM32_TIMINGR_PRESC(0U) | STM32_TIMINGR_SCLDEL(3U) | STM32_TIMINGR_SDADEL(0U) | STM32_TIMINGR_SCLH(16U) | STM32_TIMINGR_SCLL(56U)) // 0x00300F38
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef I2C1_CLOCK_SPEED
|
||||
@@ -450,13 +462,13 @@
|
||||
|
||||
#if I2C1_CLOCK_SPEED == 400000
|
||||
#define I2C1_CFG_DEF { \
|
||||
.timingr = I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
|
||||
.timingr = I2C_CFG_400KHZ_TIMINGR, \
|
||||
.cr1 = STM32_CR1_DNF(0), \
|
||||
.cr2 = 0 \
|
||||
}
|
||||
#elif I2C1_CLOCK_SPEED == 100000
|
||||
#define I2C1_CFG_DEF { \
|
||||
.timingr = I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
|
||||
.timingr = I2C_CFG_100KHZ_TIMINGR, \
|
||||
.cr1 = STM32_CR1_DNF(0), \
|
||||
.cr2 = 0 \
|
||||
}
|
||||
@@ -464,20 +476,19 @@
|
||||
#error "Unknown I2C1 clock speed"
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef I2C2_CLOCK_SPEED
|
||||
#define I2C2_CLOCK_SPEED 400000
|
||||
#endif
|
||||
|
||||
#if I2C2_CLOCK_SPEED == 400000
|
||||
#define I2C2_CFG_DEF { \
|
||||
.timingr = I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
|
||||
.timingr = I2C_CFG_400KHZ_TIMINGR, \
|
||||
.cr1 = STM32_CR1_DNF(0), \
|
||||
.cr2 = 0 \
|
||||
}
|
||||
#elif I2C2_CLOCK_SPEED == 100000
|
||||
#define I2C2_CFG_DEF { \
|
||||
.timingr = I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
|
||||
.timingr = I2C_CFG_100KHZ_TIMINGR, \
|
||||
.cr1 = STM32_CR1_DNF(0), \
|
||||
.cr2 = 0 \
|
||||
}
|
||||
@@ -491,13 +502,13 @@
|
||||
|
||||
#if I2C3_CLOCK_SPEED == 400000
|
||||
#define I2C3_CFG_DEF { \
|
||||
.timingr = I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
|
||||
.timingr = I2C_CFG_400KHZ_TIMINGR, \
|
||||
.cr1 = STM32_CR1_DNF(0), \
|
||||
.cr2 = 0 \
|
||||
}
|
||||
#elif I2C3_CLOCK_SPEED == 100000
|
||||
#define I2C3_CFG_DEF { \
|
||||
.timingr = I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
|
||||
.timingr = I2C_CFG_100KHZ_TIMINGR, \
|
||||
.cr1 = STM32_CR1_DNF(0), \
|
||||
.cr2 = 0 \
|
||||
}
|
||||
@@ -511,13 +522,13 @@
|
||||
|
||||
#if I2C4_CLOCK_SPEED == 400000
|
||||
#define I2C4_CFG_DEF { \
|
||||
.timingr = I2C_FAST_400KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
|
||||
.timingr = I2C_CFG_400KHZ_TIMINGR, \
|
||||
.cr1 = STM32_CR1_DNF(0), \
|
||||
.cr2 = 0 \
|
||||
}
|
||||
#elif I2C4_CLOCK_SPEED == 100000
|
||||
#define I2C4_CFG_DEF { \
|
||||
.timingr = I2C_STD_100KHZ_DNF0_100NS_PCLK54MHZ_TIMINGR, \
|
||||
.timingr = I2C_CFG_100KHZ_TIMINGR, \
|
||||
.cr1 = STM32_CR1_DNF(0), \
|
||||
.cr2 = 0 \
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ PI01 SPI2_SCK SPI AF:SPI2_SCK
|
||||
PI02 SPI2_MISO SPI AF:SPI2_MISO
|
||||
PI03 SPI2_MOSI SPI AF:SPI2_MOSI
|
||||
PI04 SPI_SLAVE8 OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH # SPI5_CS1
|
||||
PI05 RC_INPUT ICU AF:TIM8_CH1
|
||||
PI05 PWM_INPUT1 ICU AF:TIM8_CH1 () # RC_INPUT
|
||||
PI06 SPI_SLAVE9 OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH # SPI6_CS1
|
||||
PI07 SPI_SLAVE10 OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH # SPI6_CS2
|
||||
PI08 SPI_SLAVE11 OUTPUT PUSHPULL SPEED_HIGH FLOATING LEVEL_HIGH # SPI6_CS3
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
#define PI02_SPI2_MISO 2U
|
||||
#define PI03_SPI2_MOSI 3U
|
||||
#define PI04_SPI_SLAVE8 4U
|
||||
#define PI05_RC_INPUT 5U
|
||||
#define PI05_PWM_INPUT1 5U
|
||||
#define PI06_SPI_SLAVE9 6U
|
||||
#define PI07_SPI_SLAVE10 7U
|
||||
#define PI08_SPI_SLAVE11 8U
|
||||
@@ -398,7 +398,7 @@
|
||||
#define LINE_SPI2_MISO PAL_LINE(GPIOI, 2U)
|
||||
#define LINE_SPI2_MOSI PAL_LINE(GPIOI, 3U)
|
||||
#define LINE_SPI_SLAVE8 PAL_LINE(GPIOI, 4U)
|
||||
#define LINE_RC_INPUT PAL_LINE(GPIOI, 5U)
|
||||
#define LINE_PWM_INPUT1 PAL_LINE(GPIOI, 5U)
|
||||
#define LINE_SPI_SLAVE9 PAL_LINE(GPIOI, 6U)
|
||||
#define LINE_SPI_SLAVE10 PAL_LINE(GPIOI, 7U)
|
||||
#define LINE_SPI_SLAVE11 PAL_LINE(GPIOI, 8U)
|
||||
@@ -1258,7 +1258,7 @@
|
||||
PIN_MODE_ALTERNATE(PI02_SPI2_MISO) | \
|
||||
PIN_MODE_ALTERNATE(PI03_SPI2_MOSI) | \
|
||||
PIN_MODE_OUTPUT(PI04_SPI_SLAVE8) | \
|
||||
PIN_MODE_ALTERNATE(PI05_RC_INPUT) | \
|
||||
PIN_MODE_ALTERNATE(PI05_PWM_INPUT1) | \
|
||||
PIN_MODE_OUTPUT(PI06_SPI_SLAVE9) | \
|
||||
PIN_MODE_OUTPUT(PI07_SPI_SLAVE10) | \
|
||||
PIN_MODE_OUTPUT(PI08_SPI_SLAVE11) | \
|
||||
@@ -1275,7 +1275,7 @@
|
||||
PIN_OTYPE_PUSHPULL(PI02_SPI2_MISO) | \
|
||||
PIN_OTYPE_PUSHPULL(PI03_SPI2_MOSI) | \
|
||||
PIN_OTYPE_PUSHPULL(PI04_SPI_SLAVE8) | \
|
||||
PIN_OTYPE_PUSHPULL(PI05_RC_INPUT) | \
|
||||
PIN_OTYPE_PUSHPULL(PI05_PWM_INPUT1) | \
|
||||
PIN_OTYPE_PUSHPULL(PI06_SPI_SLAVE9) | \
|
||||
PIN_OTYPE_PUSHPULL(PI07_SPI_SLAVE10) | \
|
||||
PIN_OTYPE_PUSHPULL(PI08_SPI_SLAVE11) | \
|
||||
@@ -1292,7 +1292,7 @@
|
||||
PIN_OSPEED_SPEED_HIGH(PI02_SPI2_MISO) | \
|
||||
PIN_OSPEED_SPEED_HIGH(PI03_SPI2_MOSI) | \
|
||||
PIN_OSPEED_SPEED_HIGH(PI04_SPI_SLAVE8) | \
|
||||
PIN_OSPEED_SPEED_HIGH(PI05_RC_INPUT) | \
|
||||
PIN_OSPEED_SPEED_HIGH(PI05_PWM_INPUT1) | \
|
||||
PIN_OSPEED_SPEED_HIGH(PI06_SPI_SLAVE9) | \
|
||||
PIN_OSPEED_SPEED_HIGH(PI07_SPI_SLAVE10) | \
|
||||
PIN_OSPEED_SPEED_HIGH(PI08_SPI_SLAVE11) | \
|
||||
@@ -1309,7 +1309,7 @@
|
||||
PIN_PUPDR_FLOATING(PI02_SPI2_MISO) | \
|
||||
PIN_PUPDR_FLOATING(PI03_SPI2_MOSI) | \
|
||||
PIN_PUPDR_FLOATING(PI04_SPI_SLAVE8) | \
|
||||
PIN_PUPDR_FLOATING(PI05_RC_INPUT) | \
|
||||
PIN_PUPDR_FLOATING(PI05_PWM_INPUT1) | \
|
||||
PIN_PUPDR_FLOATING(PI06_SPI_SLAVE9) | \
|
||||
PIN_PUPDR_FLOATING(PI07_SPI_SLAVE10) | \
|
||||
PIN_PUPDR_FLOATING(PI08_SPI_SLAVE11) | \
|
||||
@@ -1326,7 +1326,7 @@
|
||||
PIN_ODR_LEVEL_HIGH(PI02_SPI2_MISO) | \
|
||||
PIN_ODR_LEVEL_HIGH(PI03_SPI2_MOSI) | \
|
||||
PIN_ODR_LEVEL_HIGH(PI04_SPI_SLAVE8) | \
|
||||
PIN_ODR_LEVEL_HIGH(PI05_RC_INPUT) | \
|
||||
PIN_ODR_LEVEL_HIGH(PI05_PWM_INPUT1) | \
|
||||
PIN_ODR_LEVEL_HIGH(PI06_SPI_SLAVE9) | \
|
||||
PIN_ODR_LEVEL_HIGH(PI07_SPI_SLAVE10) | \
|
||||
PIN_ODR_LEVEL_HIGH(PI08_SPI_SLAVE11) | \
|
||||
@@ -1343,7 +1343,7 @@
|
||||
PIN_AFIO_AF(PI02_SPI2_MISO, 5) | \
|
||||
PIN_AFIO_AF(PI03_SPI2_MOSI, 5) | \
|
||||
PIN_AFIO_AF(PI04_SPI_SLAVE8, 0) | \
|
||||
PIN_AFIO_AF(PI05_RC_INPUT, 3) | \
|
||||
PIN_AFIO_AF(PI05_PWM_INPUT1, 3) | \
|
||||
PIN_AFIO_AF(PI06_SPI_SLAVE9, 0) | \
|
||||
PIN_AFIO_AF(PI07_SPI_SLAVE10, 0))
|
||||
|
||||
@@ -1690,8 +1690,8 @@
|
||||
#define AF_LINE_SPI2_MISO 5U
|
||||
#define AF_PI03_SPI2_MOSI 5U
|
||||
#define AF_LINE_SPI2_MOSI 5U
|
||||
#define AF_PI05_RC_INPUT 3U
|
||||
#define AF_LINE_RC_INPUT 3U
|
||||
#define AF_PI05_PWM_INPUT1 3U
|
||||
#define AF_LINE_PWM_INPUT1 3U
|
||||
#define AF_PI09_CAN1_RX 9U
|
||||
#define AF_LINE_CAN1_RX 9U
|
||||
|
||||
@@ -1761,6 +1761,10 @@
|
||||
#define SERVO8_TIM_FN CH
|
||||
#define SERVO8_TIM_CH 2
|
||||
#define SERVO8_TIM_AF 9
|
||||
#define PWM_INPUT1_TIM 8
|
||||
#define PWM_INPUT1_TIM_FN CH
|
||||
#define PWM_INPUT1_TIM_CH 1
|
||||
#define PWM_INPUT1_TIM_AF 3
|
||||
|
||||
#define BOARD_GROUP_DECLFOREACH(line, group) \
|
||||
static const ioline_t group ## _ARRAY[] = {group}; \
|
||||
@@ -1777,15 +1781,6 @@
|
||||
#define BOARD_GROUP_FOR(array, index, group) \
|
||||
for (ioline_t index=0, *array = (ioline_t *) group ## _ARRAY; index < group ## _SIZE; index++)
|
||||
|
||||
#define ENERGY_SAVE_LOWS \
|
||||
LINE_V3V3_SENSORS_EN, \
|
||||
LINE_V3V3_SPEKTRUM_EN, \
|
||||
LINE_V5V_HIPOWER_EN, \
|
||||
LINE_V5V_PERIPH_EN, \
|
||||
LINE_V5V_RC_EN, \
|
||||
LINE_V5V_WIFI_EN
|
||||
#define ENERGY_SAVE_LOWS_SIZE 6
|
||||
|
||||
#define ENERGY_SAVE_INPUTS \
|
||||
LINE_SERVO2, \
|
||||
LINE_LED1, \
|
||||
@@ -1818,6 +1813,15 @@
|
||||
LINE_SPI_SLAVE13
|
||||
#define ENERGY_SAVE_INPUTS_SIZE 29
|
||||
|
||||
#define ENERGY_SAVE_LOWS \
|
||||
LINE_V3V3_SENSORS_EN, \
|
||||
LINE_V3V3_SPEKTRUM_EN, \
|
||||
LINE_V5V_HIPOWER_EN, \
|
||||
LINE_V5V_PERIPH_EN, \
|
||||
LINE_V5V_RC_EN, \
|
||||
LINE_V5V_WIFI_EN
|
||||
#define ENERGY_SAVE_LOWS_SIZE 6
|
||||
|
||||
#if !defined(_FROM_ASM_)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
Reference in New Issue
Block a user