第二章第四节——UARTs和控制台

飞控开发

很多ArduPilot组件依赖UART。它们用于调试输出,遥测,GPS模块和更多。了解如何与通过HAL与UART通信,将帮助您了解了很多ArduPilot代码。

一.5个UART。

该ArduPilot HAL目前定义了5个UART。 HAL的本身并不为这些的UART限定任何特定的角色,但ArduPilot的其他部分假设它们将被分配特定的功能。
•UARTA - 控制台(通常是USB,运行MAVLink遥测)。
•UARTB - 第一个GPS。
•UARTC - 初级遥测(遥测1在Pixhawk,第二个接收机在APM2)。
•UARTD - 二次遥测(遥测2在Pixhawk)。
•UARTE - 第二个GPS。
如果你正在使用ArduPilot HAL写自己的草图,那么你可以使用这些个UART为你喜欢的任何目的,但如果可能的话,你应该尝试使用上面的任务,因为它可以让你更轻松地融入到现有的代码。
有些个UART具有双重角色。
你去看看libraries/AP_HAL/examples/UART_test sketch例子。它打印一个hello消息到所有5个UART。试试在你的主板,看看你可以得到所有使用USB串口适配器显示输出。尝试改变sketch的波特率。

二.调试控制台。

除了这5个UART有一个额外的调试控制台可以在一些平台上。如果你可以告诉你的平台通过检查HAVE_OS_POSIX_IO宏,这样的调试控制台:
#if HAVE_OS_POSIX_IO
::printf("hello console\n");
#endif
如果你有一个板,确实有HAVE_OS_POSIX_IO集(检查AP_HAL/ AP_HAL_Boards.h),然后尝试加入一些:: printf()和其他标准输入输出功能的UART_test sketch。
请注意,在某些主板(如在Pixhawk)hal.console->printf()去到不同的地方:: printf()函数。在Pixhawk hal.console->printf()去到USB端口,而:: printf()的进入专用调试控制台(也运行nsh shell 为 NuttX 进程)。

三.UART函数。

每个UART有一些基础IO函数可用。关键函数是:
•printf - 格式化打印。
•printf_P -字符串格式化打印(在AVR板节省内存)。
•println - 打印和换行。
•write - 写一堆字节。
•read - 读一些字节。
•available - 检查是否有任何字节正在等待。
•txspace - 检查出站缓冲空间有多少可用。
•get_flow_control - 检查UART具有流量控制功能。
copter_home_001-900x400.jpg

0 个评论

要回复文章请先登录注册