APM学习(9):串口管理

一、串口设置

ArduPilot对串口的管理在

libraries/AP_SerialManager/AP_SerialManager.cpp

文件中实现。在AP_SerialManager.cpp的var_info\[\]中定义了各串口的功能和参数。分别包括

SERIALx_PROTOCOL

SERIALx_BAUD

SERIALx_OPTION

等参数。

SERIALx_PROTOCOL定义了串口的功能,比如用于Mavlink通讯、GPS、云台等。它的取值在AP_SerialManager.h中定义,由一个enum数据类型定义

cpp 复制代码
enum SerialProtocol {
    SerialProtocol_None = -1,
    SerialProtocol_Console = 0, 				// unused
    SerialProtocol_MAVLink = 1,
    SerialProtocol_MAVLink2 = 2,                // do not use - use MAVLink and provide instance of 1
    SerialProtocol_FrSky_D = 3,                 // FrSky D protocol (D-receivers)
    SerialProtocol_FrSky_SPort = 4,             // FrSky SPort protocol (X-receivers)
    SerialProtocol_GPS = 5,
    SerialProtocol_GPS2 = 6,                    // do not use - use GPS and provide instance of 1
    SerialProtocol_AlexMos = 7,
    SerialProtocol_Gimbal = 8,                  // SToRM32, Siyi custom serial protocols
	...

SERIALx_BAUD定义了串口的波特率,通常为57600、115200等数值。在设置参数时有可能会除以1000进行设置。

SERIALx_OPTION定义了串口的一些高级选项,如对数据进行反转、半双工模式、TX/RX 引脚交换等。

ArduPilot默认的串口配置如下

串口 功能 协议 波特率
SERIAL0 控制台/地面站连接(Console) USB端口,固定为MAVLink2 (协议值 2) 115200
SERIAL1 第一数据端口(Telem1) MAVLink2 (协议值 2) 57600
SERIAL2 第二数据端口(Telem2) MAVLink2 (协议值 2) 57600
SERIAL3 第一GPS端口(GPS1) GPS (协议值 5) 230400
SERIAL4 第二GPS端口(GPS2) GPS (协议值 5) 230400
SERIALx(其它) 未定义 None (协议值 -1) 57600

可以通过修改它们的数值设置它们的功能和参数。

二、串口初始化

串口的初始化在AP_Vehicle::setup()函数中实现,顺序大致如下

cpp 复制代码
void AP_Vehicle::setup()
{
	...
	serial_manager.init_console();
	...
	gcs().init();
	...
	serial_manager.init();
	...
	gcs().setup_console();
	...
}

在函数中首先调用serial_manager.init_console()函数来实现对串口0(Console)进行初始化。后面调用serial_manager.init()函数,在init()函数中对所有串口进行遍历(从串口1开始),分别根据他们的参数设置进行初始化。上面程序执行过程也进行了GCS对象的初始化,GCS对象负责与地面站的通讯。

相关推荐
lpfasd1236 天前
展厅中控总体架构
go·串口·中控
sunoo-2297 天前
【嵌入式裸机开发Day04】i.MX6ULL 蜂鸣器驱动详解:从引脚地址查找到代码实现全流程
arm开发·单片机·嵌入式硬件·学习·串口·裸机
橘色的喵9 天前
USB枚举、协商、传输:以USB相机为例看识别与格式协商
串口·usb·设备枚举
xx~t13 天前
嵌入式——单片机2
嵌入式硬件·学习·51单片机·串口·蜂鸣器
sunoo-22913 天前
【51单片机实战】温控下位机完整实现:DS18B20采集 + 自定义二进制串口协议 + PWM声光告
笔记·学习·51单片机·串口
橘色的喵13 天前
XCOM:一个 4 MB 的串口调试工具
串口·lua·串口工具·xcom
susplus14 天前
【51单片机通信协议】串口
51单片机·串口·嵌入式·通信协议
派勤电子24 天前
多串口工控主板选型:分清原生板载与扩展COM,少走选型弯路
串口·工控主板·工控硬件·多串口工控主板·mini‑itx·3.5寸板·matx主板
csdn_aspnet1 个月前
C# 多个串口多个线程发送数据和接收数据
c#·串口·thread·com·serialport
深念Y1 个月前
无头电视盒子改服务器调优记录
linux·运维·服务器·串口·嵌入式·电视盒子·海思