位置:51电子网 » 技术资料 » EDA/PLD

发送部分程序设计

发布时间:2012/4/16 12:15:20 访问次数:642

    在发送部分的程序段中,首先要判断所NC7S08P5X要发送的数据长度是否大于一个数据包所能容纳的最大长度(物理层数据最大可为127个字节,其中5个字节固定用于同步包头,因此一个数据包最大可容纳的数据长度为122个字节),若大于则须分片传输。由于之前已经配置好DMA通道,所以这里只要直接将要发送的数据写入寄存器RFD即可。发送数据时还须要循环检测RSSI的值是否有效,若RSSI值无效则说明当前信道被占用,程序应采用CSMA/CA机制,自动退避一段时间后,再次检测RSSI值,只有当信道空闲时才能进行无线发送。若发送的数据需要接收端进行回复,则须进入接收模式。
    CC2430发送部分程序流程图如图11-31所示。
    在程序的具体实现上,为了给上层进一步的应用提供良好的封装性及实用性,这里设计丁一个专门用来无线发送的函数供上层调用,其函数声明如下:
       BOOL  radioSend (BYTEk  transmitData,  WORD dataLength,destAddr, BYTE seq, BYTE,,* receiveData, WORD* srcAddr)

                  
    其中,transmitData为字节型指针,用来存放待发送的数据;datalength为数据长度;FCF1和FCF2为两个帧控制字;destAddr为要发送目的地址;seq为发送帧的序号;receiveData表示如果发送的这条命令需要对方回送数据,则里面存放的是回送来的数据,如果不需要,则不用关注这个变量;srcAddr为发送端的源地址;函数的返回值表示发送是否成功,TRUE表
示成功,FALSE表示发送失败。

    在发送部分的程序段中,首先要判断所NC7S08P5X要发送的数据长度是否大于一个数据包所能容纳的最大长度(物理层数据最大可为127个字节,其中5个字节固定用于同步包头,因此一个数据包最大可容纳的数据长度为122个字节),若大于则须分片传输。由于之前已经配置好DMA通道,所以这里只要直接将要发送的数据写入寄存器RFD即可。发送数据时还须要循环检测RSSI的值是否有效,若RSSI值无效则说明当前信道被占用,程序应采用CSMA/CA机制,自动退避一段时间后,再次检测RSSI值,只有当信道空闲时才能进行无线发送。若发送的数据需要接收端进行回复,则须进入接收模式。
    CC2430发送部分程序流程图如图11-31所示。
    在程序的具体实现上,为了给上层进一步的应用提供良好的封装性及实用性,这里设计丁一个专门用来无线发送的函数供上层调用,其函数声明如下:
       BOOL  radioSend (BYTEk  transmitData,  WORD dataLength,destAddr, BYTE seq, BYTE,,* receiveData, WORD* srcAddr)

                  
    其中,transmitData为字节型指针,用来存放待发送的数据;datalength为数据长度;FCF1和FCF2为两个帧控制字;destAddr为要发送目的地址;seq为发送帧的序号;receiveData表示如果发送的这条命令需要对方回送数据,则里面存放的是回送来的数据,如果不需要,则不用关注这个变量;srcAddr为发送端的源地址;函数的返回值表示发送是否成功,TRUE表
示成功,FALSE表示发送失败。

热门点击

 

推荐技术资料

声道前级设计特点
    与通常的Hi-Fi前级不同,EP9307-CRZ这台分... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式