• Betaflight飞控之4.5版本配置文件调整


    1. 源由

    自BF4.0开始引入抽象硬件配置文件概念后,存在较长一段target原始目标板配置与抽象硬件配置文件的混合存在期。
    2022年AT32芯片被移植到BF代码后,抽象硬件配置文件又经历了一次更新迭代(同时该方法对ROM的需求将会减少使用量)。
    经过确认,接下来的BF4.5版本将会使用迭代更新的抽象硬件配置文件方式对硬件进行描述。

    2. 对比

    本次将针对AOCODARC H7Dual进行对比分析,给出差异化解释。

    2.1 制造商定义

    • BF4.0抽象统一配置文件
    board_name AOCODARCH7DUAL
    manufacturer_id SJET
    
    • 1
    • 2
    • BF4.5抽象统一配置文件
    #define BOARD_NAME        AOCODARCH7DUAL
    #define MANUFACTURER_ID   SJET
    
    • 1
    • 2

    2.2 资源定义

    2.2.1 CPU选型

    • BF4.0抽象统一配置文件
    # Betaflight / STM32H743 (SH74) 4.3.0 Feb  1 2022 / 20:15:46 (3267f0417) MSP API: 1.44
    
    • 1
    • BF4.5抽象统一配置文件
    #define FC_TARGET_MCU     STM32H743
    
    • 1

    2.2.2 引脚定义

    • BF4.0抽象统一配置文件
    resource BEEPER 1 A15
    resource MOTOR 1 B00
    resource MOTOR 2 B01
    resource MOTOR 3 A00
    resource MOTOR 4 A01
    resource MOTOR 5 A02
    resource MOTOR 6 A03
    resource MOTOR 7 D12
    resource MOTOR 8 D13
    resource SERVO 1 E05
    resource SERVO 2 E06
    resource PPM 1 A10
    resource LED_STRIP 1 A08
    resource SERIAL_TX 1 A09
    resource SERIAL_TX 2 D05
    resource SERIAL_TX 3 D08
    resource SERIAL_TX 4 B09
    resource SERIAL_TX 6 C06
    resource SERIAL_TX 7 E08
    resource SERIAL_TX 8 E01
    resource SERIAL_RX 1 A10
    resource SERIAL_RX 2 D06
    resource SERIAL_RX 3 D09
    resource SERIAL_RX 4 B08
    resource SERIAL_RX 6 C07
    resource SERIAL_RX 7 E07
    resource SERIAL_RX 8 E00
    resource I2C_SCL 1 B06
    resource I2C_SCL 2 B10
    resource I2C_SDA 1 B07
    resource I2C_SDA 2 B11
    resource LED 1 E03
    resource LED 2 E04
    resource SPI_SCK 1 A05
    resource SPI_SCK 2 B13
    resource SPI_SCK 3 B03
    resource SPI_SCK 4 E12
    resource SPI_MISO 1 A06
    resource SPI_MISO 2 B14
    resource SPI_MISO 3 B04
    resource SPI_MISO 4 E13
    resource SPI_MOSI 1 D07
    resource SPI_MOSI 2 B15
    resource SPI_MOSI 3 B05
    resource SPI_MOSI 4 E14
    resource ESCSERIAL 1 C07
    resource ADC_BATT 1 C00
    resource ADC_RSSI 1 C05
    resource ADC_CURR 1 C01
    resource ADC_EXT 1 C04
    resource PINIO 1 D10
    resource PINIO 2 D11
    resource FLASH_CS 1 D03
    resource OSD_CS 1 B12
    resource GYRO_EXTI 1 B02
    resource GYRO_EXTI 2 E15
    resource GYRO_CS 1 C15
    resource GYRO_CS 2 E11
    resource USB_DETECT 1 E02
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • BF4.5抽象统一配置文件
    #define BEEPER_PIN           PA15
    #define MOTOR1_PIN           PB0
    #define MOTOR2_PIN           PB1
    #define MOTOR3_PIN           PA0
    #define MOTOR4_PIN           PA1
    #define MOTOR5_PIN           PA2
    #define MOTOR6_PIN           PA3
    #define MOTOR7_PIN           PD12
    #define MOTOR8_PIN           PD13
    #define SERVO1_PIN           PE5
    #define SERVO2_PIN           PE6
    #define RX_PPM_PIN           PA10
    #define LED_STRIP_PIN        PA8
    #define UART1_TX_PIN         PA9
    #define UART2_TX_PIN         PD5
    #define UART3_TX_PIN         PD8
    #define UART4_TX_PIN         PB9
    #define UART6_TX_PIN         PC6
    #define UART7_TX_PIN         PE8
    #define UART8_TX_PIN         PE1
    #define UART1_RX_PIN         PA10
    #define UART2_RX_PIN         PD6
    #define UART3_RX_PIN         PD9
    #define UART4_RX_PIN         PB8
    #define UART6_RX_PIN         PC7
    #define UART7_RX_PIN         PE7
    #define UART8_RX_PIN         PE0
    #define I2C1_SCL_PIN         PB6
    #define I2C2_SCL_PIN         PB10
    #define I2C1_SDA_PIN         PB7
    #define I2C2_SDA_PIN         PB11
    #define LED0_PIN             PE3
    #define LED1_PIN             PE4
    #define SPI1_SCK_PIN         PA5
    #define SPI2_SCK_PIN         PB13
    #define SPI3_SCK_PIN         PB3
    #define SPI4_SCK_PIN         PE12
    #define SPI1_SDI_PIN         PA6
    #define SPI2_SDI_PIN         PB14
    #define SPI3_SDI_PIN         PB4
    #define SPI4_SDI_PIN         PE13
    #define SPI1_SDO_PIN         PD7
    #define SPI2_SDO_PIN         PB15
    #define SPI3_SDO_PIN         PB5
    #define SPI4_SDO_PIN         PE14
    #define ESCSERIAL_PIN        PC7
    #define ADC_VBAT_PIN         PC0
    #define ADC_RSSI_PIN         PC5
    #define ADC_CURR_PIN         PC1
    #define ADC_EXTERNAL1_PIN    PC4
    #define PINIO1_PIN           PD10
    #define PINIO2_PIN           PD11
    #define FLASH_CS_PIN         PD3
    #define MAX7456_SPI_CS_PIN   PB12
    #define GYRO_1_EXTI_PIN      PB2
    #define GYRO_2_EXTI_PIN      PE15
    #define GYRO_1_CS_PIN        PC15
    #define GYRO_2_CS_PIN        PE11
    #define USB_DETECT_PIN       PE2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    2.2.3 IMU芯片

    • BF4.0抽象统一配置文件
    #define USE_ACCGYRO_BMI270
    
    set gyro_1_bustype = SPI
    set gyro_1_spibus = 1
    set gyro_1_sensor_align = CW90
    set gyro_1_align_yaw = 900
    set gyro_2_spibus = 4
    set gyro_2_sensor_align = CW180
    set gyro_2_align_yaw = 1800
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • BF4.5抽象统一配置文件
    #define USE_GYRO
    #define USE_ACC
    #define USE_ACC_SPI_MPU6000
    #define USE_GYRO_SPI_MPU6000
    #define USE_ACCGYRO_BMI270
    #define USE_ACC_SPI_ICM42688P
    #define USE_GYRO_SPI_ICM42688P
    
    #define USE_SPI_GYRO
    #define GYRO_1_SPI_INSTANCE SPI1
    #define GYRO_1_ALIGN CW90_DEG
    #define GYRO_1_ALIGN_YAW 900
    #define GYRO_2_SPI_INSTANCE SPI4
    #define GYRO_2_ALIGN CW180_DEG
    #define GYRO_2_ALIGN_YAW 1800
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    注:配置上增加了对MPU6000/ICM42688P的支持。

    2.2.4 气压计芯片

    • BF4.0抽象统一配置文件
    #define USE_BARO_DPS310
    
    • 1
    • BF4.5抽象统一配置文件
    #define USE_BARO
    #define USE_BARO_BMP280
    #define USE_BARO_MS5611
    #define USE_BARO_DPS310
    
    • 1
    • 2
    • 3
    • 4

    注:配置上增加了对BMP280/MS5611的支持。

    2.2.5 存储芯片

    • BF4.0抽象统一配置文件
    #define USE_FLASH_W25N01G
    set flash_spi_bus = 3
    
    • 1
    • 2
    • BF4.5抽象统一配置文件
    #define USE_FLASH
    #define USE_FLASH_W25N01G
    #define FLASH_SPI_INSTANCE SPI3
    
    • 1
    • 2
    • 3

    2.2.6 OSD芯片

    • BF4.0抽象统一配置文件
    #define USE_MAX7456
    set max7456_spi_bus = 2
    
    • 1
    • 2
    • BF4.5抽象统一配置文件
    #define USE_MAX7456
    #define MAX7456_SPI_INSTANCE SPI2
    
    • 1
    • 2

    2.2.7 ADC DMA

    • BF4.0抽象统一配置文件
    dma ADC 1 8
    # ADC 1: DMA2 Stream 0 Request 9
    dma ADC 3 9
    # ADC 3: DMA2 Stream 1 Request 115
    
    • 1
    • 2
    • 3
    • 4
    • BF4.5抽象统一配置文件
    #define ADC1_DMA_OPT        8
    #define ADC3_DMA_OPT        9
    #define TIMUP1_DMA_OPT      0
    #define TIMUP3_DMA_OPT      2
    #define TIMUP4_DMA_OPT      1
    #define TIMUP5_DMA_OPT      0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.2.8 Timer pin

    • BF4.0抽象统一配置文件
    # timer
    timer A10 AF1
    # pin A10: TIM1 CH3 (AF1)
    timer B00 AF2
    # pin B00: TIM3 CH3 (AF2)
    timer B01 AF2
    # pin B01: TIM3 CH4 (AF2)
    timer A00 AF2
    # pin A00: TIM5 CH1 (AF2)
    timer A01 AF2
    # pin A01: TIM5 CH2 (AF2)
    timer A02 AF2
    # pin A02: TIM5 CH3 (AF2)
    timer A03 AF2
    # pin A03: TIM5 CH4 (AF2)
    timer D12 AF2
    # pin D12: TIM4 CH1 (AF2)
    timer D13 AF2
    # pin D13: TIM4 CH2 (AF2)
    timer D14 AF2
    # pin D14: TIM4 CH3 (AF2)
    timer D15 AF2
    # pin D15: TIM4 CH4 (AF2)
    timer E05 AF4
    # pin E05: TIM15 CH1 (AF4)
    timer E06 AF4
    # pin E06: TIM15 CH2 (AF4)
    timer A08 AF1
    # pin A08: TIM1 CH1 (AF1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • BF4.5抽象统一配置文件
    #define TIMER_PIN_MAPPING \
        TIMER_PIN_MAP( 0, PA10, 1,  0) \
        TIMER_PIN_MAP( 1, PB0 , 2,  0) \
        TIMER_PIN_MAP( 2, PB1 , 2,  1) \
        TIMER_PIN_MAP( 3, PA0 , 2,  2) \
        TIMER_PIN_MAP( 4, PA1 , 2,  3) \
        TIMER_PIN_MAP( 5, PA2 , 2,  4) \
        TIMER_PIN_MAP( 6, PA3 , 2,  5) \
        TIMER_PIN_MAP( 7, PD12, 1,  6) \
        TIMER_PIN_MAP( 8, PD13, 1,  7) \
        TIMER_PIN_MAP( 9, PD14, 1, 12) \
        TIMER_PIN_MAP(10, PD15, 1, -1) \
        TIMER_PIN_MAP(11, PE5 , 1,  0) \
        TIMER_PIN_MAP(12, PE6 , 1, -1) \
        TIMER_PIN_MAP(13, PA8 , 1, 14)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.3 配置定义

    2.3.1 GYRO

    • BF4.0抽象统一配置文件
    set gyro_to_use = BOTH
    
    • 1
    • BF4.5抽象统一配置文件
    #define DEFAULT_GYRO_TO_USE GYRO_CONFIG_USE_GYRO_BOTH
    
    • 1

    2.3.2 mag

    • BF4.0抽象统一配置文件
    set mag_bustype = I2C
    set mag_i2c_device = 1
    
    • 1
    • 2
    • BF4.5抽象统一配置文件
    #define MAG_I2C_INSTANCE (I2CDEV_1)
    
    • 1

    2.3.3 baro

    • BF4.0抽象统一配置文件
    set baro_bustype = I2C
    set baro_i2c_device = 2
    
    • 1
    • 2
    • BF4.5抽象统一配置文件
    #define BARO_I2C_INSTANCE (I2CDEV_2)
    
    • 1

    2.3.4 blackbox

    • BF4.0抽象统一配置文件
    set blackbox_device = SPIFLASH
    
    • 1
    • BF4.5抽象统一配置文件
    #define DEFAULT_BLACKBOX_DEVICE     BLACKBOX_DEVICE_FLASH
    
    • 1

    2.3.5 ADC

    • BF4.0抽象统一配置文件
    set current_meter = ADC
    set battery_meter = ADC
    set ibata_scale = 500
    
    • 1
    • 2
    • 3
    • BF4.5抽象统一配置文件
    #define DEFAULT_CURRENT_METER_SOURCE CURRENT_METER_ADC
    #define DEFAULT_VOLTAGE_METER_SOURCE VOLTAGE_METER_ADC
    #define DEFAULT_CURRENT_METER_SCALE 500
    
    • 1
    • 2
    • 3

    2.3.6 beep

    • BF4.0抽象统一配置文件
    set beeper_inversion = ON
    set beeper_od = OFF
    
    • 1
    • 2
    • BF4.5抽象统一配置文件
    #define BEEPER_INVERTED
    
    • 1

    2.3.7 pinio

    • BF4.0抽象统一配置文件
    set pinio_config = 129,1,1,1
    set pinio_box = 39,40,255,255
    
    • 1
    • 2
    • BF4.5抽象统一配置文件
    #define PINIO1_BOX 40
    #define PINIO2_BOX 41
    
    • 1
    • 2

    2.4 无对应定义

    BF4.0抽象统一配置文件中未找到对应项:

    # dma
    dma TIMUP 1 0
    # TIMUP 1: DMA1 Stream 0 Request 15
    dma TIMUP 3 2
    # TIMUP 3: DMA1 Stream 2 Request 27
    dma TIMUP 4 1
    # TIMUP 4: DMA1 Stream 1 Request 32
    dma TIMUP 5 0
    # TIMUP 5: DMA1 Stream 0 Request 59
    
    
    dma pin A10 0
    # pin A10: DMA1 Stream 0 Request 13
    dma pin B00 0
    # pin B00: DMA1 Stream 0 Request 25
    dma pin B01 1
    # pin B01: DMA1 Stream 1 Request 26
    dma pin A00 2
    # pin A00: DMA1 Stream 2 Request 55
    dma pin A01 3
    # pin A01: DMA1 Stream 3 Request 56
    dma pin A02 4
    # pin A02: DMA1 Stream 4 Request 57
    dma pin A03 5
    # pin A03: DMA1 Stream 5 Request 58
    dma pin D12 6
    # pin D12: DMA1 Stream 6 Request 29
    dma pin D13 7
    # pin D13: DMA1 Stream 7 Request 30
    dma pin D14 12
    # pin D14: DMA2 Stream 4 Request 31
    dma pin E05 0
    # pin E05: DMA1 Stream 0 Request 105
    dma pin A08 14
    # pin A08: DMA2 Stream 6 Request 11
    
    # feature
    feature RX_SERIAL
    feature TELEMETRY
    feature OSD
    
    # serial
    serial 0 64 115200 57600 0 115200
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    3. 预定义

    目前,官方文档尚在整理过程中,详见:How to Create a Flight Controller Configuration File for Betaflight 4.5

    注:以下内容,后续会尽量随着官方文档的补充,进行增减。实时情况,可以参考代码,或者上面官方指南。

    3.1 Serial Configuration

    ValueFunction define
    1MSP_UART
    2GPS_UART
    64SERIALRX_UART
    32SBUS_TELEMETRY_UART
    1024ESC_SENSOR_UART
    2048VTX_SMARTAUDIO_UART
    8192VTX_TRAMP_UART
    131072VTX_MSP_UART
    131073MSP_DISPLAYPORT_UART

    比如:

    #define SERIALRX_UART SERIAL_PORT_USART1
    #define VTX_SMARTAUDIO_UART SERIAL_PORT_USART3
    #define GPS_UART SERIAL_PORT_USART4
    
    • 1
    • 2
    • 3

    3.2 Serial Receiver Provider

    比如:

    #define SERIALRX_PROVIDER CRSF
    
    • 1

    4. 参考资料

    【1】BetaFlight开源代码框架简介
    【2】BetaFlight统一硬件资源简单配置修改
    【3】BetaFlight统一硬件配置文件研读之resource命令
    【4】BetaFlight统一硬件配置文件研读之timer命令
    【6】BetaFlight统一硬件配置文件研读之serial命令
    【7】BetaFlight统一硬件配置文件研读之set命令
    【8】BetaFlight统一硬件配置文件研读之feature命令
    【9】BetaFlight统一硬件配置文件研读之dma命令
    【10】BetaFlight统一硬件AOCODARC H7DUAL配置文件讨论
    【11】BetaFlight飞控AOCODARC-F7MINI固件编译

  • 相关阅读:
    android adb工具命令大全
    十大排序算法C++实现
    软件测试工程师成长记:职场人的职业探寻之路
    Google PLB(Protective Load Balancing) 简评
    PWN入门(3)覆盖堆栈上的变量
    Python学习笔记第二十九天(N维数组(ndarray))
    【leetcode】排序数组中两个数字之和
    Appium和Android常用9种自动化测试框架对比有哪些优势?
    CSS 滚动驱动动画 scroll()
    双碳红利+基建大年 | 图扑深耕水利水电绿色智能装备领域
  • 原文地址:https://blog.csdn.net/lida2003/article/details/133427555