This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2430 and 2531 END - END Device communication loss

Other Parts Discussed in Thread: CC2531, CC2430, SIMPLICITI, CC2530, CC2431

Hello,

I am trying to setup RF communication between CC2430 and CC2531. Through SMPL_LINK & SMPL_LINKLISTEN communication gets sets up. After that it can send back and forth 2 or 3 messages but after that CC2531 never receives the Packet from CC2430. Whereas on CC2430 I can see that packet was send successfully as (SMPL_SEND returns SMPL_SUCCESS) can anyone tell me where it might go wrong while establishing the communication.

Also wanted to know after establishing that link is there a way down in low level of SimpliciTI to know that the connection is still available or the peer is been disconnected.

As in the above scenario, will CC2430 will be able to come to know that CC2531 never received the last message that was sent. Is there a way in SimpliciTI to know that whether still the device is connected or not to its peer?

Any guidance would be appreciated. Thanks in advance

Thanks!

AD

 

 

  • Based on my above question.

    I have end-end communicaiton link setup between CC2430 and CC2531. Now CC2531 has no issue in transmittin gand receiving the RF messages whereas CC2430 receives the message but it fails to send the message to CC2531... and SMPL_SEND returns back "SMPL_TX_CCA_FAIL" .

    I have setup a loop but didnt setup as infinite loop due to system restrictions... but I have a loop for 4sec and after 4sec it will break out of the reporting what ever return value "SMPL_SEND" has returned.

    Is there a solution or work around to this.... what I am doing right know is if I get any error other than SMPL_SUCCESS from "SMPL_SEND" than I break out and go back to LinkListen mode. But sometime there's case that it does says SMPL_SUCCESS and other end never received the message and CC2430 assumes tht its still linked.

    Also wanted to know is there a way in simpliciTI that applicaiton can check whether the rf connection still exist or not. (also incase of receving/sending failed).

    Thanks In Advance

    Arti

  • You can turn on auto acknowledges in SimpliciTI to have some confirmation the other end of a communication received it.  You will need to turn on the extended API to enable this and change your calls to SMPL_Send to SMPL_SendOpt with the acknowledge bit set in the options parameter.

    Beyond auto acknowledges, there is no low level method to guarantee a link is viable other than to try to communicate on it.  SimpliciTI operates on the assumption that once a link is established, it is always viable.  It is up to the user code to determine if a link has failed catastrophically.

    I'm not sure why you go back to the loop for link listen mode.  In this case, you will establish a new link which will be different from the original link.  Note that you can only setup a total of 30 links in this manner before you exhaust your link port pool.  It seems on the surface that this recovery method is a bit harsh with respect to SimpliciTI operations.

    Jim Noxon

  • Thanks Jim

    I tried most of the alternatives but I still sometime get CCA_FAIL while SMPL_SEND. I also checked the radio registers. I changed TXCTLL = 0x5F and RFPWR = RREG_RADIO_PD = 0 and rest as default value.

    Can you pin point to the area which triggers the "CCA_FAIL" error during SMPL_SEND in software and hardware.

    Still we figuring out why its failing was there any RF radio compatibility issue between CC2430 and CC2531..? Should we still continue using CC2430 or you recommend to upgrade to CC2530.....?

     

    Thanks in advance,

    Aarti

  • Jim,

    Is there possibility that I am not waiting enough time thats the reason I am gettin gCCA_FAIL on SMPL_SEND transmitting.

    What is the valid time wait for CCA during MRFI_Transmit() in mrfi_radio.c for CC2430....?

        *  Wait for CCA to be valid.     */
       Mrfi_DelayUsec( MRFI_RSSI_VALID_DELAY_US );

     

    I never receive CCA_FAIL on CC2531 on toerh END DEVICE...

    As for CC2531 I see theres a register bit thats checked for time wait for CCA in MRFI_Transmit()

    MRFI_RSSI_VALID_WAIT()

    /* Wait for RSSI to be valid. */
    #define MRFI_RSSI_VALID_WAIT()  while(!(RSSISTAT & BV(0)));

    THANKS!

    Arti

  • For the CC2430, the MRFI_RSSI_VALID_DELAY_US is 120us.  On the CC253x this delay is open ended and purely dependent on the status of the RSSI_VALID bit from the RSSI status register.  The later is typically at least 8 bit symbol periods but can be longer depending on the actual RSSI level.

    The key here is to allow the RSSI level to become stable enough to provide a reasonable representation of the actual RF energy seen in the current channel.  Once this delay is met, you should be able to strobe into TX using CCA and immediately test for having moved to the TX state to verify CCA passed.  If you are not in TX state then CCA failed due to excessive RF energy seen.

    Note that the form for detecting RF energy can be either absolute or relative measurements.  Also, the level can be controlled to a certain extent.  I would suggest making what ever form you choose to use the worst case, i.e. most relaxed values to get your code working then tighten it up if you see there is room for improvement.

    Jim Noxon

  • Hello Jim,

    I Have also a communication problem.

    I have downloaded the example of cascade end devices of SimpliciTI 1.1.0 . (I am using the Smart RF04 with CC2431)

    But I don't receive a thing.

    one of my end diveces is sending data. (because my LED 2 id blinking). But the other end device doesn't receive anything.

    Do you have some advice about this problem?

    Thank You!!