Skip to content

Commit 2427307

Browse files
committed
Merge branch 'master' of https://github.com/AA6KL/NanoVNA
2 parents b12293d + 42aaf73 commit 2427307

File tree

8 files changed

+4536
-80
lines changed

8 files changed

+4536
-80
lines changed

Font7x13b.c

Lines changed: 3959 additions & 0 deletions
Large diffs are not rendered by default.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ CSRC = $(STARTUPSRC) \
150150
$(STREAMSSRC) \
151151
$(SHELLSRC) \
152152
usbcfg.c \
153-
main.c si5351.c tlv320aic3204.c dsp.c plot.c ui.c ili9341.c numfont20x22.c Font5x7.c flash.c adc.c
153+
main.c si5351.c tlv320aic3204.c dsp.c plot.c ui.c ili9341.c numfont20x22.c Font7x13b.c Font5x7.c flash.c adc.c
154154

155155
# $(TESTSRC) \
156156

fft.h

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929

3030
static uint16_t reverse_bits(uint16_t x, int n) {
3131
uint16_t result = 0;
32-
for (int i = 0; i < n; i++, x >>= 1)
32+
int i;
33+
for (i = 0; i < n; i++, x >>= 1)
3334
result = (result << 1) | (x & 1U);
3435
return result;
3536
}
@@ -44,8 +45,10 @@ static void fft256(float array[][2], const uint8_t dir) {
4445

4546
const uint8_t real = dir & 1;
4647
const uint8_t imag = ~real & 1;
48+
uint16_t i;
49+
uint16_t size;
4750

48-
for (uint16_t i = 0; i < n; i++) {
51+
for (i = 0; i < n; i++) {
4952
uint16_t j = reverse_bits(i, levels);
5053
if (j > i) {
5154
float temp = array[i][real];
@@ -58,11 +61,13 @@ static void fft256(float array[][2], const uint8_t dir) {
5861
}
5962

6063
// Cooley-Tukey decimation-in-time radix-2 FFT
61-
for (uint16_t size = 2; size <= n; size *= 2) {
64+
for (size = 2; size <= n; size *= 2) {
6265
uint16_t halfsize = size / 2;
6366
uint16_t tablestep = n / size;
64-
for (uint16_t i = 0; i < n; i += size) {
65-
for (uint16_t j = i, k = 0; j < i + halfsize; j++, k += tablestep) {
67+
uint16_t i;
68+
for (i = 0; i < n; i += size) {
69+
uint16_t j, k;
70+
for (j = i, k = 0; j < i + halfsize; j++, k += tablestep) {
6671
uint16_t l = j + halfsize;
6772
float tpre = array[l][real] * cos(2 * M_PI * k / 256) + array[l][imag] * sin(2 * M_PI * k / 256);
6873
float tpim = -array[l][real] * sin(2 * M_PI * k / 256) + array[l][imag] * cos(2 * M_PI * k / 256);

ili9341.c

Lines changed: 85 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -463,19 +463,20 @@ ili9341_read_memory_continue(int len, uint16_t* out)
463463
ili9341_read_memory_raw(0x3E, len, out);
464464
}
465465

466+
#if !defined(ST7796S)
466467
void
467468
ili9341_drawchar_5x7(uint8_t ch, int x, int y, uint16_t fg, uint16_t bg)
468469
{
469470
#if defined(ILI9488)
470471
ili9341_drawchar_size(ch, x, y, fg, bg, 1);
471472
#else
472473
uint16_t *buf = spi_buffer;
473-
uint8_t bits;
474+
uint16_t bits;
474475
int c, r;
475476
for(c = 0; c < 7; c++) {
476477
bits = x5x7_bits[(ch * 7) + c];
477478
for (r = 0; r < 5; r++) {
478-
*buf++ = (0x80 & bits) ? fg : bg;
479+
*buf++ = (0x8000 & bits) ? fg : bg;
479480
bits <<= 1;
480481
}
481482
}
@@ -493,16 +494,25 @@ ili9341_drawstring_5x7(const char *str, int x, int y, uint16_t fg, uint16_t bg)
493494
}
494495
}
495496

497+
void
498+
ili9341_drawstring_5x7_inv(const char *str, int x, int y, uint16_t fg, uint16_t bg, bool invert)
499+
{
500+
if (invert)
501+
ili9341_drawstring_5x7(str, x, y, bg, fg);
502+
else
503+
ili9341_drawstring_5x7(str, x, y, fg, bg);
504+
}
505+
496506
void
497507
ili9341_drawchar_size(uint8_t ch, int x, int y, uint16_t fg, uint16_t bg, uint8_t size)
498508
{
499509
uint16_t *buf = spi_buffer;
500-
uint8_t bits;
510+
uint16_t bits;
501511
int c, r;
502512
for(c = 0; c < 7*size; c++) {
503513
bits = x5x7_bits[(ch * 7) + (c / size)];
504514
for (r = 0; r < 5*size; r++) {
505-
*buf++ = (0x80 & bits) ? fg : bg;
515+
*buf++ = (0x8000 & bits) ? fg : bg;
506516
if (r % size == (size-1)) {
507517
bits <<= 1;
508518
}
@@ -521,6 +531,73 @@ ili9341_drawstring_size(const char *str, int x, int y, uint16_t fg, uint16_t bg,
521531
}
522532
}
523533

534+
#else
535+
void
536+
ili9341_drawchar_7x13(uint8_t ch, int x, int y, uint16_t fg, uint16_t bg)
537+
{
538+
uint16_t *buf = spi_buffer;
539+
uint16_t bits;
540+
int c, r;
541+
for(c = 0; c < 13; c++) {
542+
bits = x7x13b_bits[(ch * 13) + c];
543+
for (r = 0; r < 7; r++) {
544+
*buf++ = (0x8000 & bits) ? fg : bg;
545+
bits <<= 1;
546+
}
547+
}
548+
ili9341_bulk(x, y, 7, 13);
549+
}
550+
551+
void
552+
ili9341_drawstring_7x13(const char *str, int x, int y, uint16_t fg, uint16_t bg)
553+
{
554+
while (*str) {
555+
ili9341_drawchar_7x13(*str, x, y, fg, bg);
556+
x += 7;
557+
str++;
558+
}
559+
}
560+
561+
void
562+
ili9341_drawstring_7x13_inv(const char *str, int x, int y, uint16_t fg, uint16_t bg, bool invert)
563+
{
564+
if (invert)
565+
ili9341_drawstring_7x13(str, x, y, bg, fg);
566+
else
567+
ili9341_drawstring_7x13(str, x, y, fg, bg);
568+
}
569+
570+
571+
void
572+
ili9341_drawchar_size(uint8_t ch, int x, int y, uint16_t fg, uint16_t bg, uint8_t size)
573+
{
574+
uint16_t *buf = spi_buffer;
575+
uint16_t bits;
576+
int c, r;
577+
for(c = 0; c < 13*size; c++) {
578+
bits = x7x13b_bits[(ch * 13) + (c / size)];
579+
for (r = 0; r < 7*size; r++) {
580+
*buf++ = (0x8000 & bits) ? fg : bg;
581+
if (r % size == (size-1)) {
582+
bits <<= 1;
583+
}
584+
}
585+
}
586+
ili9341_bulk(x, y, 7*size, 13*size);
587+
}
588+
589+
void
590+
ili9341_drawstring_size(const char *str, int x, int y, uint16_t fg, uint16_t bg, uint8_t size)
591+
{
592+
while (*str) {
593+
ili9341_drawchar_size(*str, x, y, fg, bg, size);
594+
x += 7 * size;
595+
str++;
596+
}
597+
}
598+
#endif
599+
600+
524601
#define SWAP(x,y) do { int z=x; x = y; y = z; } while(0)
525602

526603
void
@@ -605,7 +682,7 @@ ili9341_test(int mode)
605682
int i;
606683
uint16_t x0, x1, y0, y1;
607684
int c;
608-
int r;
685+
// int r;
609686
switch (mode) {
610687
default:
611688
#if 1
@@ -647,14 +724,14 @@ ili9341_test(int mode)
647724
ili9341_fill(0, 0, LCD_WIDTH, LCD_HEIGHT, 0);
648725
x0 = (uint16_t) my_rand() % LCD_WIDTH;
649726
y0 = (uint16_t) my_rand() % LCD_HEIGHT-4;
650-
if ((x0>=LCD_WIDTH) || (y0>=LCD_HEIGHT) || (x0<0) || (y0<0)) {
727+
if ((x0>=LCD_WIDTH) || (y0>=LCD_HEIGHT)) {
651728
return;
652729
}
653-
r = (int) my_rand() % 100;
730+
//r = (int) my_rand() % 100;
654731
for (i=0; i<100; i++) {
655732
x1 = (uint16_t) my_rand() % LCD_WIDTH;
656733
y1 = (uint16_t) my_rand() % LCD_HEIGHT-4;
657-
if ((x1>=LCD_WIDTH) || (y1>=LCD_HEIGHT) || (x1<0) || (y1<0)) {
734+
if ((x1>=LCD_WIDTH) || (y1>=LCD_HEIGHT)) {
658735
return;
659736
}
660737
//c = RGB565(255,255,255);

main.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,8 @@ config_t config = {
620620
.menu_normal_color = 0xffff,
621621
.menu_active_color = 0x7777,
622622
.trace_color = { RGB565(0,255,255), RGB565(255,0,40), RGB565(0,0,255), RGB565(50,255,0) },
623-
.touch_cal = { 693, 605, 124, 171 }, //{ 620, 600, 160, 190 },
623+
// .touch_cal = { 693, 605, 124, 171 }, // 2.4 inch LCD panel
624+
.touch_cal = { 338, 522, 153, 192 }, // 2.8 inch LCD panel
624625
.default_loadcal = 0,
625626
.harmonic_freq_threshold = 300000000,
626627
.checksum = 0
@@ -850,6 +851,9 @@ void
850851
set_sweep_frequency(int type, int32_t freq)
851852
{
852853
int cal_applied = cal_status & CALSTAT_APPLY;
854+
// negative value indicate overflow, do nothing
855+
if (freq < 0)
856+
return;
853857
switch (type) {
854858
case ST_START:
855859
freq_mode_startstop();
@@ -1792,6 +1796,7 @@ set_domain_mode(int mode) // accept DOMAIN_FREQ or DOMAIN_TIME
17921796
if (mode != (domain_mode & DOMAIN_MODE)) {
17931797
domain_mode = (domain_mode & ~DOMAIN_MODE) | (mode & DOMAIN_MODE);
17941798
redraw_request |= REDRAW_FREQUENCY;
1799+
uistat.lever_mode = LM_MARKER;
17951800
}
17961801
}
17971802

nanovna.h

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void adc_start_analog_watchdogd(ADC_TypeDef *adc, uint32_t chsel);
4040
#define LCD_WIDTH 480
4141
#define LCD_HEIGHT 320
4242
//#define SWEEP_POINTS 201
43-
#define LINE_SPACE 10
43+
#define LINE_SPACE 15
4444
#define X_SPACE 5
4545
#define YSTEP LINE_SPACE
4646
//#define SPI_BUFFER_SIZE 2048
@@ -182,7 +182,12 @@ extern void tlv320aic3204_select(int channel);
182182
#define OFFSETX 15
183183
#define OFFSETY 0
184184
#define WIDTH (LCD_WIDTH-GRIDY)
185-
#define HEIGHT (LCD_HEIGHT-7)
185+
#if defined(ILI9488) || defined(ILI9486) || defined(ST7796S)
186+
#define FONT_HEIGHT 13
187+
#else
188+
#define FONT_HEIGHT 7
189+
#endif
190+
#define HEIGHT (LCD_HEIGHT-FONT_HEIGHT)
186191

187192
#define CELLOFFSETX 5
188193
#define AREA_WIDTH_NORMAL (WIDTH + CELLOFFSETX*2)
@@ -191,8 +196,11 @@ extern int area_width;
191196
extern int area_height;
192197

193198
// font
194-
199+
#if !defined(ST7796S)
195200
extern const uint8_t x5x7_bits [];
201+
#else
202+
extern const uint16_t x7x13b_bits [];
203+
#endif
196204
extern const uint8_t numfont20x22[][22 * 3];
197205

198206
#define S_PI "\034"
@@ -328,8 +336,15 @@ void ili9341_init(void);
328336
void ili9341_test(int mode);
329337
void ili9341_bulk(int x, int y, int w, int h);
330338
void ili9341_fill(int x, int y, int w, int h, int color);
339+
#if !defined(ST7796S)
331340
void ili9341_drawchar_5x7(uint8_t ch, int x, int y, uint16_t fg, uint16_t bg);
332341
void ili9341_drawstring_5x7(const char *str, int x, int y, uint16_t fg, uint16_t bg);
342+
void ili9341_drawstring_5x7_inv(const char *str, int x, int y, uint16_t fg, uint16_t bg, bool inv);
343+
#else
344+
void ili9341_drawchar_7x13(uint8_t ch, int x, int y, uint16_t fg, uint16_t bg);
345+
void ili9341_drawstring_7x13(const char *str, int x, int y, uint16_t fg, uint16_t bg);
346+
void ili9341_drawstring_7x13_inv(const char *str, int x, int y, uint16_t fg, uint16_t bg, bool inv);
347+
#endif
333348
void ili9341_drawchar_size(uint8_t ch, int x, int y, uint16_t fg, uint16_t bg, uint8_t size);
334349
void ili9341_drawstring_size(const char *str, int x, int y, uint16_t fg, uint16_t bg, uint8_t size);
335350
void ili9341_drawfont(uint8_t ch, const font_t *font, int x, int y, uint16_t fg, uint16_t bg);
@@ -397,12 +412,18 @@ void clear_all_config_prop_data(void);
397412
* ui.c
398413
*/
399414

415+
// lever_mode
416+
enum {
417+
LM_MARKER, LM_SEARCH, LM_CENTER, LM_SPAN
418+
};
419+
400420
typedef struct {
401421
int8_t digit; /* 0~5 */
402422
int8_t digit_mode;
403423
int8_t current_trace; /* 0..3 */
404424
uint32_t value; // for editing at numeric input area
405425
uint32_t previous_value;
426+
uint8_t lever_mode;
406427
} uistat_t;
407428

408429
extern uistat_t uistat;

0 commit comments

Comments
 (0)