XBEE 3 Zigbee 3.0有时会发送错误的消息内容

问题描述 投票:0回答:2

我目前正在研究微控制器 (mbed LPC1768) 和 XBEE 3 Zigbee 3.0 之间的 SPI 连接。我的目标是在我的 mbed 和我的计算机(无线)之间发送浮动。我已完成所有设置并使用另一个与我的计算机连接的 XBEE 设备接收数据。我用单播发送。我工作得很好,我想通过发送正弦波并在 Simulink 中绘制它来测试结果

这是正弦曲线

1

如您所见,它有点有效,但信号中存在一些巨大的错误。这些错误的值总是出现在相同的位置(当我发送相同的值时)。后来我用 XCTU 阅读了该消息,我注意到它收到的消息在某种程度上被“操纵”了。但这仅在特定值下出现。

这是我用 mbed 发送的消息:

uint8_t Message[23] {0x7E, 0x0, 0x13, 0x10, 0x1, 0x0, 0x13, 0xA2, 0x0, 0x41, 0xC1, 0x80, 0xD5, 0xFF, 0xFE, 0x0, 0x0, 0xBB, 0xBE, 0xDD, 0x7D, 0x3F};

请注意,0xBB 是 4 个浮点字节的“标头”字节。 (校验和稍后在程序中计算)。

这里突然有 5 个字节位于接收到的数据帧字段中!最后一个值是校验和

2

我知道接收的数据包与我发送的数据包不同,但它不应该以特定值更改我的消息内容。其他值仅正确接收 4 个数据字节。这里有什么问题?抱歉我的英语不好。

我尝试发送正弦波,没有任何错误,但一些特定值正在以某种方式发生变化。

spi wireless xbee zigbee unicast
2个回答
0
投票

尝试切换到 API 模式 1 (ATAP=1)。当 ATAP 设置为 2 时,XBee 使用 0x7D“转义”某些值。

这里是 Digi 关于 转义 API 模式的文档:

在您的示例中,转义值是:

0x7D 0x31 -> 0x11
0x7D 0x33 -> 0x13
0x7D 0x5E -> 0x7E
0x7D 0x5D -> 0x7D

因此数据包来自 00 13 A2 00 41 C1 7E 38,并且具有正确的有效负载 BB BE DD 7D 3F。

我还没有遇到需要 API 模式 2 的应用程序。切换到 ATAP=1,确保您的软件知道它正在“未转义”模式下运行,并且它应该可以解决您的问题。


0
投票

您能分享一下您的SPI通信示例吗?你用的是Arduino吗?

© www.soinside.com 2019 - 2024. All rights reserved.