Hello,
I have a problem with the basicRFPacketIsReady() function. It seems that when I send a packet to my node the basicRFPacketIsReady() function works fine. But when I receive a second packet, then the basicRFPacketIsReady() function doesn't response. And then the basicRFPacketIsReady() function seems to be stuck.
I am using the CC2430/31.
Does anyone knows what is wrong with the basicRFPacketIsReady() function or does anyone knows how I can check If a received packet is ready with just using some flags from the RX registers from the cc2430/31
Thank you!!!
I think the problem must be in the following code of the basic_rf.c file
if( authStatus==SUCCESS ) { if ( (pHdr->fcf0 & BASIC_RF_FCF_BM_L) == (BASIC_RF_FCF_NOACK_L | BASIC_RF_SEC_ENABLED_FCF_BM_L)) { rxi.isReady = TRUE; } }But I don't understand all those parameters like BASIC_RF_FCF_NOACK_L,...Can anyone help me with this?Thank you very much!!!
BASIC_RF_FCF_NOACK_L,...Can anyone help me with this?Thank you very much!!!
hey man~I have the same problem with you!Did you solved it?
Hello Justin,
I'm afraid that you can't solve the problem with using the BasicRF protocol.
I solved the problem by using the protocol SimpliciTI.
I have disussed this on the following URL.
http://e2e.ti.com/support/low_power_rf/f/156/t/127007.aspx?pi239031352=1
If you want to use the same sort of protocol as you use wiht BasicRF. I suggest you would use broadcast message.
You can find this on the following URL.
http://e2e.ti.com/support/low_power_rf/f/156/t/33354.aspx#116047
Normally if you can program in the BasicRF protocol, than you will easily switch over to SimpliciTI.
You can find here some documantation about SimplicTI.
http://www.ti.com/corp/docs/landing/simpliciTI/index.htm?DCMP=hpa_rf_general&HQS=NotApplicable+OT+simpliciti
Here you need to download a .zip file, where you need to execute the .exe file. And than you will be able to look at some example programs where you find also a lot of documantation about how SimpliciTI works and about the syntax of the functions of SimpliciTI.
Good Luck!!!
Best regards, Niels
Hello Niels:
Thank you for you help very very much!!!!!
I have solved this problem ~^_^
but I only set basicRfConfig.ackRequest as FALSE,then it works.however ,
I would like to ask,what`s the function of the basicRfConfig.ackRequest?
Fragrant await news
Best regards, ling
Hello ling,
I'am sorry for my late reply.
In basicRF it is the protocol to send a packet and than wait a while until you received the acknowledgement packet in the function basicRfSend(). If the ACK is successfully received within a predefined waiting time, basicRfSend() returns with status SUCCESS to the application. (You can see this on pages 19,20 of this file http://www.ti.com/lit/ug/swru214a/swru214a.pdf )
However as you set the basicRfConfig.ackRequest as FALSE then you don't wait to an ACK packet.
So if you set the basicRfConfig.ackRequest as FALSE then I would recommend that you have a good PER in your wireless connection. So you need a PER of less then 1 percent
Kind regards, Niels
hello Niels,
In my applicaion,the data size is very small ,just only 2~3bytes in one communication .so I think the PER should be very low,right ?.
The PER has nothing to do with your number of bytes in the data size.
The packet error rate (PER) is the number of incorrectly received data packets divided by the total number of received packets. A packet is declared incorrect if at least one bit is erroneous.
If you want to verify the PER in your communication setup, then you can use the program of the Software examples from the BasicRF protocol. For a good communication setup, you need a PER< 1%.
You can read more about PER in the following link.
http://www.ti.com.cn/cn/lit/ug/swru178b/swru178b.pdf
I hope that this can give you an idee of what PER is.