APM学习 7 --- UART和控制台

英文原文地址:https://ardupilot.org/dev/docs/learning-ardupilot-uarts-and-the-console.html

       ArduPilot中的许多组件都依赖UART,用于调试输出、遥测、GPS模块等, 了解HAL与UART通信将帮助您理解许多ArduPilot代码。

8个串口介绍

      ArduPilot HAL 当前定义了 8 个UART。 HAL 本身并未为这些 UART 定义任何特定角色,但是 ArduPilot 的其他部分假定它们将被分配特定的功能。

  • uartA - 控制台(通常是USB,运行MAVLink遥测)
  • uartB - 第一路 GPS
  • uartC - 主遥测(Pixhawk上的telem1,APM2上的第二个无线电)
  • uartD - 二次遥测(Pixhawk上的telem2)
  • uartE - 第二路 GPS
  • uartF - 用户定义
  • uartG - 用户定义
  • uartH - 用户定义

        如果使用 ArduPilot HAL 编写自己的示例,则用户可以自定义这些 UART,使得代码更加灵活方便。

        可以通过更改UART的SERIALn_PROTOCOL参数来更改其角色。可能的参数值为1:None,1:MAVLink1、2:MAVLink2、3:Frsky D,4:Frsky SPort,5:GPS,7:Alexmos Gimbal Serial,8:SToRM32 Gimbal Serial,9:Rangefinder,10:FrSky SPort Passthrough(OpenTX),11:Lidar360、13:Beacon,14:Volz伺服输出,15:SBus伺服输出,16:ESC遥测,17:Devo遥测,18:OpticalFlow,19:RobotisServo,20:NMEA输出,21 :WindVane,22:SLCAN搜索1_PROTOCOL的代码以获取uart角色的更新列表。

      查看库 / AP_HAL / examples / UART_test 示例草图。它向前 5 个UART打印问候消息。在板上尝试一下,看看是否可以使用USB串行适配器显示所有输出,用户可以尝试修改该打印设置或者打印内容,从而加深对串口配置操作的理解。

 

调试控制台

       除了基本的 5 个UART外,在某些平台上还有一个附加的调试控制台。目前调试控制台主要为USB接口。在 SITL 上,调试直接定向到运行SITL的终端,而USB默认情况下定向到端口5760。

      如果设置了HAL_OS_POSIX_IO(请在 AP_HAL / AP_HAL_Boards.h 中进行检查),则尝试在 UART_test 示例中添加一些:: printf()和其他 stdio 函数, 如果:: printf 函数工作不正常,则增加 “ #include <stdio.h>” 引用即可。

     同时,也可以使用hal.console-> printf()指定USB端口。

UART功能

    UART 的主要功能包含以下几点:

  • printf - 格式化打印
  • printf_P - 带有程序字符串的格式化打印(在AVR板上节省内存)
  • println - 打印和换行
  • write - 写字节
  • read - 读字节
  • available - 检查是否有任何字节在等待
  • txspace -   检查有多少发送缓冲区可用
  • get_flow_control - 检查UART是否具有流控制功能

查看 AP_HAL 中每个声明,然后在 UART_test 中测试串口功能。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章