信号传输质量检测
重点在代码分析部分...就是废话比较多...
一、实验平台
两个ZigBee模块
一个方口USB线
一个编译器
二、实验现象
两块ZigBee模块通信,一个模块作发射,另外一个模块作接收,接收模块通过串口在PC机上显示当前的误包率、RSSI值和接收到数据包的个数
三、准备工作
由于硬件平台不同,所以我们需要在per_test中加入串口发送函数
1. 打开工程—>application—>per_test.c
在per_test.c文件中添加串口发送函数
2. INCLUDES中添
#include "string.h"
3. 在函数声明中添加
void uartInit(void);//************************** void uartSend(int8 *Data,int len);//**********************
4. 添加串口初始化函数
1 /**************************************************************** 2 串口初始化函数 3 ****************************************************************/ 4 void initUART(void) 5 { 6 PERCFG = 0x00; //位置1 P0口 7 P0SEL = 0x0c; //P0_2,P0_3用作串口(外部设备功能) 8 P2DIR &= ~0XC0; //P0优先作为UART0 9 10 U0CSR |= 0x80; //设置为UART方式 11 U0GCR |= 11; 12 U0BAUD |= 216; //波特率设为115200 13 UTX0IF = 0; //UART0 TX中断标志初始置位0 14 }
5. 添加串口发送函数
1 /**************************************************************** 2 串口发送字符串函数 3 ****************************************************************/ 4 void uartSend(int8 *Data,int len) 5 { 6 int j; 7 for(j=0;j<len;j++) 8 { 9 U0DBUF = *Data++; 10 while(UTX0IF == 0); 11 UTX0IF = 0; 12 } 13 }
6. 因为只有接收模块使用到串口,把串口初始化放入appReceiver()即可
四、分析per_test.c的代码
看代码前还是想先解释一下,这里一个数据包就是一个结构体数据类型,里面包括6个字节的内容和1个字节的序号 我们是利用序号来判断有没有发生误包的。
第一步,先找到main函数
1 void main (void) 2 { 3 //变量声明 4 uint8 appMode; //用来选择模式(发送或接收) 5 6 appState = IDLE; 7 8 //配置basic RF 9 basicRfConfig.panId = PAN_ID; 10 basicRfConfig.ackRequest = FALSE; 11 12