firmware: rffc frac, if gain

This commit is contained in:
Hoernchen
2013-06-15 01:01:51 +02:00
parent 5fdfabe2db
commit bee537dc01
2 changed files with 26 additions and 8 deletions

View File

@ -454,7 +454,9 @@ 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");
/* Calculate n_lo */
@ -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();

View File

@ -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 =