打印

版主,帮帮忙啊!在此谢过!

[复制链接]
1463|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wukong_free|  楼主 | 2010-4-13 09:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用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);
}


老板催得紧,在这里卡了好多天了,麻烦你了,谢谢啊!

相关帖子

沙发
英雄无敌六| | 2010-4-13 09:45 | 只看该作者
波特率是9.6K,就是1秒发送9.6K的位,串口发送是11个位,CC1100发送少起始和停止,就算9个位/字节,就是说1秒只能发送1k字节,一个字节发送时间最短就是1ms。halRfSendPacket(&pTX.FrameType, 63);  发送63字节,最少要求时间63MS。再加上协议本身占用的位时间,100MS很正常。

使用特权

评论回复
板凳
英雄无敌六| | 2010-4-13 11:07 | 只看该作者
调用完发送函数,表示开始发送了,不代表发送结束。

使用特权

评论回复
地板
wukong_free|  楼主 | 2010-4-13 12:39 | 只看该作者
4# 英雄无敌六
不是啊,发送函数是以两个  while (!GDO0);while (GDO0);结束的,表示数据已经发送完毕,不是才开始发送

使用特权

评论回复
5
chunyang| | 2010-4-13 18:38 | 只看该作者
不需要人为在数据串前添加那么长的延时,信道稳定时间一般1mS左右就可以了,你的发射程序有问题,估计不是你自己写的吧。

使用特权

评论回复
6
wukong_free|  楼主 | 2010-4-13 18:56 | 只看该作者
6# chunyang
嗯,这个程序是上一届研究生写的,可是已经毕业走人了。那版主认为发射函数的问题在哪里呢?

使用特权

评论回复
7
chunyang| | 2010-4-13 20:29 | 只看该作者
那是无法判断的,显然工艺有问题,自己重写先。

使用特权

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

本版积分规则

0

主题

10

帖子

1

粉丝