=====如何尝试修复无法识别或不能正常工作的XBee模块=====
XBee模块是具有高度可靠性或稳定性的无线模块,从最早的第一批产品算起,许多已经部署在工业现场稳定运行十几年的Xbee模块仍在可靠地运作中。但有时因为操作失误也会导致模块认不出或不能正常使用,这时您应该首先尝试使用Digi原厂的开发底板和XCTU恢复XBee的出厂固件以及默认配置,在大多数场景中,这样就可以修复固件受损的XBee模块。
本文将尝试指导您恢复那些无法使用的模块的固件到出厂状态。在进行接下来的操作中,请确保您有Digi开发套件中的XBee底板,并已经按默认位置安装好XCTU软件,同时保持电脑联网,以便使XCTU软件在线更新到最新版本和最新的固件库。根据您的模块受损情况,您有可能需要同时安装XCTU6.3以上的版本和一个旧版的XCTU软件(版本号5.2.8.6)。
您总是可以在官网上找到最新的XCTU下载地址,建议用断点续传下载工具下载:
http://www.digi.com/products/xbee-rf-solutions/xctu-software/xctu#productsupport
====配置USB转串口驱动优化====
Digi的XBee底板使用的是FTDI的USB转串口芯片,驱动程序默认配置中FTDI芯片是为高速串行设备通信而优化的。而Digi的XBee模块则工作在相对低速的波特率上,当执行特定任务时,比如更新固件或恢复XBee模块出厂固件,如果不修改这些默认为高速通信而优化的配置,有可能会导致升级或恢复失败。如果您使用Digi官网下载的最新驱动,一些情况下优化工作已经在驱动程序安装过程中做好,请点击下面链接查看如何修改FTDI的USB串口转换芯片驱动配置,以减小USB发送大小和延迟时间来满足低速的串口通信需求。
接上Digi的USB开发底板,打开设备管理器,找到对应的USB转成的串口,右键菜单中选择“属性”,选择"串口配置">"高级",如下图所示:\\
{{:digi:rf-wireless:xbee:usb-com-property.png?400|}}
在高级属性中,将USB传输大小的发送和接收值改为64字节,将延时计时器设置成1ms,如下图所示: \\
{{:digi:rf-wireless:xbee:usb2serial-fdti-opt.png?400|}}
点击确定保存,这样就完成了USB转串口芯片工作模式的优化。
====用新版XCTU尝试恢复XBee固件====
当XBee模块无法识别时,您应该首先尝试用新版的XCTU进行恢复出厂固件的操作(XBee Recovery)。您需要知道手中的XBee模块的硬件平台或型号,以便在恢复固件时选择正确的固件集。
* 打开XCTU,从工具菜单或工具按钮下拉菜单中选择"XBee Recovery"
{{:digi:rf-wireless:xbee:xctu-tools-recovery.png?400|}}
* 选择适合该XBee硬件平台的固件
* 点击Recovery进行恢复出厂固件操作
{{:digi:rf-wireless:xbee:xctu-xbee-recovery.png?400|}}
* 在恢复过程中,或有提示框弹出提示,您有可能需要按其要求操作,按一下Reset键
* 如果没有碰到其它问题,固件恢复成功,如下图所示
{{:digi:rf-wireless:xbee:xbee-recovery-success.png?400|}}
如果按上述操作无法恢复固件,请尝试用下面旧版XCTU强制更新出厂固件。
====用旧版XCTU强制恢复固件====
注意,您必须使用Digi原厂的底板来进行下面操作。用到USB底板或第三方USB转串口线时,请先检查是否已经做了驱动的相关优化配置。如果不是用Digi的底板或是使用了劣质的山寨USB转串口线,都有可能导致恢复失败。这时,请尝试用正规的品牌USB转串口线配合Digi串口底板或是直接用Digi的USB底板进行相关操作。
操作过程中,选择模块的固件必须与模块硬件平台匹配,比如S2C的不同固件之间可以互烧,但不能把S2B固件烧到S2C上,另外普通型和增强型也不要混烧。
1.将底板断电,取下模块 \\
2.接好底板,先不插上模块,打开旧版的X-CTU,波特率项选择38400,并将“No baud change"这项打勾如下图所示:\\
{{:digi:rf-wireless:xbee:legacy-xctu-force-recovery1.png?400|}}
3.此时底板并未插上模块,在Modem configuration中,Mode类型请选择该模块适用的类型,比如你们的是XBP24C,固件选择对应的最新版本,点一下“Show Defaults,将Always Update Firmware这项打勾,然后点Write按钮。 \\
{{:digi:rf-wireless:xbee:legacy-xctu-force-recovery2.png?400|}}
4.因为底板未插上任何模块,因此会弹出提示框让你按底板的Reset键,请注意,这时要按住Reset键不放,然后小心地把XBee模块插上,再松开Reset键。\\
{{:digi:rf-wireless:xbee:xbee-force-recovery-reset.png?400|}}
5.此时X-CTU将开始强制更新固件,更新完固件成功后,有可能会提示您再按Reset键,此时按一下Reset键并放开,X-CTU将读入模块参数,模块强制更新操作就完成了。\\
{{:digi:rf-wireless:xbee:force-recovery-finished.png?400|}}
通常用上述的这两种方法大部分就能恢复那些固件受损的XBee模块到正常工作。如果无法修复,请重复尝试一次新版和旧版的XCTU恢复固件方法。如果仍不能成功,基本上可以判断模块已经无法本地修复了。
对于ZigBee模块,如果上述强制更新固件仍无法修复,你还可以再试试下面这种直接调出Bootloader加载固件的方法。
http://www.digi.com/wiki/developer/index.php/Bootloader_to_force_XBee_reflash
如果XBee模块的Bootloader无法调出来,基本上也可以判断模块就无法在本地通过XCTU自行修复。
更多内容和官方文档请参考:
http://knowledge.digi.com/articles/Knowledge_Base_Article/Recovery-procedure-for-XBees