firmware: rffc frac, if gain
This commit is contained in:
@ -454,6 +454,8 @@ uint16_t rffc5071_config_synth_int(uint16_t lo) {
|
||||
uint8_t fbkdiv;
|
||||
uint16_t n;
|
||||
uint16_t tune_freq;
|
||||
uint16_t p1nmsb;
|
||||
uint8_t p1nlsb;
|
||||
|
||||
LOG("# config_synth_int\n");
|
||||
|
||||
@ -481,8 +483,12 @@ uint16_t rffc5071_config_synth_int(uint16_t lo) {
|
||||
set_RFFC5071_PLLCPL(2);
|
||||
}
|
||||
|
||||
n = (fvco / fbkdiv) / REF_FREQ;
|
||||
tune_freq = 50*n*fbkdiv/lodiv;
|
||||
uint64_t tmp_n = ((uint64_t)fvco << 29ULL) / (fbkdiv*REF_FREQ) ;
|
||||
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",
|
||||
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_P1N(n);
|
||||
set_RFFC5071_P1PRESC(fbkdiv >> 1);
|
||||
set_RFFC5071_P1NMSB(0);
|
||||
set_RFFC5071_P1NLSB(0);
|
||||
set_RFFC5071_P1NMSB(p1nmsb);
|
||||
set_RFFC5071_P1NLSB(p1nlsb);
|
||||
|
||||
/* Path 2 */
|
||||
set_RFFC5071_P2LODIV(n_lo);
|
||||
set_RFFC5071_P2N(n);
|
||||
set_RFFC5071_P2PRESC(fbkdiv >> 1);
|
||||
set_RFFC5071_P2NMSB(0);
|
||||
set_RFFC5071_P2NLSB(0);
|
||||
set_RFFC5071_P2NMSB(p1nmsb);
|
||||
set_RFFC5071_P2NLSB(p1nlsb);
|
||||
|
||||
rffc5071_regs_commit();
|
||||
|
||||
|
@ -96,7 +96,7 @@ void update_switches(void)
|
||||
#define MIN_HP_FREQ_MHZ (2700)
|
||||
#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)
|
||||
|
||||
/*
|
||||
@ -812,6 +812,17 @@ usb_request_status_t usb_vendor_request_set_txvga_gain(
|
||||
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[] = {
|
||||
NULL,
|
||||
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_vga_gain,
|
||||
usb_vendor_request_set_txvga_gain,
|
||||
usb_vendor_request_set_if_freq,
|
||||
};
|
||||
|
||||
static const uint32_t vendor_request_handler_count =
|
||||
|
Reference in New Issue
Block a user