firmware: rffc frac, if gain
This commit is contained in:
@ -454,7 +454,9 @@ uint16_t rffc5071_config_synth_int(uint16_t lo) {
|
|||||||
uint8_t fbkdiv;
|
uint8_t fbkdiv;
|
||||||
uint16_t n;
|
uint16_t n;
|
||||||
uint16_t tune_freq;
|
uint16_t tune_freq;
|
||||||
|
uint16_t p1nmsb;
|
||||||
|
uint8_t p1nlsb;
|
||||||
|
|
||||||
LOG("# config_synth_int\n");
|
LOG("# config_synth_int\n");
|
||||||
|
|
||||||
/* Calculate n_lo */
|
/* Calculate n_lo */
|
||||||
@ -481,8 +483,12 @@ uint16_t rffc5071_config_synth_int(uint16_t lo) {
|
|||||||
set_RFFC5071_PLLCPL(2);
|
set_RFFC5071_PLLCPL(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
n = (fvco / fbkdiv) / REF_FREQ;
|
uint64_t tmp_n = ((uint64_t)fvco << 29ULL) / (fbkdiv*REF_FREQ) ;
|
||||||
tune_freq = 50*n*fbkdiv/lodiv;
|
n = tmp_n >> 29ULL;
|
||||||
|
p1nmsb = (tmp_n >> 13ULL) & 0xffff;
|
||||||
|
p1nlsb = (tmp_n >> 5ULL) & 0xff;
|
||||||
|
|
||||||
|
tune_freq = REF_FREQ*tmp_n*fbkdiv/lodiv / (1 << 29);
|
||||||
LOG("# lo=%d n_lo=%d lodiv=%d fvco=%d fbkdiv=%d n=%d tune_freq=%d\n",
|
LOG("# lo=%d n_lo=%d lodiv=%d fvco=%d fbkdiv=%d n=%d tune_freq=%d\n",
|
||||||
lo, n_lo, lodiv, fvco, fbkdiv, n, tune_freq);
|
lo, n_lo, lodiv, fvco, fbkdiv, n, tune_freq);
|
||||||
|
|
||||||
@ -490,15 +496,15 @@ uint16_t rffc5071_config_synth_int(uint16_t lo) {
|
|||||||
set_RFFC5071_P1LODIV(n_lo);
|
set_RFFC5071_P1LODIV(n_lo);
|
||||||
set_RFFC5071_P1N(n);
|
set_RFFC5071_P1N(n);
|
||||||
set_RFFC5071_P1PRESC(fbkdiv >> 1);
|
set_RFFC5071_P1PRESC(fbkdiv >> 1);
|
||||||
set_RFFC5071_P1NMSB(0);
|
set_RFFC5071_P1NMSB(p1nmsb);
|
||||||
set_RFFC5071_P1NLSB(0);
|
set_RFFC5071_P1NLSB(p1nlsb);
|
||||||
|
|
||||||
/* Path 2 */
|
/* Path 2 */
|
||||||
set_RFFC5071_P2LODIV(n_lo);
|
set_RFFC5071_P2LODIV(n_lo);
|
||||||
set_RFFC5071_P2N(n);
|
set_RFFC5071_P2N(n);
|
||||||
set_RFFC5071_P2PRESC(fbkdiv >> 1);
|
set_RFFC5071_P2PRESC(fbkdiv >> 1);
|
||||||
set_RFFC5071_P2NMSB(0);
|
set_RFFC5071_P2NMSB(p1nmsb);
|
||||||
set_RFFC5071_P2NLSB(0);
|
set_RFFC5071_P2NLSB(p1nlsb);
|
||||||
|
|
||||||
rffc5071_regs_commit();
|
rffc5071_regs_commit();
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ void update_switches(void)
|
|||||||
#define MIN_HP_FREQ_MHZ (2700)
|
#define MIN_HP_FREQ_MHZ (2700)
|
||||||
#define MAX_HP_FREQ_MHZ (6800)
|
#define MAX_HP_FREQ_MHZ (6800)
|
||||||
|
|
||||||
#define MAX2837_FREQ_NOMINAL_HZ (2600000000)
|
static uint32_t MAX2837_FREQ_NOMINAL_HZ=2600000000;
|
||||||
#define MAX2837_FREQ_NOMINAL_MHZ (MAX2837_FREQ_NOMINAL_HZ / FREQ_ONE_MHZ)
|
#define MAX2837_FREQ_NOMINAL_MHZ (MAX2837_FREQ_NOMINAL_HZ / FREQ_ONE_MHZ)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -812,6 +812,17 @@ usb_request_status_t usb_vendor_request_set_txvga_gain(
|
|||||||
return USB_REQUEST_STATUS_OK;
|
return USB_REQUEST_STATUS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
usb_request_status_t usb_vendor_request_set_if_freq(
|
||||||
|
usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage
|
||||||
|
) {
|
||||||
|
if( stage == USB_TRANSFER_STAGE_SETUP ) {
|
||||||
|
MAX2837_FREQ_NOMINAL_HZ = (uint32_t)endpoint->setup.index * 1000 * 1000;
|
||||||
|
return USB_REQUEST_STATUS_STALL;
|
||||||
|
} else {
|
||||||
|
return USB_REQUEST_STATUS_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static const usb_request_handler_fn vendor_request_handler[] = {
|
static const usb_request_handler_fn vendor_request_handler[] = {
|
||||||
NULL,
|
NULL,
|
||||||
usb_vendor_request_set_transceiver_mode,
|
usb_vendor_request_set_transceiver_mode,
|
||||||
@ -835,6 +846,7 @@ static const usb_request_handler_fn vendor_request_handler[] = {
|
|||||||
usb_vendor_request_set_lna_gain,
|
usb_vendor_request_set_lna_gain,
|
||||||
usb_vendor_request_set_vga_gain,
|
usb_vendor_request_set_vga_gain,
|
||||||
usb_vendor_request_set_txvga_gain,
|
usb_vendor_request_set_txvga_gain,
|
||||||
|
usb_vendor_request_set_if_freq,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const uint32_t vendor_request_handler_count =
|
static const uint32_t vendor_request_handler_count =
|
||||||
|
Reference in New Issue
Block a user