====== Exercise: Changing the frequency ====== It is obvious, that changing the RF frequency is a fundamental requirement of frequency hopping systems. Therefor programming the RF frequency is the aim of this exercise. Programming the RF frequency is done according chapter 9.1.2 of [[http://www.ti.com/lit/ug/swru346b/swru346b.pdf?ts=1588225642109|CC1200 Users Guide]]. In detail, the HF $f_{RF}$ frequency is computed by: $$ f_{RF}=\frac{f_{VCO}}{LO\ Divider} $$ where $f_{VCO}$ is the frequency of the "Voltage Controlled Oscillator (VCO)" and will be computed by $$ f_{VCO} = \frac{FREQ}{2^{16}} . f_{XOSC} + \frac{FREQOFF}{2^{18}} . f_{XOSC}$$ In this two equations $f_{XOSC}$ is the crystal frequency of the TI boards and equals to $40 MHz$. ''LO Divider'' determines the frequency band of the CC1200 and can be obtained in the ''FSD_BANDSELECT'' part of the "Frequency Synthesizer Configuration" register (''FS_CFG'' register). FREQ is the 24 bit VCO frequency and computed by the FREQ0 (bits 16-23 of VCO frequency), FREQ1 (bits 8-16 of VCO frequency) and FREQ2 (bits 0-7 of VCO frequency) registers. FEQOFF is intended for fine tuning the RF frequency caused by tolerances of the crystal and can be neglected. ===== Requirements ===== This task requires * a ready BeagleBone Black equipped with the CC1200. * 4C attached to a second BeagleBone Black equipped with the CC1200. ===== Tasks ===== * the programming is done by reusing the source files of lesson [[network_protocol_programming_lab:15.3_2_exercise|2. Exercise: Packet Reception]]. Make a copy of the files. * Change the symbol rate to 1.2 kBaud and the preamble count to 6 bytes. If necessary reexport the register value from 4C. * Read chapter 9.12 ff. about programming the RF frequency in the [[http://www.ti.com/lit/ug/swru346b/swru346b.pdf?ts=1588225642109|CC1200 Users Guide]] and implement it. * you should implement a function for programming the frequency and printing the current programmed frequency. * for testing compare your computed values of the FREQ registers with SmartRF Studio. * In your program, set RF to an arbitrary value (e.g. 851 MHz) within the supported frequency band of CC1200. * In SmartRF Studio also change the symbol rate to 1.2 kBaud and the preamble count to 6 Bytes. * Bring 4C in “TX Packet Mode" using the default frequency (858MHz). * start the transmitter. At the receiver, the BeagleBone Black, you should now receive **NO** packet. * Now, stop the transmitter and change the frequency to your selected frequency. * Now, you should be able to receive the packets. ===== Hints ===== * take care on rounding errors. E.g. the frequency should be 868 MHz and not 867.5 MHz.