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.

cc1200 can not write command stobe SRX?

Other Parts Discussed in Thread: TMDSLCDK138, CC1200

i use the TMDSLCDK138 kit to control the cc1200. 

(1) i finish the TX packets. i can get the pluse of the WAKEUP signal from the GPIO2(config_GPIO2=WAKEUP_MCU=0x14) after i finish TX a packet.

(2) when i write the command stobe SRX=0x34, the GPIO2 will be asserted and keep high. then i can not write anything to cc1200.

but i do not write the command stobe SRX , the cc1200 will work normal. 

i do not understand what happen to it? could you give me some advice?

  • Please provide your register settings and some pseudo code of what you are doing. Make your code as simple as possible.

    I have used the CC120x_easy_link example with only some small modifications and are not able to reproduce shat you are seeing.

    Modifications:

    In cc120x_easy_link_reg_config.h, CC120X_IOCFG2 is changed from 0x06 to 0x14.

    In cc120x_easy_link_tx.c, an RX strobe is added:

    // Infinite loop
        while(TRUE) {
    
            // Wait for button push
            if(bspKeyPushed(BSP_KEY_ALL)) {
    
                // Continiously sent packets until button is pressed
                do {
    
                    // Create a random packet with PKTLEN + 2 byte packet
                    // counter + n x random bytes
                    createPacket(txBuffer);
    
                    // Write packet to TX FIFO
                    cc120xSpiWriteTxFifo(txBuffer, sizeof(txBuffer));
    
                    // Strobe TX to send packet
                    trxSpiCmdStrobe(CC120X_STX);
    
                    // Wait for interrupt that packet has been sent.
                    // (Assumes the GPIO connected to the radioRxTxISR function is
                    // set to GPIOx_CFG = 0x06)
                    while(packetSemaphore != ISR_ACTION_REQUIRED);
                    
                    trxSpiCmdStrobe(CC120X_SRX); // SRX strobe added
    
                    // Clear semaphore flag
                    packetSemaphore = ISR_IDLE;
    
                    // Update packet counter
                    packetCounter++;
                    // Update LCD
                    updateLcd();
                    
                    // Wait for a random amount of time between each packet
                    waitMs(3*(rand()%10+3));
                 
                } while (!bspKeyPushed(BSP_KEY_ALL));
            }
        }
    

    Below is screenplot ofSPI + GPIO2 when transmitting a packet and then strobing IDLE:

    Zoomed in on TX:

    Zoomed in on SRX:

    As you can see, the MCU_WAKEUP is only asserted after a packet has been transmitted.

  • thanks for your reply!

    (1)i am sorry that i do not say it clearly.

     

    this picture of logic wave was gotten after i finished sending a packet,  i can got the pluse of GPIO2 after i finish sending a packet then i have read the 0x94=MARC_STATUS1  register and got the right value b01000000=TX finished successfully . i just want to know Whether it can prove that  i have finished sending a packet rightly?

    (2) i have made two cc1200 boards by myself. i can write the command strobe SRX and the GPIO2 keep low because there is no signal received by the antenna in one board. But in other one, i can write the STX and get the pluse of GPIO2 after finishing sending a packet.

    the GPIO2 and SO will keep high and i can not do anything to the CC1200 after  i write the SRX strobe. i think it may be a hardware problem. could you give me some advice to find out problems?

    thank you for your reply!

  • Hi

    I have confirmed to you in a previous post that is correct that the MCU_WAKEUP is asserted after TX.

    In RX, it should not assert when you send an SRX command, but when the radio returns to IDLE (for a number of different reasons). Why it retuned to IDLE, you can find out by reading MARC_STATUS_OUT.

    I am not able to reproduce your problem and it is therefore difficult to help you. One suggestion is to use a scope to ensure that you are satisfying the SPI spec. in the user guide. If not, chips might not interpret your SRX strobe correctly.

    Have you verified that your radio is in RX state after the SRX strobe? Are you able to receive packets? Do MARCSTATE show RX STATE? Is the current consumption as expected?

    Siri