轉載:Pixhawk源碼筆記三:串行接口UART和Console

Pixhawk源碼筆記三:串行接口UART和Console

        轉自:新浪@WalkAnt html

第四部分 串行接口UART和Console

        詳細參考:http://dev.ardupilot.com/wiki/learning-ardupilot-uarts-and-the-console/git

        UART很重要,用於調試輸出,數傳、GPS模塊等。github

一、5個UART

        目前共定義了5個UART,他們的用途分別是:函數

  •    uartA – 串行終端,一般是Micro USB接口,運行MAVLink協議。
  •    uartB – GPS1模塊。
  •    uartC – 主數傳接口,也就是Pixhawk telem1接口。
  •    uartD – 次數傳接口,也就是telem2接口。
  •    uartE – GPS2模塊。

        有些UART具有雙重角色,好比經過修改SERIAL2_PROTOCOL參數,能夠將uartD的Mavlink telemetry數傳更改成Frsky telemetry數傳(中國江蘇產數傳)。工具

        測試 libraries/AP_HAL/examples/UART_test目錄下的 example sketch,分別對5個UART都輸出hello 消息。使用USB轉串口工具,能夠測試。oop

二、調試終端Debug console

        做爲5個UART的補充,有些平臺額外的還有一個debug console調試終端。你能夠經過檢查HAL_OS_POSIX_IO宏定義來判斷,諸如:測試

                #if HAL_OS_POSIX_IOurl

                     ::printf("hello console\n");spa

               #endif線程

        若是定義了HAL_OS_POSIX_IO,能夠試着查看AP_HAL/AP_HAL_Boards.h代碼。

三、UART函數

        每一個UART都一系列基本操做函數,主要有:

        1.          printf – formatted print

        2.          printf_P – formatted print with progmem string (saves memory on AVR boards)

        3.          println – print and line feed

        4.          write – write a bunch of bytes

        5.          read – read some bytes

        6.          available – check if any bytes are waiting

        7.          txspace – check how much outgoing buffer space is available

        8.          get_flow_control – check if the UART has flow control capabilities

        能夠到AP_HAL中查看他們的定義,並使用UART_TEST進行測試。

四、UART接口說明

        衆多UART接口,衆多名稱,他們的對應關係,我總結以下,若有問題,歡迎發郵件至30175224@qq.com 新浪@WalkAnt,歡迎指正。

代碼定義

PCB電路表述

飛控板接口

Serial標號

說明

APM代碼中的表述

電路板上的表述

Pixhawk外殼上的標識

串口序號

 

uartA

Micro USB

USB

USB

接USB,支持MAVLink協議

uartB

UART4

GPS

Serial 3

接GPS模塊,另CAN2接口

uartC

UART2

Telem1

Serial 1

接第1數傳模塊

uartD

UART3

Telem2

Serial 2

接第2數傳模塊

uartE

UART8

SERIAL4/5

Serial 4

通常接GPS2模塊

/

UART7

SERIAL4/5

Serial 5

Debug Console用於程序調試

 

前面的文章:

Pixhawk源碼筆記一:APM代碼基本結構:http://blog.sina.com.cn/s/blog_402c071e0102v59r.html

Pixhawk源碼筆記二:APM線程: http://blog.sina.com.cn/s/blog_402c071e0102v5br.html


 通過對UART測試代碼: libraries/AP_HAL/examples/UART_test)進行詳細測試:

void loop(void)

    // Micro USB口輸出: Hello on UART uartA at 764.461 seconds
    test_uart(hal.uartA, "uartA");  

 

    // GPS接口輸出Hello on UART uartB at 91.845 seconds
    test_uart(hal.uartB, "uartB");

 

    // 數傳Telem1輸出Hello on UART uartC at 24.693 seconds
    test_uart(hal.uartC, "uartC");

 

    // 數傳Telem2輸出Hello on UART uartD at 805.557 seconds
    test_uart(hal.uartD, "uartD");

 

    // SEIRAL 4口輸出Hello on UART uartE at 911.812 seconds
    test_uart(hal.uartE, "uartE");

    // also do a raw printf() on some platforms, which prints to the
    // debug console
#if HAL_OS_POSIX_IO

     // SEIRAL 5口輸出: Hello on debug console at 976.857 seconds
    ::printf("Hello on debug console at %.3f seconds\n", hal.scheduler->millis()*0.001f);
#endif

    hal.scheduler->delay(1000);
}

SERIAL 5 做爲重要的調試口。Pixhawk啓動時會經過該接口輸出大量信息,能夠用來對啓動過程進行監控。

相關文章
相關標籤/搜索