目标:
无论发送方是采用定长还是变长分组方式,分组格式如何,是否有CRC等,接收节点都能够正确接收。
当然,还有不少前提条件:
* 频率一致;
* 数据速率一致;
* 前导码及帧分隔标志一致;
该程序可以用来测试CC2510的行为。
比如:发送节点发送固定长度(比如100字节)的分组,第1个字节的内容为30。而接收节点设置为变长接收,则是否接收节点的上层应用仅能收到30字节的数据?
因此,用作sniffer的话,接收节点是否应该使用固定长度(最大长度)的接收方式,而且禁止CRC检验。这样才可以同时接收有CRC校验和没有CRC校验、变长和固定长度的数据分组。
主要代码:
//直接轮询接收,不使用中断
while (1) {
//reset pointer
length =0;
RFIF &= ~IRQ_DONE;
//enter receive mode
SRX();
while (!(RFIF & IRQ_DONE)) {
//check whether receive finished
if (RFTXRXIF) { //a byte received
pBuffer[length] = RFD;
length ++;
RFTXRXIF = 0;
}
}
//RX DONE
if (length >0) {
modUartSendPkt(0, length, pBuffer);
P1_0 = !P1_0; //toggle led
}
SIDLE();
}
运行结果:
PC收到的数据,分组内容的长度不是16,而是255:
0D 0A FF 0D 02 01 00 79 31 32 33 34 35 36 37 38 39 7F 0A 36 DF EC CF D7 FE BF EB DD FF E7 F7 DF FF F8 9A CF 7F FC B1 77 7B ED F3 4E AF FF ED 5F FE DF EC 64 1B 9F DF B9 B9 CC 1F F4 F6 FB C0 CB FE DB DF 7E FF FB 1F FE 3E DE 44 5F F1 B8 AF 36 A5 0A FE 9F F4 DD CF 8F 7F BF F7 B1 41 DF E3 EE F0 B0 AA DC 77 2F FD FE 9F F2 0D C8 4E CD 86 7E 23 6E B3 67 FD 51 CF 52 E2 FC 6B CF CA 5C 6D 0A D7 E7 F2 6F E6 9E B9 74 FF 7D 5C FC 3E F0 BC 7C 76 9B C4 D9 45 7F 9F EB 2B 49 96 FB F3 7A EF F9 77 DB D5 F1 01 9A 79 FE BD F7 51 BE F2 FB 1F 6F BB B4 67 F7 39 F7 AB BA B9 E6 FF CE 53 61 0E BE F4 DB BA C5 6E 7F 8E 17 FE 7B 53 F7 9E BF E2 73 2F FF BC 33 FE 32 2C FE BE F9 09 8B C7 36 BB 6F DD BE 98 1B 2F FB ED AB F3 CC 8E 9D 7F 57 EB F7 6C BF 63 B9 E7 EE 92 BD E3 BC B8 4C 36 99 8C ED 6C 19
用户138786 2008-4-19 00:35
zigbee_904218839 2008-4-18 00:37
用户138786 2008-4-17 22:21