1

当两台计算机连接到 USB 资源管理器时,我成功地使用了 Xbee API 模式(我发送数据并接收)。但是,当我尝试对连接到 pic33 微控制器的无线电执行相同操作时,我得到了奇怪的结果。这是我的设置:

一个 Xbee 无线电,路由器,连接一台 PC 一个 Xbee 无线电,协调器,连接一个 pic33 微控制器

微控制器发送广播数据。这是 API 命令:

7E 00 13 10 01 00 00 00 00 00 00 00 00 FF FE 00 00 48 65 6C 6C 6F FD

7E:分隔符
00 13:长度
10 01:API 帧类型和帧 ID
00 x 8:协调器 64 位地址
FF FE:16 位网络地址
00 00:选项和广播半径
48 65 6C 6C 6F:数据(Hello)
FD:校验和

相同的命令与连接到 PC 的两个无线电完美配合,并导致 XCTU 窗口。

我已经调试了整个传输代码和它应该发送的命令。我使用 PICKIT3 在在线调试中检查了 TXREG 寄存器。但是 XCTU 窗口中没有收到任何内容。

我玩过不同的延迟,尝试过连续和单次传输以及我能想到的一切,但在 XCTU 窗口中我一无所获。我想知道的是,我必须做些什么才能让它发挥作用?

4

2 回答 2

1

很有可能这是一个电子程序,而不是编码问题。如果 XBee 能够与 PIC 通信,它将正常运行。您有以下问题空间:

1)您的代码没有正确传输数据包(您已经调试过),或者,2)PIC和XBee之间的电子通信路径存在问题

在将 XBees 连接到微控制器时,需要问自己并验证以下几点:

1) 你是如何将你的 XBee 连接到你的 PIC 的?XBee 串行 I/O 为 3.3v。确保您的 PIC 的逻辑电平也是 3.3v

2)您将 PIC 设置为什么波特率?您的 PIC 的时序源是什么?它是内部振荡器、RC 还是晶体?确保振荡器的时序值与数据表相匹配,以得出预期的波特率。

3) 你能读懂 XBee 吗?如果您从连接到 PC 的模块发送数据包到连接到您的 PIC 的模块,什么会到达您的微型计算机?你能收到整个数据包吗?是否缺少字节?您是否收到垃圾邮件(同样,这可能表明波特率不匹配)?

4) 是否启用了硬件流控制(XBee 参数 D6 和 D7)?如果是这样,你是如何连接这些引脚的?确保它们的逻辑电平设置正确,这样 XBee 就不会永久处于流量控制状态,从而阻止它从您的 PIC 接收字节。在基本通信正常工作之前,您可能希望禁用流量控制。

您可能希望通过完全消除等式中的 XBee 来划分和征服硬件问题空间,并专注于确保您能够按预期进行串行传输。如果您有电平转换器,您可以将其连接到您的 PIC,然后将您的 PIC 连接到您的 PC。您可以验证您是否可以阅读您尝试从 PC 终端程序发送的消息。如果您有幸拥有逻辑分析仪,则无需连接逻辑分析仪即可执行相同的测试。

祝你好运!

于 2012-04-02T17:01:00.987 回答
0

Digi 发布了xbee_ansic_library,这是一个开源 (MPL 2.0) ANSI C 代码库,用于在 API 模式下与 XBee 模块进行通信。它支持 POSIX (Linux, BSD, Mac OS X, Cygwin), Windows (MinGW/MSYS), DOS (OpenWatcom) 和一些嵌入式平台。

虽然它不支持 PIC 平台(目前),但您可能想尝试编写必要的胶水代码(主要是串行例程)以在您的硬件上使用它。

它对于编写桌面应用程序以通过 XStick 或 XBee USB 适配器与您的嵌入式设备进行通信也很有用。

于 2012-12-07T17:28:00.620 回答