ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

PixHawk飞控连不上?从USB转串口驱动到Mission Planner完整排查指南

PixHawk飞控连不上?从USB转串口驱动到Mission Planner完整排查指南 第一次把PixHawk插上电脑的人大概率会经历这样一幕Mission Planner安装得很顺利双击打开地面站界面也正常结果点右上角的连接按钮COM口列表里什么都没有或者干脆设备管理器里出现一个黄色感叹号的未知设备。这时候很多人第一反应是“飞控坏了”其实不是。绝大多数情况下问题都不在飞控本身而是出在驱动——更准确地说是电脑和飞控之间那座叫“USB转串口芯片”的桥没有搭起来。这篇东西写给两类人一类是刚拿到PixHawk飞控、正准备刷固件的新手另一类是已经装了Mission Planner、但换了电脑或系统之后死活连不上飞控的老玩家。我会把从地面站安装到驱动排查的完整链路讲清楚重点是USB转串口芯片的判断方法、各类芯片驱动的下载安装、以及几个容易让人查一晚上的隐藏驱动问题。全程不绕弯子直接给能用的方案。1. 连接PixHawk之前先搞清楚USB链路和Mission Planner的关系1.1 一条USB线背后其实是“三个设备”很多新手以为把USB线插上飞控电脑就应该立刻认出飞控。实际上USB线另一头连接的是一个由三部分组成的链路飞控主控芯片STM32、USB转串口芯片、以及Windows系统里的驱动栈。PixHawk飞控的主控芯片和电脑之间并不是用USB协议直接通信的。飞控上的USART串口输出的是TTL电平的UART信号而电脑USB口是差分信号两者协议完全不同。所以飞控板上必须有一颗USB转UART芯片来完成信号转换。这颗芯片才是Windows能不能“认识”飞控的关键。常见的有FTDI、CH340、CP210x、PL2303等方案。这也是为什么很多人会出现“Mission Planner装好了飞控插上去却没反应”的情况——你以为你缺的是地面站软件其实你缺的是让Windows识别那颗转串口芯片的驱动程序。Mission Planner只是上层应用它需要通过COM口和飞控通信而COM口能不能出现完全取决于驱动。1.2 地面站、固件和bootloader的关系搞清楚驱动之后还要理清Mission Planner到底在干什么。Mission Planner简称MP是ArduPilot体系最经典的地面站负责三件事给飞控刷固件、调参数、看飞行数据和规划航线。PixHawk飞控上电后内部有一段bootloader程序它负责监听USB口并等待地面站指令如果没有收到刷写指令就把Flash里的ArduPilot固件正常启动起来。这意味着你连接飞控时其实是MP在和bootloader建立的串口链路上通信。如果驱动层有问题bootloader连枚举都过不去后面的一切都无从谈起。所以排查顺序非常重要先让Windows认出COM口再谈Mission Planner的连接。顺带说一句有人看到“驱动”两个字会联想到“电机驱动”“PMSM驱动板”“TB6612电机驱动模块”这些硬件驱动。这完全是两个概念。飞控上的电机驱动是指通过PWM或DShot信号给电调发送指令属于功率电子范畴而这里说的驱动是Windows系统的软件设备驱动。这两个千万别混不然会越查越偏。2. 判断转串口芯片是哪个VID/PID才是唯一靠谱依据2.1 为什么不能靠“猜”来装驱动新手最容易犯的错误是看到驱动教程就下载一个“万能驱动”或者“驱动精灵”试图一键解决。我的建议是千万不要。驱动精灵这类工具确实能装上一堆常见驱动但也经常给你装上旧版本、带签名问题的驱动更别说捆绑安装的垃圾软件了。更关键的是如果你的飞控板是某家兼容厂做的用的芯片可能和你搜到的那篇教程里的芯片完全不一样装错了驱动照样连不上。正确的做法是让设备管理器告诉你它是什么芯片。每一颗USB转串口芯片都有唯一的VIDVendor ID厂商ID和PIDProduct ID产品IDWindows就是靠这两个编号来识别设备。只要查到这个就能确定该装哪家的驱动。2.2 三步查到VID/PID操作很简单跟着走一遍按Win R输入devmgmt.msc打开设备管理器。把USB线插上飞控观察设备管理器里哪个条目发生了“新增”或“出现黄色感叹号”的变化。通常在“端口(COM和LPT)”或“其他设备”下面。右键点击那个设备可能是“未知设备”或“USB Serial”选“属性”→切换到“详细信息”标签页→把“属性”下拉框选成“硬件ID”你会看到类似USB\VID_1A86PID_7523这样的字符串。拿到VID和PID之后直接按下面这张表对号入座芯片方案VID常见PID设备管理器典型名称驱动来源FTDI系列FT232R/FT231X等04036001、6015USB Serial Port (COMx)FTDI官网VCP驱动WCH沁恒CH3401A867523、5523USB-SERIAL CH340 (COMx)WCH官网最新驱动Silicon Labs CP210x10C4EA60Silicon Labs CP210x USB to UART BridgeSilicon Labs官网Prolific PL2303067B2303PL2303 Serial Port (COMx)Prolific官网如果硬件ID是空的或者提示“设备描述符请求失败”那说明USB枚举层面就已经出问题了后面第4章会专门讲这种情况。2.3 各芯片驱动安装的注意点FTDI方案原版PixHawk和3DR早期出的飞控大多用FTDI方案比如常见的FT231X。FTDI官方的VCP驱动对Windows 10和11支持很好下载对应版本直接安装装完后设备管理器会出现“USB Serial Port (COMx)”。要注意的是FTDI的驱动如果装了复古版本在Win11 22H2以上会碰到签名校验的问题所以尽量用官网最新版不要图省事留着旧安装包。CH340方案这是很多国产兼容PixHawk板的常见选择。CH340驱动在Windows 10/11下大部分情况能自动识别但也有相当一部分系统因为驱动缓存里是旧版导致设备始终带感叹号。遇到这种情况去WCH官网下载最新版驱动支持Win11安装时选择“更新驱动程序”手动指向你下载的驱动目录Windows会更新成新版。装完之后设备管理器会显示“USB-SERIAL CH340 (COMx)”。CP210x方案Silicon Labs的CP2102/CP210x在不少设计比较新的飞控板包括一些Heavy Duty版本上出现过。驱动叫“CP210x Universal Windows Driver”支持Win10/11Silicon Labs官网可以直接下载。这个芯片有个特点Win10第一次插入时会自动装驱动但装的可能是旧版如果你后面遇到“无法启动该设备代码10”手动用官网新版驱动覆盖一下就能解决。PL2303方案我必须单独提醒这个芯片。PL2303有一个著名的“历史遗留问题”早期型号PL2303HXA在Windows 8及以上系统里被官方驱动的签名策略彻底封杀了。也就是说你从Prolific官网下载最新的驱动插上旧版PL2303HXA芯片系统会直接报“设备无法启动”。如果你手头的飞控转接板用的是这个老芯片基本只能靠2013年左右的旧版驱动在Win7上运行或者干脆换一根带FTDI/CH340芯片的线。买配件时千万避开PL2303HXA这个坑。3. Mission Planner安装与首次连飞控的实操顺序3.1 装地面站时的几个隐藏前提很多人觉得Mission Planner安装就是双击下一步但实际上有几个容易踩的地方。第一安装程序右键选择“以管理员身份运行”。Mission Planner安装过程中会注册驱动组件、创建服务如果权限不足装完了可能部分功能异常还找不到原因。第二Windows自带SmartScreen和第三方杀毒软件经常会拦截Mission Planner安装包因为它需要更新组件并读写系统驱动库。我遇到过不止一次用户说“装完了打不开”结果是被杀毒软件静默删除了某个DLL。安装时建议临时关闭实时防护装完再加白名单。第三安装路径最好保持英文。Mission Planner本身对中文路径的兼容性其实比前几年好了一些但它的日志、参数文件、固件缓存都在安装目录下如果路径里有中文偶尔会出现“无法写入文件”的怪问题。没必要跟这个较劲默认路径就好。第四首次运行Mission Planner时Windows防火墙会弹窗询问是否允许访问。请务必同时勾选“专用网络”和“公用网络”并点击允许。很多人直接点了取消结果后面用数传或者UDP转发的时候MP收不到数据又找不到原因。USB直连通常不受影响但为了之后不踩坑这一步别省。3.2 连接顺序和设备管理器检查安装好驱动和地面站之后连接顺序也有讲究。我的建议是先让系统把驱动加载好再插飞控。具体来说重启一次电脑然后插USB线插飞控的电脑后端USB口不要插前置面板观察Windows有没有发出“叮咚”的新设备提示音。然后打开设备管理器看“端口(COM和LPT)”下面是否出现了新的COM口。这里有一个必须提醒的点PixHawk 1代和PixHawk 2代的USB链路比较特殊插上后可能会枚举出两个COM口——一个对应FMU主控一个对应IO协处理器。两个COM口同时出现是正常的不要慌。连接Mission Planner时通常选FMU对应的那个口但Windows设备名里一般不会写着“FMU”所以最笨也最可靠的办法是拔掉USB线看哪个COM口消失它就是你飞控的端口再插上如果出现了两个新增端口就在Mission Planner里逐个试。3.3 MP里的端口选择与首次连接验证打开Mission Planner右上角有一个端口下拉框默认可能是“Auto”或者“COM3”。点开下拉框选择你刚才确认的COM口。波特率这一栏USB连接通常保持115200如果是自动模式会自己探测如果连接不稳定手动指定115200比用Auto更可靠。点击“Connect”按钮之后观察三件事MP右上角状态栏是否从“Disconnected”变成了“Connected或者显示飞控固件版本”。飞控上的LED是否发生变化——正常连接后主控LED会恢复心跳闪烁状态而不是插USB前那种固定的双色状态。在MP的飞行数据页面Flight Data里是否能看到姿态仪表盘随飞控倾斜而转动。如果以上都正常说明链路已经通了。第一次连接成功之后我建议先别急着飞按顺序做三件事检查“初始设置→安装固件”里显示的当前固件版本在“初始设置→必要硬件”里重新校准加速度计和罗盘以及检查遥控器输入。这些步骤在MP界面上都有中文引导跟着走就行。4. 三个最容易让人查一晚上的“隐藏驱动”场景4.1 老平台装Win7后USB口集体失灵Intel USB 3.0驱动这个场景出现的频率远超想象。很多人手里还有老笔记本装了Win7系统插上飞控后发现USB完全没反应鼠标键盘都时好时坏。这时候你先别去折腾CH340和FTDI因为问题根本不在转串口芯片而在USB主控这一层。Intel 6系、7系芯片组时代的老平台在Windows 7系统里默认不带USB 3.0驱动的。设备管理器里通用串行总线控制器下方会有一个带黄色感叹号的“Universal Serial Bus (USB) Controller”或“USB 3.0 eXtensible Host Controller”虽然设备管理器里有个USB 2.0口能勉强用但飞控插在USB 3.0口上就死活不识别。解决方法是去Intel官网下载对应平台的“Intel USB 3.0 eXtensible Host Controller Driver”这是Intel官方出品的主控驱动装完后USB 3.0接口就恢复正常了。如果你的机器是AMD平台也有类似的AMD USB 3.0驱动。注意这个驱动只有Win7/8有需要Win10/11自带inbox驱动不需要手动装。判断方法还是看设备管理器里有没有叹号没有叹号就别乱装。4.2 飞控被识别成“未知USB设备”或DFU模式有一种情况非常迷惑飞控插上去Windows提示“未知USB设备(设备描述符请求失败)”硬件ID里看不到VID/PID或者能看到VID6666之类的厂商ID。这通常意味着飞控已经不在正常的bootloader状态而是进入了DFU模式。什么时候会进DFU常见有两种一是飞控刷固件刷到一半断电bootloader处于一个不完全状态二是某些兼容板在特定情况下上电默认进入DFU等待刷写。这个时候Windows不会把它识别成COM口而是识别成一个STM32 DFU设备。处理方法用Zadig这个工具一个Permission驱动安装工具把STM32 DFU设备的驱动替换成WinUSB或者libusb-win32然后重新打开Mission Planner选择“安装固件→加载自定义固件”MP就能检测到DFU设备并执行刷写。这里要注意Zadig替换驱动之后设备的COM口身份可能会消失等你刷完正常固件需要再把驱动还原成之前的串口驱动。这个操作有点绕但对救砖非常有用。4.3 救砖场景J-Link/ST-Link驱动与SWD刷机如果前面那些都解决不了飞控插上后彻底无响应MP也刷不进固件那就只剩最后一条路通过SWD调试接口直接烧写bootloader。这就要用到J-Link或ST-Link仿真器了。J-Link和ST-Link是ARM单片机调试器J-Link是SEGGER出的ST-Link是ST官方出的。很多玩STM32开发的人手里已经有这些设备。PixHawk系列飞控的PCB上基本都预留了SWD调试焊盘一般是SWDIO、SWCLK、GND、3.3V四个触点。使用流程分三步先把J-Link或ST-Link插到电脑USB口安装对应驱动。J-Link去SEGGER官网下载“J-Link Software and Documentation Pack”装完设备管理器里会出现“J-Link”设备ST-Link去ST官网下载“STM32 ST-LINK Utility”或者直接装“STM32CubeProgrammer”设备管理器里会出现“ST-Link dongle”。然后用杜邦线把仿真器的SWDIO、SWCLK、GND和飞控对应焊盘连起来注意别接反GND必须共地。最后打开烧写工具连接芯片把从ArduPilot官网下载的bootloader bin文件烧写进去。这个操作比前面的驱动安装要硬核得多只建议在“飞控变砖”时执行。正常飞控完全不需要走这条路。但如果你玩PixHawk的时间够长迟早会遇到一次刷写失败或者bootloader被覆盖的情况知道这个流程能帮你省下寄修的成本。5. 驱动装对了还连不上按这个顺序排查5.1 先怀疑线材再怀疑USB口驱动装好、设备管理器也看到COM口了但Mission Planner就是连不上这是新手求助帖里最常见的问题。我的排查顺序从来都是先换线再换口最后才怀疑软件。USB线一定是“数据线”不是“充电线”。很多安卓手机配的线只接了电源正负极没有数据引脚插上飞控后电源灯亮了但系统完全无反应。判断方法很简单拿这根线插手机连电脑看能不能弹出USB调试或者传输文件。不能那就是充电线换一根。另外飞控拔插时尽量插在电脑后置USB口上不要用无源USB Hub。飞控刚上电瞬间的电流需求不小劣质Hub电压一掉枚举就失败了表现就是时而识别时而不识别。5.2 两个COM口到底选哪个前面提到PixHawk可能会枚举出两个COM口这里单独展开一下。很多用户卡在MP连接失败不是因为驱动而是因为选错了COM口。解决思路把两个COM口挨个试一遍总有一个能连上。如果你用了一个COM口连上之后MP显示Connected但几秒钟后自动断开那大概率是串口被另一个进程占用了——最常见的就是你同时开着两个地面站或者某次异常退出后串口没释放。这时候重启电脑再开一个Mission Planner问题通常就消失了。5.3 波特率、防火墙和固件版本的隐藏关系如果COM口选对了还是连不上接下来要检查波特率。ArduPilot的USB口对应参数SERIAL0_BAUD默认值是115200。如果你之前用地面站改过这个参数USB连接会受影响。这种时候Mission Planner的自动波特率探测可能还能找到但如果被改成了一个奇怪的值就得通过数传模块连接飞控把SERIAL0_BAUD改回115200。还有一种情况是MP版本和固件版本不兼容。老版本的Mission Planner比如1.3.x连接新固件Copter 4.5以后时会出现参数加载不全、连接后立即断开、甚至直接报“固件版本不被支持”。解决方法备份参数文件如果以前导出来过升级到最新版MP。官网和Github上的版本都是同步的装新版本之前先卸载旧的装完重启再试。我遇到过用户在旧版本上折腾了两天一换新版立刻连上——别在旧版本上浪费时间。最后提一个被很多人忽略的系统设置Windows的“快速启动”有时会导致USB设备枚举异常。如果飞控之前连接正常某次关机后再次开机突然识别不了试试在“控制面板→电源选项→选择电源按钮的功能”里取消“启用快速启动”然后正常重启一次。这个操作听起来和飞控八竿子打不着但实测确实解决过好几个USB设备时而识别时而不识别的问题。在我处理过的飞控连接问题里驱动问题大约占了一半线材和供电占三成剩下两成才是地面站和固件本身。每次有人带着“飞控坏了”的结论来找我我让他先看一眼设备管理器结果百分之八十都能当场定位到问题。所以新手别慌按这个顺序一点点排查先有COM口再选对口最后再看软硬件版本。等你把这一整套流程走明白以后换电脑、换飞控、换系统都不会再被连接问题卡住。
返回列表