2012-04-02 59 views
1

当两台计算机连接到USB浏览器(我发送数据并收到它)时,我已经成功地使用了Xbee API模式。但是,当我尝试对连接到pic33微控制器的无线电进行同样的操作时,我收到了奇怪的结果。这里是我的设置:Xbee API模式问题C

一的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×8:协调器的64位地址
FF FE: 16位网络地址
00 00:选项和braodcast半径
48 65 6C 6F 6C:数据(你好)
FD:校验

同样的命令可以很好地处理与PC连接的两个无线电,并且产生XCTU窗口。

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

我玩过不同的延迟,试过连续的单传输和我能想到的所有东西,但我在XCTU窗口中完全没有任何东西。我想知道的是,我必须做些什么才能使其发挥作用?

+0

您确定,您在PIC中正确配置了RS232端口吗? Xbee模块是否响应其他请求?像获取状态...等等。 – werewindle 2012-04-02 16:41:19

回答

1

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

1)您的代码没有正确传输数据包(您已经调试过)或者, 2)PIC和PC之间的电子通信路径存在一些问题的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终端程序发送的消息。如果您足够幸运拥有逻辑分析仪,则无需连接逻辑分析仪即可执行相同的测试。

祝你好运!

+1

我还会提到,将微处理器连接到XBee时,意外更换Tx/Rx引脚很容易。确保PIC的发送到XBee的DIN引脚。 – tomlogic 2012-04-03 19:05:58

+0

谢谢,我会尝试你提到的和更新的东西! – OnlinePanCakes 2012-04-04 22:30:52

+0

我摆弄了一些检查,它的工作。 :) – OnlinePanCakes 2012-04-12 16:28:54

0

Digi已经发布了,这是一个ANSI C代码的开放源码(MPL 2.0)库,用于在API模式下与XBee模块进行通信。它支持POSIX(Linux,BSD,Mac OS X,Cygwin),Windows(MinGW/MSYS),DOS(OpenWatcom)和一些嵌入式平台。虽然它还不支持PIC平台,但您可能想要尝试编写必要的粘合代码(主要是串行例程)以在您的硬件上使用它。

这对编写桌面应用程序通过XStick或XBee USB适配器与嵌入式设备通信也很有用。