Micrel MICRF505BML/YML
October 2006 28
M9999-103106
+1 408-944-0800
The modulator filter will not influence the frequency
deviation as long as the programmed cut-off
frequency is above the actual bit rate.
The frequency deviation must be programmed so
that the modulation index (2 x single sided frequency
deviation/Baudrate [bps]) always is greater than or
equal to 2 including the total frequency offset
between the receiver and the transmitter:
f
DEV
= Baudrate + f
OFFSET
The calculated f
DEV
should be used to calculate the
needed receiver bandwidth, see chapter Switched
capacitor filter.
Using the XCO-tune Bits
The RF chip has a built-in mechanism for tuning the
frequency of the crystal oscillator and is often used
in combination with the Frequency Error Estimator
(FEE). The XCO tuning is designed to eliminate or
reduce initial frequency tolerance of the crystal
and/or the frequency stability over temperature. If
the value in XCO_tune is increased (adding
capacitance), the frequency will decrease.
The XCO uses two external capacitors (see figure
5). The value of these will strongly affect the tuning
range. With a 16.0 MHz crystal (TN4-26011 from
Toyocom), and external capacitor values of 1.5 pF,
the tuning range will be approximately symmetrical
around the center frequency. A XCO_tune >16 will
decrease the frequency and vice versa (see figure
6).
A procedure for using the XCO_tune feature in
combination with the FEE is given below. The
MICRF505 measures the frequency offset between
the demodulated signal and the LO and tune the
XCO so the LO frequency is equal to received
carrier frequency.
A procedure like this can be called during production
(storing the calibrated XCO_tune value), at regular
intervals or implemented in the communication
protocol when the frequency has changed.
The FEE will count “UP”-pulses and “DOWN”-pulses
(pulses out of the demodulator when a logic “1” or
logic “0”, resp.., is received). The FEE can count
pulses for n bits, where n = 8, 16, 32 or 64.
Example: In FEE, count UP+DOWN pulses,
counting 8 bits:
A perfect case ==> FEE = 0
If FEE > 0: LO is too low, increase LO by decreasing
XCO_tune value and vice versa for FEE < 0.
FEE field holds a number in the range -128, … ,
127. However, it keeps counting above/below the
range, which is:
If FEE = -128 and still counting dwn-pulses:
1) =>-129 = +127
2) 126
3) 125
…
To avoid this situation, always make sure max count
is between limits. Suggestion: Count for 8 (or 16)
bits only.
Procedure description:
In the procedure below, UP+DWN pulses are
counted, and only the sign of the FEE is used. The
value of n is 8 or 16.
Assumption:
A transmitter is sending a 1010… pattern at the
correct frequency and bitrate.
The wanted receiver frequency is the mid-point
between the “0” and “1” frequencies.
Input:
Nothing
Output
The best XCO_tune value (giving the
lowest IFEEI)
Local variables:
XCO_Present: (5-bit) holds present value
in XCO_tune bits
XCO_Step: (4-bit) holds
increment/decrement of XCO_tune bits
SCO_Sign: (1 bit) holds POS or NEG
(increment/cerement) increasing LO is
done by reducing the XCO_tune value
XCO TUNE PROCEDURE
INT:
XCO_Present = 0
XCO_Step = 32
XCO_Sign = NEG
Control_Word =
Default RX, clocks match transmitter
LOOP:
XCO_Step = XCO_Step/2