原创 公布CC1110最简单的收发程序

2009-12-20 16:45 4639 7 24 分类: 软件与OS
/**********************************************************************
*文件: wxl_radio.c
*功能: RF发送和接收(非DMA),初版,还可能有BUG
*作者: emot
*版本: v1.0

*说明:宏来源于TI的hal.h
*修订记录
----------------------------------------------------------------------
|时间           原因                  修订人
|2009年4月05日  初写                  emot
|
|
**********************************************************************/

/**********************************************************************
*头文件
*/
#include "includes.h"

#define
//----------------------------------------------------------------------
//发送函数
//----------------------------------------------------------------------
BYTE Transmit(BYTE __xdata *buff,BYTE bytes)        //发送
{
    BYTE i,BytesToSend;                       //
    RFIF = 0;
    RFTXRXIF = 0;
    BytesToSend = bytes ;//        数据包长度就是byte,为方便实际应用中增加其他字节,定义了bytestosend变量
    if(BytesToSend <= 64)
    {
        
        SIDLE();            // Exit RX / TX, turn off frequency synthesizer and exit
        STX();             // Switch radio to TX
        while(RFTXRXIF == 0);           // 等待发送结束
        RFTXRXIF = 0;                   // 清除发送标志
        RFD = BytesToSend;
        while(RFTXRXIF == 0);           // 等待发送结束
        RFTXRXIF = 0;                   // 清除发送标志
        
        for(i=0;i<( BytesToSend-1);i++)
        {
            RFD = *buff++;         // 发送数据
            while(RFTXRXIF == 0);       // 等待发送结束
            RFTXRXIF = 0;               // 清除发送标志
        }
         RFD = *buff;                // 发送最后一BYTE
        
         while(RFIF&IRQ_DONE == 0);   // 等待发送结束
         RFIF &= ~IRQ_DONE;           //清结束标志
        
        RFIF &= ~IRQ_DONE;        // Tx/Rx completed, clear interrupt flag
        S1CON &= ~0x03;           // Clear the general RFIF interrupt registers

        return TRUE;
    }
    else
    {
        return FALSE;
    }
}
//----------------------------------------------------------------------
//接收函数,不使用DMA的接收
//----------------------------------------------------------------------

# define  WAIT_TIME  80  //unit  ms
BYTE Receive(BYTE __xdata *buff,BYTE *bytes)        //接收
{
BYTE BytesToReceive = 0;
        BYTE address;
        BYTE i;

    RFIF = 0;
    RFTXRXIF = 0;
    SIDLE();
    SRX();
    resetTimer(APP_TIMER0);
    while(RFTXRXIF == 0){if(readTimer(APP_TIMER0)>WAIT_TIME)return FALSE;};                // 等待接收结束,如超时则强退
    BytesToReceive = RFD;               // 读取数据包总长度
    RFTXRXIF = 0;                     // 清除发送标志  

    while(RFTXRXIF == 0){if(readTimer(APP_TIMER0)>WAIT_TIME)return FALSE;};                // 等待接收结束
    address = RFD;                    // 读取匹配地址
    RFTXRXIF = 0;                       // 清除发送标志
    if((BytesToReceive >= 64)||(BytesToReceive <= 0))
    {
        return FALSE;
    }
    
    if(address)address = address;   //没用的语句,只是用来消除warning

    for(i=0;i<(BytesToReceive - 1);i++)
    {
        while(RFTXRXIF == 0){if(readTimer(APP_TIMER0)>WAIT_TIME)return FALSE;};                // 等待接收结束
        buff = RFD;                  // 读取数据包长度
        RFTXRXIF = 0;                   // 清除发送标志
    }
    
    
    *bytes = (BytesToReceive);
    SIDLE();
    return TRUE;
}
//2009年5月25日

文章评论17条评论)

登录后参与讨论

用户1602567 2013-3-28 16:56

哦哦,我试试~

zigbee_904218839 2013-3-25 00:14

这是一个头文件,也是提醒你要包含一些头文件,includes.h中包含最重要的头文件是iocc1110.h,再就是定义TRUE,FALSE这些常量。要理解这段代码再写个头文件出来,是很容易的。

用户1602567 2013-3-22 11:42

为什么我编译的时候提示错误说无法打开“includes.h”文件??求解

zigbee_904218839 2013-1-5 08:44

工程已经没有了,在函数调用之前还需要初始化时钟为26m,再对radio作些配置就可以使用

用户377235 2012-12-27 17:36

能给我一份IAR源文件么我的邮箱407687255@qq.com

用户426838 2012-10-26 17:37

这个的IAR源文件能给我一份吗?不胜感激。。。。我的邮箱814955458@qq.com

zigbee_904218839 2011-2-11 13:05

resetTimer(n);用来将定义器n清0. 然后readTimer(n)当结果大于某个值的值,跳出循环。这个工程我现在没有了。电脑坏了。

用户1610321 2011-2-8 11:10

resetTimer(APP_TIMER0); 这个我不明白,哪位高声能指点一下啊,小弟不胜感激!!!

用户1610321 2011-2-8 09:12

楼主,您好!能把这个程序的工程文件发给我吗,邮箱799585575@qq.com,谢谢

zigbee_904218839 2009-12-20 16:42

这个变量在我帖上来的程序里没有使用,不过在真正在工程中使用CC1110接收的时候往往接收端需要用地址来鉴别数据是不是发给自己的,所以我就把这个变量保留在这里了。
相关推荐阅读
emot 2016-06-29 23:39
想在网上直播来讲讲zigbee,大家怎么看
近来发现zigbee热度不减,不才想把所了解的zigbee都跟大家分享,大致按照这个来做。请大家提些建议,是不是还有特别重要但我遗漏的。先来攒些人,人够了我们就开。 --------------...
emot 2015-09-24 07:06
BLE 空中升级谈(二)
BLE 空中升级谈   -- CC2541 的产品开发中OAD注意事项(续)   TI CC2541支持多个硬件,多个软件对它进行空中升级,可以有不同的组合,硬件有    ...
emot 2015-09-24 07:01
BLE 空中升级谈
BLE 空中升级谈   -- CC2541 的产品开发中OAD注意事项     现在的智能设备(可穿戴,智能家居,智能玩具等)是越来越多了,大公司的产品颜值高,功能强大而完备的应该说是比比皆是,这里...
emot 2015-05-19 10:27
寻找共事的朋友[深圳科技园 嵌入式软件 可穿戴]
岗位职责:嵌入式软件工程师 招聘人数:2 简历语言要求:中文 语言能力:英语 掌握程度:熟练 工作地点:深圳南山科技园 工作待遇:面谈   工作职责: 1. 与硬件工程师合作完...
emot 2014-05-06 08:41
CC2530的通信速率实测
首先要说的是这里的测试包括了zigbee与非zigbee两种情况,测试zigbee的通信速率建议使用TI协议栈ZSTACK-2.5.1A(swrc126.zip)中的TransmitApp来进行测...
emot 2014-01-17 18:08
XBee与 RBee ZigBee透明传输模块互传测试
XBee与 RBee ZigBee透明传输模块互传测试   本次测试的目标是为了初步探索ZigBee透明传输模块的传输速率峰值范围,同时也要检查不同公司模块之间的兼容性。测试的目标是 由美国Digi提...
我要评论
17
7
关闭 站长推荐上一条 /2 下一条