mirror of
https://github.com/ttrftech/NanoVNA.git
synced 2025-12-06 03:31:59 +01:00
add preliminaly calibration
This commit is contained in:
parent
01057921f6
commit
9dda579abe
45
ili9431.c
45
ili9431.c
|
|
@ -647,7 +647,8 @@ void sweep_tail()
|
|||
void
|
||||
cartesian_scale(float re, float im, int *xp, int *yp)
|
||||
{
|
||||
float scale = 4e-3;
|
||||
//float scale = 4e-3;
|
||||
float scale = 4e-4;
|
||||
int x = WIDTH / 2 - re * scale;
|
||||
int y = HEIGHT / 2 + im * scale;
|
||||
if (x < 0) x = 0;
|
||||
|
|
@ -786,21 +787,55 @@ force_set_markmap(void)
|
|||
void plot_into_index(float measured[101][2][2])
|
||||
{
|
||||
int i, t;
|
||||
float coeff[2];
|
||||
for (i = 0; i < 101; i++) {
|
||||
int x = i * (WIDTH-1) / (101-1);
|
||||
for (t = 0; t < TRACES_MAX; t++) {
|
||||
int n = t % 2;
|
||||
if (!trace[t].enabled)
|
||||
continue;
|
||||
|
||||
coeff[0] = measured[i][n][0];
|
||||
coeff[1] = measured[i][n][1];
|
||||
if (cal_status & CALSTAT_APPLY) {
|
||||
if (n == 0) {
|
||||
float sq = cal_data[i][CAL_OPEN][0] * cal_data[i][CAL_OPEN][0]
|
||||
+ cal_data[i][CAL_OPEN][1] * cal_data[i][CAL_OPEN][1];
|
||||
sq /= 1e5;
|
||||
float m0 = measured[i][n][0];
|
||||
float m1 = measured[i][n][1];
|
||||
if (cal_status & CALSTAT_LOAD) {
|
||||
m0 -= cal_data[i][CAL_LOAD][0];
|
||||
m1 -= cal_data[i][CAL_LOAD][1];
|
||||
}
|
||||
coeff[0] = (m0 * cal_data[i][CAL_OPEN][0]
|
||||
+ m1 * cal_data[i][CAL_OPEN][1]) / sq;
|
||||
coeff[1] = (m1 * cal_data[i][CAL_OPEN][0]
|
||||
- m0 * cal_data[i][CAL_OPEN][1]) / sq;
|
||||
} else {
|
||||
float sq = cal_data[i][CAL_THRU][0] * cal_data[i][CAL_THRU][0]
|
||||
+ cal_data[i][CAL_THRU][1] * cal_data[i][CAL_THRU][1];
|
||||
sq /= 1e5;
|
||||
float m0 = measured[i][n][0];
|
||||
float m1 = measured[i][n][1];
|
||||
if (cal_status & CALSTAT_ISOLN) {
|
||||
m0 -= cal_data[i][CAL_ISOLN][0];
|
||||
m1 -= cal_data[i][CAL_ISOLN][1];
|
||||
}
|
||||
coeff[0] = (m0 * cal_data[i][CAL_THRU][0]
|
||||
+ m1 * cal_data[i][CAL_THRU][1]) / sq;
|
||||
coeff[1] = (m1 * cal_data[i][CAL_THRU][0]
|
||||
- m0 * cal_data[i][CAL_THRU][1]) / sq;
|
||||
}
|
||||
}
|
||||
|
||||
if (trace[t].polar) {
|
||||
int x1, y1;
|
||||
cartesian_scale(measured[i][n][1], measured[i][n][0], &x1, &y1);
|
||||
cartesian_scale(coeff[1], coeff[0], &x1, &y1);
|
||||
trace_index[t][i] = INDEX(x1, y1, i);
|
||||
//mark_map(x1>>5, y1>>5);
|
||||
} else {
|
||||
int y1 = logmag(measured[i][n]) * 29;
|
||||
int y1 = logmag(coeff) * 29;
|
||||
trace_index[t][i] = INDEX(x, y1, i);
|
||||
//mark_map(x>>5, y1>>5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
55
main.c
55
main.c
|
|
@ -216,14 +216,8 @@ int16_t dsp_disabled = FALSE;
|
|||
float measured[101][2][2];
|
||||
uint32_t frequencies[101];
|
||||
|
||||
float caldata[101][5][2];
|
||||
uint16_t cal_status;
|
||||
|
||||
#define CAL_LOAD 0
|
||||
#define CAL_OPEN 1
|
||||
#define CAL_SHORT 2
|
||||
#define CAL_THRU 3
|
||||
#define CAL_ISOLN 4
|
||||
float cal_data[101][5][2];
|
||||
|
||||
|
||||
|
||||
|
|
@ -468,13 +462,50 @@ static void cmd_cal(BaseSequentialStream *chp, int argc, char *argv[])
|
|||
return;
|
||||
}
|
||||
|
||||
char *cmd = argv[1];
|
||||
int s;
|
||||
if (strcmp(cmd, "load")) {
|
||||
cal_status |= CAL_LOAD;
|
||||
memcpy(caldata[CAL_LOAD], measured[0], sizeof measured[0]);
|
||||
char *cmd = argv[0];
|
||||
int s, d, i;
|
||||
if (strcmp(cmd, "load") == 0) {
|
||||
cal_status |= CALSTAT_LOAD;
|
||||
s = 0;
|
||||
d = CAL_LOAD;
|
||||
} else if (strcmp(cmd, "open") == 0) {
|
||||
cal_status |= CALSTAT_OPEN;
|
||||
s = 0;
|
||||
d = CAL_OPEN;
|
||||
} else if (strcmp(cmd, "short") == 0) {
|
||||
cal_status |= CALSTAT_SHORT;
|
||||
s = 0;
|
||||
d = CAL_SHORT;
|
||||
} else if (strcmp(cmd, "thru") == 0) {
|
||||
cal_status |= CALSTAT_THRU;
|
||||
s = 1;
|
||||
d = CAL_THRU;
|
||||
} else if (strcmp(cmd, "isoln") == 0) {
|
||||
cal_status |= CALSTAT_ISOLN;
|
||||
s = 1;
|
||||
d = CAL_ISOLN;
|
||||
} else if (strcmp(cmd, "done") == 0) {
|
||||
cal_status |= CALSTAT_APPLY;
|
||||
return;
|
||||
} else if (strcmp(cmd, "reset") == 0) {
|
||||
cal_status = 0;
|
||||
return;
|
||||
} else if (strcmp(cmd, "data") == 0) {
|
||||
chprintf(chp, "%d %d\r\n", cal_data[0][CAL_LOAD][0], cal_data[0][CAL_LOAD][1]);
|
||||
chprintf(chp, "%d %d\r\n", cal_data[0][CAL_OPEN][0], cal_data[0][CAL_OPEN][1]);
|
||||
chprintf(chp, "%d %d\r\n", cal_data[0][CAL_SHORT][0], cal_data[0][CAL_SHORT][1]);
|
||||
chprintf(chp, "%d %d\r\n", cal_data[0][CAL_THRU][0], cal_data[0][CAL_THRU][1]);
|
||||
chprintf(chp, "%d %d\r\n", cal_data[0][CAL_ISOLN][0], cal_data[0][CAL_ISOLN][1]);
|
||||
return;
|
||||
} else {
|
||||
chprintf(chp, "usage: cal {load|open|short|thru|isoln|done}\r\n");
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < 101; i++) {
|
||||
cal_data[i][d][0] = measured[i][s][0];
|
||||
cal_data[i][d][1] = measured[i][s][1];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
17
nanovna.h
17
nanovna.h
|
|
@ -51,6 +51,23 @@ void sweep_tail(void);
|
|||
void redraw(void);
|
||||
void polar_plot(float measured[101][4]);
|
||||
|
||||
extern uint16_t cal_status;
|
||||
extern float cal_data[101][5][2];
|
||||
|
||||
#define CAL_LOAD 0
|
||||
#define CAL_OPEN 1
|
||||
#define CAL_SHORT 2
|
||||
#define CAL_THRU 3
|
||||
#define CAL_ISOLN 4
|
||||
|
||||
#define CALSTAT_LOAD (1<<0)
|
||||
#define CALSTAT_OPEN (1<<1)
|
||||
#define CALSTAT_SHORT (1<<2)
|
||||
#define CALSTAT_THRU (1<<3)
|
||||
#define CALSTAT_ISOLN (1<<4)
|
||||
#define CALSTAT_APPLY (1<<5)
|
||||
|
||||
|
||||
void plot_into_index(float measured[101][2][2]);
|
||||
void draw_cell_all(void);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue