搜索
bottom↓
回复: 4

请教大侠们一个关于nrf24L01写buf的问题

[复制链接]

出0入0汤圆

发表于 2011-5-28 14:26:30 | 显示全部楼层 |阅读模式
我用的是silicon labs的C8051F920,但是最近遇到一个很头疼的问题:
用内部ADC采集8位数据,如果不往nrf24L01的write_buf里面写数据,ADC能工作到200kHz(在线调试数据无丢失)
但是一旦我想把数据通过24L01传输出来,ADC采样10kHz还正常,20k就开始不对,到了目标采样频率60k就已经完全不行了(从寄存器的值来看,ADC采样就不对了)...
为了确定ADC没有问题,我还测试了直接计数器写数据给nrf24L01的buf,每秒10kbyte能收到10kbyte,20kbyte能收到18k,30k能收到25k,60k能收到50k,80k甚至更高,永远停留在63.8kbyte/s,当然,60kbyte估计是无线传输的最高速度率。经过核对,我发现数据是连续的,而且没有延时。
我猜有两种可能:
1.timer速度下降了(其实这个不合理,timer是主动的,理论不被无线影响)
2.写buf的时间太长了,所以回到timer中断的时间被延后

但是我想了一下write_buf这个函数,是通过SPI往nrf24L01里面写数据,理论上不占用时间啊。。。

我的逻辑是这样的:
timer计数产生60kHz中断----每一次中断完成一次ADC---当产生32次ADC的时候,调用write_buf把寄存器的32byte数据写给nrf24L01---继续timer中断ADC

代码如下:
INTERRUPT (ADC_ISR, INTERRUPT_ADC0_EOC)
{

   unsigned int data result1=0;
   unsigned char data result2=0;


   //unsigned long mV;                         // measured voltage in mV
   //static unsigned char sample_count = 0;   

   AD0INT = 0;                               // clear ADC0 conv. complete flag
   
   result1= ADC0;                            // copy ADC0 into result
   result2=(result1>>4);

        if(j<TX_PLOAD_WIDTH)
        {
                txTemp[j]=result2;
                j++;
                       
        }
        else if(j >=TX_PLOAD_WIDTH )
        {       
                j=0;
                nRF24L01_Write_Buf(WR_TX_PLOAD, txTemp, TX_PLOAD_WIDTH);
        }
}

其中TX_PLOAD_WIDTH =31

出0入0汤圆

 楼主| 发表于 2011-5-28 14:31:47 | 显示全部楼层
哦,忘了问大侠,还有什么可能会照成这种现象啊?
每次往nrf24L01的buf写32 byte的数据需要大概多长时间啊?

出0入0汤圆

发表于 2011-5-30 12:12:55 | 显示全部楼层
1MS

出0入0汤圆

发表于 2011-5-31 08:41:38 | 显示全部楼层
回复【2楼】mybmyb
1ms

-----------------------------------------------------------------------

这个不能简单地说是 1ms 吧?

这个要看楼主的单位机与NRF24L01的接口是用的硬件SPI还是模拟SPI。模拟SPI的话,不用说,肯定慢,这时会不会有1ms就要看单片机主频、端口翻转速度、程序代码了;硬件SPI的话,就要看硬件SPI初始化时的速率是多大了。

据我测试,用20Mbps的SPI速率,都是可以通讯的,这时,向nrf24L01的buf写32 byte的数据需要的时间就是:32*8/(20*1000000)=12.8us

出0入0汤圆

发表于 2011-5-31 09:50:37 | 显示全部楼层
不好意思,是我的错,不用20MBPS的SPI的速率,会出现问题的,因为NRF24L01最大的SPI速率不超过8M
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 18:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表