完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
小弟初学cc2530,有些地方搞的不太懂
我用的ISTXONCCA立即选通指令,测出FSMSTAT1寄存器的值是0x0A,查了一下数据手册,CCA为0,SAMPLED_CCA为1,TX_ACtiVE为1,表示CCA通过。但是读取了RSSI寄存器的值是0x80,数据手册上说这是无效值。所以我想问,CCA算通过了吗。 如果去掉ISTXONCCA指令,FSMSTAT1的值是0x15,RSSI是0x1e。请问读取的RSSI寄存器值如何转成dB的形式。 最后,最关键的就是我用了while(!(RFIRQF1 & 0x02) ); 语句来检测发送中断,该语句通过了表示产生了Tx中断。是不是表示成功发送了数据。那么为什么我用A,B节点同时给C发送数据,A,B都产生发送中断,而C只能接收到1个(如果A,B不是同时发,有细微时间差,C就能接收到两个),这是否表示发生了冲突,如果发生冲突,为什么CCA却一直显示信道空闲呢?有没有可能是接收端错误 附上发送数据部分的源代码 void rfsend(UINT8* pData,UINT8 length) [ UINT8 i; UINT8 s; RFIRQF1&=~0x02; ISRFOFF; ISFLUSHRX; ISFLUSHRX; RFIRQF0 = ~0x02; RFIRQF1 &= ~0x01; ISFLUSHTX; // Making sure that the TX FIFO is empty. CCACTRL0=0xF8; CCACTRL1=0x0A; RFD = length + 2; // Inserting data for(i=0;i ] UINT8 ccaRetries=4; while(1) [ ISRXON; while(!(RSSISTAT & 0x01));//等待RSSI稳定 s=EA; EA=0; ISTXONCCA; if(FSMSTAT1 & 0x02) [ //确认发送完成 break; ] else [ if (ccaRetries == 0) [ break; ] else [ ccaRetries--; //关闭Rx模式 // RFIM &= ~0x20; ISRFOFF; ISFLUSHRX; ISFLUSHRX; // RFIF = ~0x20; //退避 ] ] ] while(!(RFIRQF1 & 0x02) ); // 等待发送完成 RFIRQF1&=~0x02; ISRXON; ] 希望能指出错误,不甚感激 |
|
相关推荐
5 个讨论
|
|
wenlonghbo 发表于 2018-8-13 09:21 首先感谢您的回答 FSMSTAT1 & 0x02我是根据simpliciTi协议的Transmit函数跟踪后得到的。 第二句话的意思是即使使用了csma机制,如果两个节点再同一时刻发送,还是可能存在丢包的现象吗? 我还想追问一个问题,当两节点发生碰撞的时候,是指有一个节点数据包发送不出去还是指两数据包都能发送出去,只是接收端没有办法接收2个数据包。也就是说出现丢包的情况怎么验证问题出在发送端还是接收端,CC2530有这个机制吗。 |
|
|
|
|
|
jiny 发表于 2018-8-13 09:31 你可以再确认下simpliciTI里的代码。 对的,如果确实是同一时刻的话是有可能的,但是csma在检测信道的时候会检测一段时间的,然后判断信道是否空闲。 碰撞时,两种情况都有可能,但后者居多,你可以用抓包工具捕获空中的所有数据包,就知道有没有发出去还是有没有收到了 |
|
|
|
|
|
wenlonghbo 发表于 2018-8-13 09:41 好的,谢谢了 我把simpliciTi的代码移植出来后还存在冲突,我怀疑和CCA检测不准确有关,因为我读取RSSI值的时候总是0x80,数据手册上说是无效值。只要用了ISTXONCCA,RSSI就是0x80,否则是0x1e,请问这个情况是怎样造成的。 还有就是RFIRQF1的第2位TXDONE为1并不能说明数据发送成功对吧,如果在没有抓包工具的情况下,能够通过这个寄存器判断发送成功与否吗? |
|
|
|
|
|
jiny 发表于 2018-8-13 09:49 CCA的检测是在打开接收状态下完成的 你先需要把接收打开 RFST = ISRXON;,执行命令的。 产生0x80的原因,是因为你要进行CCA检测了,所以把之前接收数据时留下RSSI清了。所以如果没有CCA检测的话,值还是先前接收数据的值。 是发生成功了,但是无线发送端发送出去了并不代表接收端能够收到。 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
340 浏览 1 评论
535 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
781 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
655 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1138 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
65浏览 29评论
175浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
255浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
205浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
60浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 09:50 , Processed in 0.868553 second(s), Total 51, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号