打印

求救:CC1100发送数据的时间

[复制链接]
3801|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wukong_free|  楼主 | 2010-4-10 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位高手,我现正在用CC1100实现短距离无线数据传输,要求延时要小,CC1100发送数据需要多长时间呢?比如发送15个字节的数据包其发送延时有多大?
还有一个问题就是:我现在用CC1100的通信距离很有限,要求达到200m左右,我已经将功率提高到了10mv,请问还有哪些需要注意才能将距离提到200m?
这个问题困扰了我很长时间了,我在线等,希望多多指点,谢谢啊!

相关帖子

沙发
johninfo| | 2010-4-11 10:33 | 只看该作者
about 1ms

使用特权

评论回复
板凳
chunyang| | 2010-4-12 12:20 | 只看该作者
楼主既然在论坛提问就不要发站内信单独问我。前一个问题已经回答,固定发射功率和接收灵敏度前提下提高通讯距离主要靠良好的天线匹配和尽量提高天线增益来实现,前者由硬件电路、PCB设计、原件选型决定,后者靠采购。

使用特权

评论回复
地板
wukong_free|  楼主 | 2010-4-12 13:15 | 只看该作者
3# chunyang
我用CC1100进行无线数据传输,要求传输的距离是200米,延时在100ms左右,我用的波特率是9.6K,但是MCU每次调用CC1100的发送函数后,都会人为地加上一个比较大的延时(65ms),导致延时达不到要求。我想问一下,在我所参考的主程序里面,每次调用完这个CC1100的发送函数后,都要人为地加一个延时,如下:
{
     halRfSendPacket(&pTX.FrameType, 63);  //CC1100发送数据的函数
          delay_ms(SEND_PACK_TIME);/*这个延时必不可少,当速率低至9.6k时,这个延时应达到接近100ms*/

}
这个延时是什么作用呢?我把它去掉,或者改小都不行,现在是延时65ms,怎么样才能把这个延时降下来呢?


我的发送函数是这样的:
//功能描述:CC1100发送主叫数据
//*****************************************************************************************
void halRfSendPacket(INT8U *txBuffer, INT8U size)
{
///////////////////////////////////////////////

    INT16U wait_time;
    do{
           while(Check_Chanel_State()==CHANEL_BUZY)
         {
               delay_us(50);
         }

  }while(Check_Chanel_State()==CHANEL_BUZY);
//////////////////////////////////////////////  
     halSpiStrobe(CCxxx0_SIDLE);
     halSpiStrobe(CCxxx0_SFTX);

halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size); /*  写入要发送的数据*/
     delay_ms(1);
     halSpiStrobe(CCxxx0_STX);  /*  进入发送模式发送数据*/

    // Wait for GDO0 to be set - > sync transmitted
    while (!GDO0);
   
      while (GDO0);
}



这个问题纠结了很久,问了很多人都没有结果,希望大家多多指点,在此谢谢了!

使用特权

评论回复
5
Tom_1986| | 2012-1-9 10:49 | 只看该作者
4# wukong_free
我是使用GDO0或GDO2管脚判断是否发送完成,把GDO0或GDO2接到MCU中断管脚,在MCU中断服务函数中再使能下一次发送

使用特权

评论回复
6
disixin| | 2012-5-4 16:52 | 只看该作者
楼主 我最近也在做cc1101的通讯!发送程序老是进入死循环。不知道是为什么!是初始化寄存器有问题还是其他什么问题 请赐教  我把我的发送程序贴出来
void WL_Send_Packet(uchar8 *txBuffer, uchar8 size)
{
        WL_Spi_Strobe(CCxxx0_SIDLE);
        WL_Write_Reg(CCxxx0_TXFIFO, size);
    WL_Write_Reg_Cont(CCxxx0_TXFIFO, txBuffer, size);        //写入要发送的数据

        Delay_ms(20);
    WL_Spi_Strobe(CCxxx0_STX);                //进入发送模式发送数据

    // Wait for GDO0 to be set -> sync transmitted
        while(!Get_WL_GDO0);
    // Wait for GDO0 to be cleared -> end of packet
        while(Get_WL_GDO0) ;
        WL_Spi_Strobe(CCxxx0_SFTX);
}
当执行到第二个while时就死循环了

使用特权

评论回复
7
无极邪灵| | 2012-5-14 13:39 | 只看该作者
6# disixin

disixin,你的死循环问题解决了么?如何解决的?现在我也遇到了同样的问题,我的是卡在while(!GDO0)上,读cc1101,发现能正确配置CC1101,就是不能发送接收,弄了好几天了,郁闷

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

10

帖子

1

粉丝