这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ㄐ偶际?nrf905 问一个nrf905收数据偶尔出错(大概千分之一的出错概率)

共2条 1/1 1 跳转至

ㄐ偶际?nrf905 问一个nrf905收数据偶尔出错(大概千分之一的出错概率)问题

院士
2006-09-17 18:14:16     打赏
ㄐ偶际?nrf905 问一个nrf905收数据偶尔出错(大概千分之一的出错概率)问题



关键词: ㄐ偶     nrf905     一个     数据     偶尔     出错     大概         

院士
2006-12-22 22:43:00     打赏
2楼
问   我用905进行通信,有近端A和远端B,近端A向远端B发送查询命令,远端B收到查询命令后返回数据给近端A。经过一段时间的调试,近端A可以查询到远端B的数据,但近端A收到的远端B返回的数据会偶尔出错,出错时收到的一包数据全是乱的(收到的一包数据长度为32字节),且无规律(大概一千包错一包)。近端A发出查询命令只有一包,发出后就转成接收方式,远端B平时总是接收方式,收到数据后转成发送方式,连续发送4包数据给近端A。近端A发送查询命令为2包/秒。
  905发送时是采用连续发送的方式,即如果发送的数据很长,我就分N(N<=4)包,这N包顺序发出,发出一包后延时10ms发送下一包。
  905接收时是采用中断方式,即将DR作为单片机的外部中断源。在中断处理函数中读出收到的数据。
  我还作过试验,近段A向远端B发送数据,而远端B不回应,只接收数据,即A发,B收。我发现B接收到的A的查询包出错概率大概7万包数据才错一条(可以接受的出错概率),A发送的速率是40包/秒。我想会不会是由于经常在发送和接收方式之间转换,导致905出错的概率会升高呢,但千分之一的概率太高了点,我也采用延时等方法,但无效果。请教坛上高人,有没有碰到这种情况的?
1: 切换后要待器件稳定后才能发送数据,注意延时的位置合理的协议也很重要。 2: 谢谢切换的延时时间长度远大于905的PDF文件上说的时间长度。而且今天下午还作了个试验,A向B连续发送200包数据(1.5秒),每包32字节,B接收正确。明天用2个A来作实验看看,1个A发,1个A不发,是不是同时收到错误数据。 3: 如果你妥善处理了芯片的工作时序和步骤那剩下就是晶体离散性、天线匹配等问题了。 4: 发现原因了!但不知为什么。发现原因了!但不知为什么。我做了个试验,只有A发,B断电,A发送成功一包数据后马上转为接收状态,我发现:A偶尔(千分之一概率)会进接收中断,接受中断是由DR产生的,我在发送时将中断使能关闭了,通过示波器可以看到发送成功6mS(此时已经通过控制TX_EN将DR置低,再开中断)后,DR又变高了,收到的是乱码。按理说我发送成功后且将DR置低后到下次发送之间DR应该为低才对呀。请问chunyang碰到过这种情况没? 5: 那就是你设置的问题了需要加深对器件手册的阅读和理解。 6: 905的PDF我仔细读了对这种现象,从PDF中找不到理论解释,而且我试了很多种方法,关键就是从发送状态转为接收状态时会出问题。请问chunyang大侠对你的905作过误码率测试没有?我想知道到底是905的特性还是我程序的问题。 7: dr只能读取,"把dr置低"肯定不对。 8: 确保已经通过控制TX_EN将DR置低了吗?确保已经通过控制TX_EN将DR置低了吗? 9: 不要怀疑器件芯片的正确配置很重要。 10: 可以确定我是通过TX_EN将DR置0的。A的流程是 trx_en=0 + tx_en=1 + 延时(进入standby状态)---> 写发送地址和发送数据---> trx_en=1(启动发送) + 延时(等待发送完成) + tx_en=0(转为接收状态)。 11: 今天下午发现跟本机地址有关!!!今天又仔细阅读了PDF,发现我的近端A地址为4字节长,为0000,将地址更改为非全0就不会收到讨厌的DR上跳沿了,看来全0的地址容易受到自己发出的数据的干扰啊。看来还是要仔细钻研帮助文件啊,不过905的帮助文件叙述比较含糊。CC1000的帮助文件就很严谨,不过CC1000使用起来太复杂了,寄存器太多。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]