当前位置: 首页 > article >正文

BetaFlight统一硬件配置文件研读之serial命令

BetaFlight统一硬件配置文件研读之serial命令

  • 1. 源由
  • 2. 代码分析
  • 3. 实例分析
  • 4. 配置情况
  • 5. 参考资料

统一硬件配置文件的设计是一种非常好的设计模式,可以将硬件和软件的工作进行解耦。

1. 源由

cli命令中serial是对UART串口的配置,通常情况下BetaFlight飞控会有一个USB VCP端口用来处理MSP消息配置飞控,其他端口更具应用来进行配置,所以厂家默认出厂可以不配,由用户根据需要调整。

2. 代码分析

cliSerial
 ├──> <isEmpty(cmdline)> printSerial(DUMP_MASTER, serialConfig(), NULL, NULL); return
 ├──> [Get 1 param: identifier] 
 │   ├──> serialPortConfig_t *currentConfig = serialFindPortConfigurationMutable(val)
 │   └──> portConfig.identifier = val
 ├──> [Get 2 param: functionMask]
 │   └──> portConfig.functionMask = val
 ├──> [Get 3 param: msp_baudrateIndex]
 │   └──> portConfig.msp_baudrateIndex = baudRateIndex
 ├──> [Get 4 param: gps_baudrateIndex]
 │   └──> portConfig.gps_baudrateIndex = baudRateIndex
 ├──> [Get 5 param: telemetry_baudrateIndex]
 │   └──> portConfig.telemetry_baudrateIndex = baudRateIndex
 ├──> [Get 6 param: blackbox_baudrateIndex]
 │   └──> portConfig.blackbox_baudrateIndex = baudRateIndex
 ├──> <validArgumentCount < 6> error return
 ├──> memcpy(currentConfig, &portConfig, sizeof(portConfig))
 └──> cliDumpPrintLinef(0, false, format,
        portConfig.identifier,
        portConfig.functionMask,
        baudRates[portConfig.msp_baudrateIndex],
        baudRates[portConfig.gps_baudrateIndex],
        baudRates[portConfig.telemetry_baudrateIndex],
        baudRates[portConfig.blackbox_baudrateIndex]
        );

程序中实际使用的波特率采用index来记录,节省空间。

const uint32_t baudRates[] = {0, 9600, 19200, 38400, 57600, 115200, 230400, 250000,
        400000, 460800, 500000, 921600, 1000000, 1500000, 2000000, 2470000}; // see baudRate_e

functionMask定义如下,如果需要自定义特殊的端口,可以根据表格选择。

typedef enum {
    FUNCTION_NONE                = 0,
    FUNCTION_MSP                 = (1 << 0),  // 1
    FUNCTION_GPS                 = (1 << 1),  // 2
    FUNCTION_TELEMETRY_FRSKY_HUB = (1 << 2),  // 4
    FUNCTION_TELEMETRY_HOTT      = (1 << 3),  // 8
    FUNCTION_TELEMETRY_LTM       = (1 << 4),  // 16
    FUNCTION_TELEMETRY_SMARTPORT = (1 << 5),  // 32
    FUNCTION_RX_SERIAL           = (1 << 6),  // 64
    FUNCTION_BLACKBOX            = (1 << 7),  // 128
    FUNCTION_TELEMETRY_MAVLINK   = (1 << 9),  // 512
    FUNCTION_ESC_SENSOR          = (1 << 10), // 1024
    FUNCTION_VTX_SMARTAUDIO      = (1 << 11), // 2048
    FUNCTION_TELEMETRY_IBUS      = (1 << 12), // 4096
    FUNCTION_VTX_TRAMP           = (1 << 13), // 8192
    FUNCTION_RCDEVICE            = (1 << 14), // 16384
    FUNCTION_LIDAR_TF            = (1 << 15), // 32768
    FUNCTION_FRSKY_OSD           = (1 << 16), // 65536
    FUNCTION_VTX_MSP             = (1 << 17), // 131072
} serialPortFunction_e;

3. 实例分析

# serial
serial 0 64 115200 57600 0 115200

注:这里其实不配也没有关系,不知道为什么厂家考虑使用了一个串口配置。

4. 配置情况

# help serial
escprog - passthrough esc to serial
	<mode [sk/bl/ki/cc]> <index>
gpspassthrough - passthrough gps to serial
serial - configure serial ports
serialpassthrough - passthrough serial data data from port 1 to VCP / port 2
	<id1> [<baud1>] [<mode1>] [none|<dtr pinio>|reset] [<id2>] [<baud2>] [<mode2>]
  • serial 20:USB VCP用于MSP通信(FUNCTION_MSP),系统默认配置
  • serial 0:厂家配置文件提供
# serial
serial 20 1 115200 57600 0 115200
serial 0 64 115200 57600 0 115200
serial 1 0 115200 57600 0 115200
serial 2 0 115200 57600 0 115200
serial 3 0 115200 57600 0 115200
serial 5 0 115200 57600 0 115200
serial 6 0 115200 57600 0 115200
serial 7 0 115200 57600 0 115200

以下是BetaFlight配置工具呈现的情况:
在这里插入图片描述

5. 参考资料

【1】BetaFlight开源代码框架简介
【2】BetaFlight统一硬件资源简单配置修改
【3】BetaFlight统一硬件配置文件研读


http://www.kler.cn/news/18298.html

相关文章:

  • (8) 支持向量机分类器SVC案例:预测明天是否会下雨
  • 跨境电商支付平台-PingPong Pay(实现收银台模式沙箱支付)
  • 关于WPA3-H2E的技术讲解
  • Verilog概述一:Verilog HDL和 VHDL详细对比
  • JavaWeb综合案例1-2
  • OpenCV实战——根据立体图像计算深度信息
  • JavaScript:二叉树(前序遍历,中序遍历,后序遍历,递归法,统一迭代法)
  • Databend 开源周报第 92 期
  • C关键字解读——volatile, extern, struct, union, enum
  • Unity 向量
  • Linux上安装Elasticsearch
  • 4。计算机组成原理(2)存储系统
  • 理解FPGA的基础知识——逻辑电路
  • 一次业务系统无法使用对应的oracle数据库性能分析过程
  • React条件渲染、列表渲染和组件传值
  • 增强型语言模型——走向通用智能的道路?!?
  • 11 KVM虚拟机配置-配置虚拟设备(存储)
  • PostgreSQL数据库自带的命令行工具--psql
  • Lumerical------S 参数文件格式
  • Qt 制作小程序登录系统(超详细)
  • 浅谈 LRU
  • Web2与Web3开发的不同之处
  • python正则表达式
  • 第二章 Vim编辑器与Shell命令脚本
  • 双线性插值(Bilinear interpolation)原理推导
  • PyQGIS中一次性加载多个shp文件
  • 探索语音识别技术:从自动翻译到智能客服
  • electron打包运行白屏、Can not find modules ‘xxx‘,Dynamic Linking Error
  • JavaWeb ( 六 ) JSP
  • C# 判断文件/目录是否存在