1162 Commits

Author SHA1 Message Date
Marco Bartolucci
a773b463cb cleanup 2017-05-16 15:37:27 +02:00
Marco Bartolucci
533f9ee332 Hardware (CPLD-based) synchronisation
=======================================

This commit allows to synchronise multiple HackRFs with a synchronisation error **below 1 sampling period**

> WARNING: Use this at your own risk. If you don't know what you are doing you may damage your HackRF.
> The author takes no responsability for potential damages

Usage example: synchronise two HackRFs
======================================
1. Chose the master HackRF which will send the synchronisation pulse (HackRF0). HackRF1 will represent the slave hackrf.
2. Retreive the serial number of both HackRFs using `hackrf_info`
3. Use a wire to connect `SYNC_CMD` of HackRF0 to `SYNC_IN` of HackRF0 and HackRF1
4. Run `hackrf_transfer` with the argument `-H 1` to enable hardware synchronisation:
    ```
    $ hackrf_tranfer ... -r rec1.bin -d HackRF1_serial -H 1 | hackrf_transfer ... -r rec0.bin -d HackRF0_serial -H 1
    ```
rec0.bin and rec1.bin will have a time offset below 1 sampling period.
The 1PPS output of GNSS receivers can be used to synchronise HackRFs even if they are far from each other.
>DON'T APPLY INCOMPATIBLE VOLTAGE LEVELS TO THE CPLD PINS

Signal | Header |Pin | Description
-------|--------|----|------------
`SYNC_IN` | P28 | 16 | Synchronisation pulse input
`SYNC_CMD` | P28 | 15 | Synchronisation pulse output

Note:
=====
I had to remove CPLD-based decimation to use a GPIO for enabling hardware.

More info:
==========
[M. Bartolucci, J. A. Del Peral-Rosado, R. Estatuet-Castillo, J. A. Garcia-Molina, M. Crisci and G. E. Corazza, "Synchronisation of low-cost open source SDRs for navigation applications," 2016 8th ESA Workshop on Satellite Navigation Technologies and European Workshop on GNSS Signals and Signal Processing (NAVITEC), Noordwijk, 2016, pp. 1-7.](http://ieeexplore.ieee.org/document/7849328/)

[Alternative link](http://spcomnav.uab.es/docs/conferences/Bartolucci_NAVITEC_2016.pdf)
2017-05-16 11:39:44 +02:00
Marco Bartolucci
747d8e2278 Removed decimation in CPLD 2017-05-15 12:56:51 +02:00
Marco Bartolucci
d47dece3ba Fixed indentation 2017-05-15 11:49:23 +02:00
Marco Bartolucci
808fd9410e Bump to latest version
Merge remote-tracking branch 'upstream/master'
2017-05-05 11:58:43 +02:00
Dominic Spill
8b853266ef Power down CLK3 (CLKOUT) at boot, don't reset it when clocks are reset 2017-02-28 15:26:43 -07:00
Dominic Spill
00b6099bb3 Make comments more informative (possibly) 2017-02-28 15:25:27 -07:00
Dominic Spill
e7f890e0c2 Merge branch 'mossmann-master' into firmware_cleanup 2017-02-22 12:10:42 -07:00
Dominic Spill
0a48dccd66 CLOKOUT off by default 2017-02-21 18:38:50 -07:00
Dominic Spill
acaf0d192c Change RFFC5071 clock from 40MHz to 50MHz and invert it
Now the MAX2837 and RFFC5071 clocks are out of phase with each other
Hopefully this reduces some noise
2017-02-21 17:56:37 -07:00
Dominic Spill
15ea074bdb Clean up Si5351c initialisation code 2017-02-21 17:43:19 -07:00
Dominic Spill
3eb00ed0df Disable CLK7 and power down CLK6/7 to reduce emissions 2017-02-20 12:34:35 -07:00
schneider
d4c69890b5 fix(rad1o): Restore old clock behaviour for now. 2017-02-19 01:39:51 +01:00
Dominic Spill
ef695a36e0 Reinstate LPC4330 linker script 2017-02-17 07:49:16 -07:00
Marco Bartolucci
9d6f2a7e9c Fixed sgpio_if readme 2017-02-17 14:05:33 +01:00
Marco Bartolucci
fa6bde951c Added CPLD-based synchronization
This is a proof of concept and it's still very crude
For more info read (http://spcomnav.uab.es/docs/conferences/Bartolucci_NAVITEC_2016.pdf)
2017-02-17 13:58:55 +01:00
Dominic Spill
a4036eab76 Remove last mentions of Jellybean 2017-02-16 18:03:32 -07:00
Michael Ossmann
79f95abdb3 correct discrepancy between number of samples and number of bytes in blocks of samples
related to #346
2017-02-16 12:46:17 -07:00
Dominic Spill
09eb15cb53 Remove unused development firmware from build 2017-02-14 21:34:44 -07:00
Dominic Spill
9e3b69a9b7 Remove source for development firmwares 2017-02-14 21:34:28 -07:00
Dominic Spill
c6be7dea3e Fix build warnings for unused GPIO pins 2017-02-14 21:34:20 -07:00
Dominic Spill
49257e60e3 Remove Jellybean support from firmware
- nobody has a jellybean board
2017-02-14 21:33:52 -07:00
Michael Ossmann
6e3544ddec Merge pull request #329 from schneider42/rad1o
rad1o support
2017-02-14 21:30:48 -07:00
Michael Ossmann
0335f1a317 Reverted 31a37bd841b99154fce7217d2b3d78a24f8aacd9 Output RFFC5072 LOCK status
This enabled a debug signal used during sweep mode development on HackRF One, but it broke Jawbreaker.
2017-02-11 12:24:22 -07:00
schneider42
4117cd3903 Merge branch 'master' into rad1o 2017-02-11 18:02:51 +01:00
Michael Ossmann
bb24ef5494 Merge pull request #337 from dominicgs/clock_experiments
turn off unused clocks in the microcontroller
2017-02-10 17:18:12 -07:00
Dominic Spill
c0396ea2fb Reenable some clocks so that HackRF boots 2017-02-10 10:29:54 -07:00
Michael Ossmann
2936ff3cef clarified some things in firmware/README 2017-02-09 22:16:26 -07:00
Dominic Spill
2163ebac9c Power down or disable all clocks that we aren't using 2017-02-09 21:23:58 -07:00
Dominic Spill
3de6d2d360 Disable EMC clock 2017-02-09 16:34:57 -07:00
Michael Ossmann
5b881e1d54 fixed bug that caused tuning glitches in interleaved sweep mode 2017-02-08 10:44:16 -07:00
Michael Ossmann
00d5b1c575 don't send first buffer to host in sweep mode until it is full 2017-02-07 17:52:09 -07:00
Michael Ossmann
e9d1c71646 fixed firmware bug with sweep ranges that start at high frequencies 2017-02-07 16:00:20 -07:00
Michael Ossmann
4b6de820ef support multiple frequency ranges in hackrf_sweep 2017-02-07 15:37:26 -07:00
Michael Ossmann
e1b1dbd647 Moved sweep mode frequency computation into firmware.
Changed from long list of tuning frequencies to short list of ranges.
2017-02-07 13:57:49 -07:00
schneider
6668448856 fix(mixertx): Use mixer_setup instead of rffc5071_setup 2017-02-03 20:09:40 +01:00
schneider
5f46bce325 fix(rad1o): Restore hackrf max2837_freq_nominal_hz behaviour 2017-02-03 19:33:25 +01:00
schneider
c0c0fab368 chore(rad1o): White space fixes and cleanup 2017-02-03 19:27:19 +01:00
schneider
7526723f50 fix(cmake): Add max2871_regs.c to the build 2017-02-03 19:26:19 +01:00
schneider42
3302ca3146 fix(readme): Use correct DFU filename 2017-02-03 16:36:32 +01:00
schneider
c04b1cbc8d Merge remote-tracking branch 'mossmann/master' into opera-merge 2017-02-03 16:25:32 +01:00
Michael Ossmann
50776acdb8 Merge pull request #325 from dominicgs/device_selection_options
Code clean up
2017-02-01 16:32:22 -07:00
Michael Ossmann
0eb85c529c Fixed firmware dwell time bug in sweep mode. Two buffers of sample data are now thrown away at the start of each step in order to allow time for tuning.
Fixes #317.
2017-02-01 16:21:04 -07:00
Dominic Spill
d61efc0c07 Remove experimental firmware code - never used in firmware 2017-02-01 16:02:08 -07:00
Dominic Spill
78182194e0 Turn off VBUS discharge to reduce current draw 2017-01-31 15:54:48 -07:00
Dominic Spill
255b7b4705 Add USB API versioning 2017-01-30 18:30:17 -07:00
schneider
07f800d57a fix(dfu): Use original HackRF DFU tools 2017-01-29 22:54:44 +01:00
schneider
642feac51e Merge remote-tracking branch 'mossmann/master' into opera-merge
Conflicts:
	firmware/common/hackrf_core.c
	firmware/common/rf_path.c
	firmware/hackrf-common.cmake
	firmware/hackrf_usb/hackrf_usb.c
	firmware/hackrf_usb/usb_api_transceiver.c
	host/hackrf-tools/src/hackrf_transfer.c
2017-01-28 23:46:43 +01:00
schneider
f96ea4b8c2 change(usb): Make usb_phy_enable() non static 2017-01-28 22:32:27 +01:00
schneider
202f2ecf54 fix(mixer): Use correct pins for MAX2871 2017-01-28 22:31:00 +01:00