Try remove all hardcoded values from code (use definition if set) Some error fix main.c: Rewrite Shell, now it run on main thread and require less RAM (not need stack) (possible run it as thread if define VNA_SHELL_THREAD Remove not used trace_info[].scale_unit in set_trace_scale/get_trace_scale (it just divede on set and multiple on get, better use it for default scale set) Replace some hardcoded values MARKERS_MAX SAVEAREA_MAX TRACES_MAX plot.c Rewrite CELLWIDTH and CELLHEIGHT use, now possible set any CELL width and height (CELLWIDTH * CELLHEIGHT <= spi_buffer size) Free RAM from shell stack use fore increase spi_buffer size now it have 2048 pixel (64x32) Rewrite cell index and markmap use (now correct use cell size, and more faster), correct use CELLWIDTH and CELLHEIGHT in calculation Fore set update area use invalidateRect (still need use some hardcoded values :( ) Rewrite cell_draw_line Rewrite many hardcoded size definitions Refrence point now draw as bitmap (less size, more costumable) Fix drag marker (now correct search closest index in search_nearest_index) Rewrite plot_into_index, now correct use size definitions, moe ui.c Small rewrite keyboard definitions, for use less flash size Define KP_WIDTH, KP_HEIGHT for set key size Better look some big font symvols All: use static fore some local functions (use less space on calls) replace tabs on spaces (code style) Use M_PI from math.h fore define pi value Fix printf on print HEX values |
||
|---|---|---|
| .circleci | ||
| .vscode | ||
| ChibiOS@669d4bbc8d | ||
| doc | ||
| NANOVNA_STM32_F072 | ||
| python | ||
| .gdbinit | ||
| .gitignore | ||
| .gitmodules | ||
| adc.c | ||
| chconf.h | ||
| chprintf.c | ||
| dsp.c | ||
| ffconf.h | ||
| fft.h | ||
| flash.c | ||
| Font5x7.c | ||
| halconf.h | ||
| ili9341.c | ||
| main.c | ||
| Makefile | ||
| mcuconf.h | ||
| nanovna.h | ||
| numfont20x22.c | ||
| plot.c | ||
| prog.sh | ||
| README.md | ||
| si5351.c | ||
| si5351.h | ||
| STM32F072xB.ld | ||
| tlv320aic3204.c | ||
| ui.c | ||
| usbcfg.c | ||
| usbcfg.h | ||
NanoVNA - Very tiny handheld Vector Network Analyzer
About
NanoVNA is very tiny handheld Vector Network Analyzer (VNA). It is standalone with lcd display, portable device with battery. This project aim to provide an RF gadget but useful instrument for enthusiast.
This repository contains source of NanoVNA firmware.
Prepare ARM Cross Tools
UPDATE: Recent gcc version works to build NanoVNA, no need old version.
MacOSX
Install cross tools and firmware updating tool.
$ brew tap px4/px4
$ brew install gcc-arm-none-eabi-80
$ brew install dfu-util
Linux (ubuntu)
Download arm cross tools from here.
$ wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2018q4/gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2
$ sudo tar xfj gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2 -C /usr/local
$ PATH=/usr/local/gcc-arm-none-eabi-8-2018-q4-major/bin:$PATH
$ sudo apt install -y dfu-util
Fetch source code
Fetch source and submodule.
$ git clone https://github.com/ttrftech/NanoVNA.git
$ cd NanoVNA
$ git submodule update --init --recursive
Build
Just make in the directory.
$ make
Build firmware using docker
Using this docker image and without installing arm toolchain, you can build the firmware.
$ cd NanoVNA
$ docker run -it --rm -v $(PWD):/work edy555/arm-embedded:8.2 make
Flash firmware
First, make device enter DFU mode by one of following methods.
- Jumper BOOT0 pin at powering device
- Select menu Config->DFU (needs recent firmware)
Then, flash firmware using dfu-util via USB.
$ dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D build/ch.bin
Or simply use make.
$ make flash
Companion Tools
There are seveal numbers of great companion PC tools from third-party.
- NanoVNASharp Windows software by hugen79
- NanoVNA WebSerial/WebUSB by cho45
- Android NanoVNA app by cho45
- NanoVNASaver by mihtjel
- TAPR VNAR4 supports NanoVNA by erikkaashoek
- see python directory to use NanoVNA with Python and Jupyter Notebook.
Documentation
- NanoVNA User Guide (google translate) by cho45
Reference
- Schematics
- PCB Photo
- Block Diagram
- Kit available from https://ttrf.tk/kit/nanovna
Note
Hardware design material is disclosed to prevent bad quality clone. Please let me know if you would have your own unit.