. | ||||
FXOSC | | always 32 Mhz | | Crystal oscillator frequency | | int value | |
FSTEP | | always 61 hz | | FSTEP = FXOSC / ( 2 ^ 19 ) | | int value | |
. | ||||
Reg0 | | RegFrfMsb (0x07) | | MSB of the RF carrier frequency | | 8-bit hex value | |
Reg1 | | RegFrfMid (0x08) | | Middle byte of the RF carrier frequency | | 8-bit hex value | |
Reg2 | | RegFrfLsb (0x09) | | LSB of the RF carrier frequency | | 8-bit hex value | |
. | ||||
Frf = Fstep ⋅ Frf(23;0) |
/*****************************************************************/
#include
#include
#include
#define FXOSC 32000000
// #define FSTEPdiv 524288
uint32_t rfm_freq(uint8_t reg0, uint8_t reg1, uint8_t reg2)
{
uint8_t FSTEP;
uint32_t FSTEPdiv, RegsBigEndian, frequency;
FSTEPdiv = pow(2,19);
FSTEP = FXOSC / FSTEPdiv;
RegsBigEndian = (reg0 << 16) | (reg1 << 8) | reg2;
frequency = FSTEP * RegsBigEndian;
return frequency;
}
void main(void)
{
uint8_t reg0, reg1, reg2;
// 433.92 MHz
reg0 = 0x6C;
reg1 = 0x5C;
reg2 = 0xA0;
printf("%d\n", rfm_freq(reg0, reg1, reg2));
}
/*****************************************************************/