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 中測試串口功能。

 

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