I am a person who is experimenting with the CC1120 in the environment shown in the picture below.
The CC1120 module acts as a RX and is composed of an mcu and a CC1120 chip, the CC1120 chip is controlled by the MCU.
The CC1120 module is manufactured, not a commercial product.
BOOSTXL-CC1120-90 is used as TX and is a commercial product of TI.
BOOSTXL-CC1120-90 interlocks with SMART RF and can transmit packets with the set Carrier Frequency through Packet TX of SMART RF in PC.
I've asked a similar question before (link below)
link : https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1206681/cc1120-i-have-a-problem-with-nothing-being-stored-in-the-rx-fifo/4555118#4555118
I understand that the following steps are required to rx the TX packets on the CC1120 module
1. Reset CC1120
2. Write configuration registers
3. Calibrate the synth (if autocal is not enabled)
4. Strobe SRX
5. Wait for the packet to be received (Packet received signal asserted)
6. Check if there are byte in the FIFO (the packet received signal will also be asserted if filtering took place).
7. Read as many bytes as indicated by the NUM_RXBYTES register.
Based on that content, I wrote a code.
The code operated in the main statement is as shown in the figure below.
The main statement consists of the following 4 functions.
Contents of each function are as follws.
1. Freq_RX() : Function that sets the CC1120 register value in the CC1120 module. Using register values extracted from SMARTRF
2. ManualCalibration() : Calibrate the synth function. Produced by reffering to cc112x_easy_link_rx.c
3. RX_Radio() : RX FIFO, etc. This function handles the overall contents related to RX. Produced by referring to runRX() function in cc112x_easy_link_rx.c
I think there is something wrong with the RX_Radio() function.
The RX_Radio() function is as follows.
First, I strobe the SRX.
Then I checked if there are byte in the RXFIFO. (If the IOCFG2 register value in 0x06, I know that the bye is checked in RXFIFO)
Afterr that, the NUM_RXBYTES register was read, and if the value was not 0, the RXFIFO error was checked.(by check the marcstate register value & 0x1F = 0x11 )
If there was no error, the RXFIFO value was stored in the rxbuffer variable and the value was checked.
However, when reading the current NUM_RXBYTES register, even though BOOSTXL-CC1120-90 is sending packets, it continues to repeat and the value is confirmed as 0.
I'm worried that I executed the code when there is no byte in RXFIFO.
I would really appreciate it if you could let me know what went wrong in the process I was going through.
Thank you for reading this long post and any advice will be of great help to me.
- by Kim -