|
本帖最后由 shamiexiaotan 于 2011-7-26 11:13 编辑
还是这张图哈,很关键,我自己画的,下面说一下每一步的具体流程及含义。
第一步,PC机从串口调试助手发送了数据,则肯定会最终发送到CC2530的接受缓冲区里面,虽然该缓冲区每次只能存放一个字节,(这里面有软件部分的处理,其实就是开辟一块缓冲区来存放数据)读者完全可以想象成数据就是发送到缓冲区里面了。
第二步,收到数据后肯定是要将数据拷贝出来,拷贝到一个数组里面,这个数组的名字叫SerialApp_TxBuf,但是,我们发送的数据是从SerialApp_TxBuf[1]开始存放的。
第三步:这个数组的第0个位置SerialApp_TxBuf[0]存放的是发送的序列号SerialApp_TxSeq。
第四步,调用发送函数将SerialApp_TxBuf这个数组发送出去,该数组中既包含我们实际想发送的数据也包含了发送的序列号。问题是这个发送的序列号有什么用处呢????
第五步,另一个zigbee设备接收到数据。
第六步,将数据放在一个缓冲区里面。
第七步,将数据写入单片机的Tx buf,其实这样就可以将数据发送到PC机了,这样我们就可以从串口调试助手看到我们发送的数据了,不过需要注意的是,我们实际发送的数据是从第2个位置开始存放的,所以将数据写入单片机的Tx buf时要将第2个位置作为数据的起点。同时程序中还定义了一个接收序列号SerialApp_RxSeq,在收到数据后就是将原来的发送序列号赋值给了接收序列号了,原因是什么呢?
其实这里加了个保险措施,其实就是发送设备将发送序列号加在数据中一块发送,接收设备接收到数据后,将发送序列号回传给发送设备,发送设备将该序列号和发送时的序列号比较一下,如果相等则说明数据发送成功。
第八步,通过上面的分析可知,接收设备收到数据后,将接数据有关的状态以及接收序列号(其实就是发送设备的发送序列号)等信息放在一个4字节的数组里面,然后将该数组发送给发送设备。
第九步,发送设备接收到接收设备回传的响应信息后,将发送序列号和接收序列号比较,如果相等,则说明原来的数据发送成功了。
其实这里的讲解完全是从通信的角度讲解,忽略了所有的函数细节,可能不是很好理解。
不过,这段时间的zigbee学习,我的深切体会是:资料太少,遇到问题不晓得到哪里求助,虽然有些问题很幼稚,很无知,但是正是这些看似幼稚与无知的问题困扰着初学者,腐蚀初学者的学习兴趣,但是也正是这些看似幼稚与无知的问题,给了我们学习的动力。大家可以看看我的帖子,很多帖子只是我想到这个问题了就发帖子,其实也是记录自己学习过程的一些足迹吧,祝福每一个为Zigbee学习而绞尽脑汁但有貌似无助的人,祝福你,你会越学越觉得zigbee还是可以学的懂的。
当然只是功能上的分析,忽略了所有的函数细节,请谅解,但愿能帮助初学者吧。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|