2514|15

13

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

CC2500速率问题 [复制链接]

 
10芯积分

CC2500每次发送之后的延时大小和发送的字节数有关系吗,我发现发两个字节延时几毫秒就行,发送60字节要延时30多毫秒数据才不会卡死(下图的接收耗时就是循环发送之后的延时,不延时就要卡死,接收就只能接收到几次)这是怎么一回事,下图是我测的发送的速率,感觉低得吓人一秒就1K的样子,不是250Kbps吗,程序我是一个循环发送,一个循环接收然后发回串口,没有其他耗费时间的操作,从串口计算的接收次数,应该怎么提高传输的速率呢?求大佬解答。

 

此帖出自RF/无线论坛

最新回复

那你好好分析程序,用别人的程序必须考虑好跟你的程序有效衔接。   详情 回复 发表于 2021-7-27 20:58
点赞 关注
 

回复
举报

1万

帖子

139

TA的资源

版主

沙发
 

仅就CC2500而言,根本无所谓什么延时,只是接收侧的程序处理时间跟数据量可能有关。之所以说“可能”,是由你的接收侧编程决定的。如果接收侧的数据处理速度足够,编程合理,理论上可以无需延时,即发送侧可以连续发送任意长度的数据。你的测试结果实际上测的是软件,显然没有充分发挥出硬件的性能。

此帖出自RF/无线论坛
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复

1万

帖子

139

TA的资源

版主

板凳
 

只有半双工工况下需要延时,那是因为收发切换需要时间,这个理论上的极限由硬件决定,但实际上还要额外留取适当余量,以保证收发双方时钟不同步导致的误差不至于影响到通迅,但这个延时与数据量无关。

此帖出自RF/无线论坛

点评

我用SmartRF上位机来接收发送就不需要延时,应该是我接收端函数不对,我用的TI历程里面的接收函数,程序中当接收中断产生后置了一个标志位,中断函数里面也没有其他操作了,接收端应该怎么处理才正常呢  详情 回复 发表于 2021-7-27 09:33
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 
 

回复

6802

帖子

0

TA的资源

五彩晶圆(高级)

4
 

cc2500 提供了spi 接口与外部的mcu通信,cc2500 作为spi slave

先检查硬件是否问题,判断发射是否正常

建议到TI 官网有wiki上有demo可以参考

此帖出自RF/无线论坛
 
 
 

回复

3187

帖子

0

TA的资源

五彩晶圆(中级)

5
 

CC2500每次发送之后的延时大小和发送的字节数有关系吗,---理论上有,实际上不差太多时间,是微妙级别。

我发现发两个字节延时几毫秒就行,发送60字节要延时30多毫秒数据才不会卡死---你的程序没写好。

 

此帖出自RF/无线论坛

点评

嗯嗯,发送是正常的,应该是我接收端数据处理不对,串口波特率是115200,接收端就是例程的函数,会不会和SPI读取tx缓冲器的速率有关系  详情 回复 发表于 2021-7-27 09:38
 
 
 

回复

3187

帖子

0

TA的资源

五彩晶圆(中级)

6
 

电脑串口需要很高的速率才可以测出来,最好上到1M的速率,你串口速率是多少?别告诉我9600.

此帖出自RF/无线论坛
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

7
 
chunyang 发表于 2021-7-26 17:23 只有半双工工况下需要延时,那是因为收发切换需要时间,这个理论上的极限由硬件决定,但实际上还要额外留取 ...

我用SmartRF上位机来接收发送就不需要延时,应该是我接收端函数不对,我用的TI历程里面的接收函数,程序中当接收中断产生后置了一个标志位,中断函数里面也没有其他操作了,接收端应该怎么处理才正常呢

此帖出自RF/无线论坛

点评

那你好好分析程序,用别人的程序必须考虑好跟你的程序有效衔接。  详情 回复 发表于 2021-7-27 20:58
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

8
 
tagetage 发表于 2021-7-26 21:49 CC2500每次发送之后的延时大小和发送的字节数有关系吗,---理论上有,实际上不差太多时间,是微妙级别。 ...

嗯嗯,发送是正常的,应该是我接收端数据处理不对,串口波特率是115200,接收端就是例程的函数,会不会和SPI读取tx缓冲器的速率有关系

此帖出自RF/无线论坛
 
 
 

回复

3187

帖子

0

TA的资源

五彩晶圆(中级)

9
 

我用SmartRF上位机来接收发送就不需要延时---这就对了。

串口波特率是115200---速度也可以了。

我用的TI历程里面的接收函数,程序中当接收中断产生后置了一个标志位,中断函数里面也没有其他操作了---中断里就应该这么写啊,你不会在中断里面做数据判断,处理等事情吧。数据判断处理应该在主函数里做。

会不会和SPI读取tx缓冲器的速率有关系---没大关系。

此帖出自RF/无线论坛

点评

就是那个接收函数,字节数越大耗时就越长,不知道怎么整,函数原型就是下面这样的: char RFReceivePacket(char *rxBuffer, char *length) {   char status[2];   char pktLen;   if ((TI_CC_  详情 回复 发表于 2021-7-27 10:30
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

10
 
tagetage 发表于 2021-7-27 09:57 我用SmartRF上位机来接收发送就不需要延时---这就对了。 串口波特率是115200---速度也可以了。 我用 ...

就是那个接收函数,字节数越大耗时就越长,不知道怎么整,函数原型就是下面这样的:

char RFReceivePacket(char *rxBuffer, char *length)
{
  char status[2];
  char pktLen;
  if ((TI_CC_SPIReadStatus(TI_CCxxx0_RXBYTES) & TI_CCxxx0_NUM_RXBYTES))
  {
    pktLen = TI_CC_SPIReadReg(TI_CCxxx0_RXFIFO); // 读取数据包长度
    if (pktLen <= *length)                  // 数据包长度小于缓冲区长度
    {
      TI_CC_SPIReadBurstReg(TI_CCxxx0_RXFIFO, rxBuffer, pktLen); // 弹出数据
      *length = pktLen;                     //  返回长度
      TI_CC_SPIReadBurstReg(TI_CCxxx0_RXFIFO, status, 2);
                                            // 读取状态字节
//      TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);
      return (char)(status[TI_CCxxx0_LQI_RX]&TI_CCxxx0_CRC_OK);
    }                                       //  返回CRC校验位
    else//长度超出缓冲区
    {
      *length = pktLen;                     // 返回长度
      TI_CC_SPIStrobe(TI_CCxxx0_SFRX);      // 清空 RXFIFO
      return 0;                             // 出错信息
    }
  }
  else
  {
      return 0;                             //报错
  }
}

此帖出自RF/无线论坛
 
 
 

回复

3187

帖子

0

TA的资源

五彩晶圆(中级)

11
 

你贴一段程序我也不知道怎么整,一点一点慢慢排查吧,找到最耽误时间的程序进行处理。

另外先检查一下SPI速度和相关函数,先把这个给排除了。是硬SPI还是软件SPI?

此帖出自RF/无线论坛

点评

是硬件SPI,发送的SPI读写的速率都是正常的,就是弹出接收区缓冲数据那个最耗时间  详情 回复 发表于 2021-7-27 11:27
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

12
 
tagetage 发表于 2021-7-27 10:55 你贴一段程序我也不知道怎么整,一点一点慢慢排查吧,找到最耽误时间的程序进行处理。 另外先检查一下SP ...

是硬件SPI,发送的SPI读写的速率都是正常的,就是弹出接收区缓冲数据那个最耗时间

此帖出自RF/无线论坛

点评

是这个????----TI_CC_SPIReadBurstReg(TI_CCxxx0_RXFIFO, rxBuffer, pktLen); // 弹出数据  详情 回复 发表于 2021-7-27 13:18
 
 
 

回复

3187

帖子

0

TA的资源

五彩晶圆(中级)

13
 
春暖花开i 发表于 2021-7-27 11:27 是硬件SPI,发送的SPI读写的速率都是正常的,就是弹出接收区缓冲数据那个最耗时间

是这个????----TI_CC_SPIReadBurstReg(TI_CCxxx0_RXFIFO, rxBuffer, pktLen); // 弹出数据

此帖出自RF/无线论坛

点评

这里是我SPI的问题已经改了,然后我把串口回传的函数放在接收函数里面了,60个字节的话115200波特率要5ms,速率就下降了很多,所以感觉好像不太对,串口速率是不是低了  详情 回复 发表于 2021-7-27 15:26
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

14
 
tagetage 发表于 2021-7-27 13:18 是这个????----TI_CC_SPIReadBurstReg(TI_CCxxx0_RXFIFO, rxBuffer, pktLen); // 弹出数据

这里是我SPI的问题已经改了,然后我把串口回传的函数放在接收函数里面了,60个字节的话115200波特率要5ms,速率就下降了很多,所以感觉好像不太对,串口速率是不是低了

此帖出自RF/无线论坛

点评

115200应该不会这么低来着,还没弄清楚  详情 回复 发表于 2021-7-27 15:30
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

15
 
春暖花开i 发表于 2021-7-27 15:26 这里是我SPI的问题已经改了,然后我把串口回传的函数放在接收函数里面了,60个字节的话115200波特率要5ms ...

115200应该不会这么低来着,还没弄清楚

此帖出自RF/无线论坛
 
 
 

回复

1万

帖子

139

TA的资源

版主

16
 
春暖花开i 发表于 2021-7-27 09:33 我用SmartRF上位机来接收发送就不需要延时,应该是我接收端函数不对,我用的TI历程里面的接收函数,程序 ...

那你好好分析程序,用别人的程序必须考虑好跟你的程序有效衔接。

此帖出自RF/无线论坛
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表