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.

RTOS/CC1310: General procedure for RF command execution

Part Number: CC1310


Tool/software: TI-RTOS

Hi Team,

In order to use the chip better, I want to know the execution process of a proprietary RF command (such as RF_cmdPropTx).

According to the manual description, my current understanding is: The ARM Cortex-M3 sends the command ID to the Radio Doorbell's CMDR register, and the Radio Doorbell then notifies the radio CPU to read the command ID. The radio CPU reads the parameters and payloads in the system RAM according to the command ID, and puts them in the radio RAM. Then the radio CPU parses and sends the data, and finally updates the execution result to the CMDSTA register.

I hope that you can describe this process and mechanism in as much detail as possible in an easy-to-understand language.

  • We do not have any other documentation that describes this in another way, and from a user standpoint it should not be needed either.
    We strongly recommend all our customers to use our RF driver, and reading its documentation should be sufficient for making an application using the radio peripheral:

    dev.ti.com/.../_r_f_8h.html

    It could also be useful to take a look at:

    dev.ti.com/.../rf-core-index.html

    Siri
  • Ok,I want to know the state of the command to make it easier for me to understand the manual.

    1.According to the block diagram, when does the command submission, parsing, and execution occur separately?

    2.What is the difference between CMDSTA and cmd.status?They represent the results of command parsing and execution, respectively?

    3.When the command is executed, it will update the status value and generate an event interrupt. It can prompt us that we have received the data, but why should we judge the status in the task?

    /* Schedule RX */
            RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropRxSniff, RF_PriorityNormal, &callback, RF_EventRxEntryDone);
    
            /* Log RX_SNIFF status */
            switch(RF_cmdPropRxSniff.status) {
                case PROP_DONE_IDLE:
                    /* Idle based on RSSI */
                    worStatistics.doneIdle++;
                    break;
                case PROP_DONE_IDLETIMEOUT:
                    /* Idle based on PQT */
                    worStatistics.doneIdleTimeout++;
                    break;
                case PROP_DONE_RXTIMEOUT:
                    /* Got valid preamble on the air, but did not find sync word */
                    worStatistics.doneRxTimeout++;
                    break;
                case PROP_DONE_OK:
                    /* Received packet */
                    worStatistics.doneOk++;
                    break;
                default:
                    /* Unhandled status */
                    break;
            };