19.08.2013 Views

Single-Chip Low Power RF Transceiver for Narrowband Systems ...

Single-Chip Low Power RF Transceiver for Narrowband Systems ...

Single-Chip Low Power RF Transceiver for Narrowband Systems ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

12.6. Image Rejection Calibration<br />

For perfect image rejection, the phase and<br />

gain of the “I” and “Q” parts of the analog<br />

RX chain must be perfectly matched. To<br />

improve the image rejection, the “I” and<br />

“Q” phase and gain difference can be fine-<br />

tuned<br />

by adjusting the PHASE_COMP and<br />

GAIN_COMP registers. This allows<br />

com pensation <strong>for</strong> process variations and<br />

other<br />

nonidealities. The calibration is done<br />

by injecting a signal at the image<br />

frequency, and adjusting the phase and<br />

gain difference <strong>for</strong> minimum RSSI value.<br />

During image rejection calibration, an<br />

unmodulated carrier should be applied at<br />

the image frequency (614.4 kHz below the<br />

desired channel), No signal should<br />

be<br />

present in the desired<br />

channel. The signal<br />

level should be 50 - 60 dB above the<br />

sen sitivity in the desired channel, but the<br />

optim um level will vary from application to<br />

application. Too<br />

large input level gives<br />

poor results due to limited linearity<br />

in the<br />

analog IF chain, while too low<br />

input level<br />

gives poor results due<br />

to the receiver<br />

noise floor.<br />

For best RSSI accuracy,<br />

use<br />

AGC_AVG(1:0] = 11<br />

during image<br />

rejection calibration (RSSI value is<br />

averaged over 16 filter output samples).<br />

The RSSI register update rate then equals<br />

the receiver channel bandwidth (set in<br />

FILTER register) divided by 8, as the filter<br />

output rate is twice the receiver channel<br />

bandwidth. This gives the minimum<br />

waiting<br />

time between RSSI register reads<br />

(0.5 ms is used below). <strong>Chip</strong>con<br />

recommends the following image<br />

calibration<br />

procedure:<br />

1.<br />

Define 3 variables: XP = 0, XG = 0 and DX = 64.<br />

Go to step 3.<br />

2. Set DX = DX/2.<br />

3.<br />

Write XG to GAIN_COMP register.<br />

4. If XP+2·DX < 127 then<br />

write XP+2·DX to PHASE_COMP register<br />

else<br />

write 127 to PHASE_COMP register.<br />

5. Wait at least 3 ms. Measure signal strength Y4<br />

as filtered average of 8 reads from RSSI register<br />

with 0.5 ms of delay between each RSSI read.<br />

6. Write XP+DX to PHASE_COMP register.<br />

7. Wait at least 3 ms. Measure signal strength Y3<br />

as filtered average of 8 reads from RSSI register<br />

with 0.5 ms of delay between each RSSI read.<br />

8.<br />

Write XP to PHASE_COMP register.<br />

9. Wait at least 3 ms. Measure signal strength Y2<br />

as filtered average of 8 reads from RSSI register<br />

with 0.5 ms of delay between each RSSI read.<br />

CC1021<br />

10. Write XP-DX to PHASE_COMP register.<br />

11. Wait at least 3 ms. Measure signal strength<br />

Y1<br />

as filtered average of 8 reads from RSSI register<br />

with 0.5 ms of delay between each RSSI read.<br />

12. Write XP-2·DX to PHASE_COMP register.<br />

13. Wait at least 3 ms. Measure signal strength<br />

Y0<br />

as filtered average<br />

of 8 reads from RSSI register<br />

with 0.5 ms of delay between each RSSI read.<br />

14. Set AP = 2·(Y0-Y2+Y4) - (Y1+Y3).<br />

15. If AP > 0 then<br />

set DP = ROUND( 7·DX· (2·(Y0-Y4)+Y1-<br />

Y 3) / (10·AP)<br />

)<br />

else<br />

if Y0+Y1 > Y3+Y4 then<br />

set<br />

DP = DX<br />

else<br />

set DP = -DX.<br />

16. If DP > DX then<br />

set DP = DX<br />

else<br />

if DP < -DX then set DP = -DX.<br />

17. Set XP = XP+DP.<br />

18.<br />

Write XP to PHASE_COMP<br />

register.<br />

19. If XG+2·DX < 127 then<br />

write XG+2·DX to GAIN_COMP register<br />

else<br />

write 127 to GAIN_COMP register.<br />

20. Wait at least 3 ms. Measure signal strength Y4<br />

as filtered average of 8 reads from RSSI register<br />

with 0.5 ms of delay between each RSSI read.<br />

21. Write XG+DX to GAIN_COMP register.<br />

22. Wait at least 3 ms. Measure signal strength Y3<br />

as filtered average of 8 reads<br />

from RSSI register<br />

with 0.5 ms of delay between each RSSI read.<br />

23. Write XG to GAIN_COMP register.<br />

24. Wait at least 3 ms. Measure signal strength Y2<br />

as filtered average of 8 reads from RSSI register<br />

with 0.5 ms of delay between each RSSI read.<br />

25. Write XG-DX to GAIN_COMP register.<br />

26. Wait at least 3 ms. Measure signal strength Y1<br />

as filtered average of 8 reads from RSSI register<br />

with 0.5 ms of delay between each<br />

RSSI read.<br />

27. Write XG-2·DX to GAIN_COMP register.<br />

28. Wait at least 3 ms. Measure signal strength Y0<br />

as filtered average of 8 reads from RSSI register<br />

with 0.5 ms of delay between each RSSI read.<br />

29. Set AG = 2·(Y0-Y2+Y4) - (Y1+Y3).<br />

30. If AG > 0 then<br />

set DG = ROUND( 7·DX·(2·(Y0-Y4)+Y1-<br />

Y3) / (10·AG) )<br />

else<br />

if Y0+Y1 > Y3+Y4 then<br />

set DG = DX<br />

else<br />

set DG = -DX.<br />

31. If DG > DX then<br />

set DG = DX<br />

else<br />

if DG < -DX then set DG = -DX.<br />

32. Set XG = XG+DG.<br />

33. If DX > 1 then go to step 2.<br />

34. Write XP to PHASE_COMP register and<br />

XG to GAIN_COMP register.<br />

If repeated calibration gives varying<br />

results, try to change the input level or<br />

increase the number of RSSI reads N. A<br />

good starting point is N=8. As accuracy is<br />

SWRS045B Page 35 of 89

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!