124 Commits

Author SHA1 Message Date
Dominic Spill
3f569a8ad4 hackrf_clock: Allow CLKOUT to be enabled / disabled
hackrf_clock -o 1 / hackrf_clock -o 0
2017-11-07 11:23:48 -07:00
schneider
1acd7ccf7c fix(rad1o): TX_RX_N is on GPIO1_11 2017-08-05 06:05:31 +02:00
schneider
4b0bb0ea55 refact(rad1o): Disable the CPU clock outputs in pin_setup() 2017-08-05 06:04:08 +02:00
Dominic Spill
90d3f7f293 Remove unused ARRAY_SIZE definition 2017-07-11 18:27:24 -06:00
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
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
e7f890e0c2 Merge branch 'mossmann-master' into firmware_cleanup 2017-02-22 12:10:42 -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
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
a4036eab76 Remove last mentions of Jellybean 2017-02-16 18:03:32 -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
schneider42
4117cd3903 Merge branch 'master' into rad1o 2017-02-11 18:02:51 +01:00
Dominic Spill
c0396ea2fb Reenable some clocks so that HackRF boots 2017-02-10 10:29:54 -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
schneider
c0c0fab368 chore(rad1o): White space fixes and cleanup 2017-02-03 19:27:19 +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
9d8890ae62 fix(rad1o): gpio cleanup 2017-01-27 21:42:48 +01:00
schneider
566c9ad4bd feat(mixer): Full MAX2871 integration for rad1o 2017-01-27 21:41:24 +01:00
schneider
fb2057cd09 fix(rf_path): Port rad1o pin config 2017-01-27 20:45:49 +01:00
Dominic Spill
cb06ce9656 ifdef out HackRF One rf path pins for jawbreaker build 2017-01-27 12:24:19 -07:00
schneider
70c41463b1 refact(mixer): Basic mixer abstraction 2017-01-26 00:31:43 +01:00
schneider
35ca538c18 Merge remote-tracking branch 'mossmann/master' into rad1o
Just a very rough merge to get off the ground. Major parts are not yet
implemented. The mixer intergration is in a messed up state. Part which
need work have been marked with XXX

Conflicts:
	firmware/common/hackrf_core.c
	firmware/common/hackrf_core.h
	firmware/common/max2837.c
	firmware/common/max2837.h
	firmware/common/rf_path.c
	firmware/common/rffc5071.c
	firmware/common/rffc5071.h
	firmware/common/sgpio.c
	firmware/common/si5351c.c
	firmware/common/tuning.c
	firmware/common/w25q80bv.c
	firmware/common/w25q80bv.h
	firmware/common/xapp058/ports.c
	firmware/hackrf-common.cmake
	firmware/hackrf_usb/hackrf_usb.c
	firmware/hackrf_usb/usb_api_register.c
	firmware/hackrf_usb/usb_api_transceiver.c
	host/hackrf-tools/src/hackrf_transfer.c
2017-01-26 00:21:58 +01:00
Mike Davis
976c99c1ad Kind of working hardware sync 2016-12-10 21:42:20 +02:00
Mike Davis
3672f38b27 Experiments with gpio pins, for hardware sync 2016-12-10 18:47:38 +02:00
Mike Davis
242f73efb1 Added multiple device sync 2016-12-10 01:13:43 +02:00
Dominic Spill
b278f059d0 Merge pull request #224 from schneider42/fix-hackrf-disabled-unused-clocks
fix(hackrf-core): Disable unused clock outputs
2016-01-22 18:24:08 +00:00
Tobias Schneider
d7c162902c fix(hackrf-ui): Make the calls weak 2015-12-09 22:26:16 +01:00
Tobias Schneider
86b424d9d3 feat(hackrf): Callbacks for a possible UI 2015-12-07 00:29:33 +01:00
Tobias Schneider
9e827b56be hack(rad1o): Lower noise configuration 2015-12-05 23:46:59 +01:00
Tobias Schneider
84d800eaeb fix(hackrf-core): Disable unused clock outputs
They generate noise and are most likely not used
2015-11-14 21:35:39 +01:00
Tobias Schneider
dfa12fe169 fix(hackrf-core): Give rad1o its own clock configuration section
The old one was broken for the HackRF by
14e23f7f83fed366ddf0d25da92e43118cdbf87c
2015-07-27 09:38:58 +02:00
Tobias Schneider
9f142e3356 fix(hackrf-core): Add LED4 for rad1o 2015-07-27 09:28:56 +02:00
Tobias Schneider
1f38354416 fix(hackrf-core): Disable unused clock outputs
They generate noise and are most likely not used
2015-07-27 09:25:18 +02:00
Tobias Schneider
5bd5085cf1 fix(hackrf-core): Disable unused clock source to the MCU
It is not used and creates noise.
2015-07-27 09:22:18 +02:00
Stefan `Sec` Zehl
14e23f7f83 New rad1o board has CLK4 and CLK5 swapped. 2015-07-24 00:49:40 +02:00
Tobias Schneider
c79c53c52f chore(name): We are now rad1o 2015-06-07 23:33:24 +02:00
Tobias Schneider
9e6ae19e10 fix(rf_path): First version of rad10 path 2015-06-07 03:35:59 +02:00
Tobias Schneider
ce273438d4 fix(hackrf_core): new pin assignments 2015-06-06 18:18:23 +02:00
Jared Boone
5363ec3672 Use new GPIO API to abstract GPIO in various drivers.
Had to do it all at once due to name conflicts with API exposed in libopencm3.
Quite invasive patch! Also precipitated an LED API...
2014-11-15 16:26:59 -08:00
Jared Boone
32aea14318 Merge branch 'abstract_i2c' into abstract_buses
Conflicts:
	firmware/common/hackrf_core.c
	firmware/common/hackrf_core.h
	firmware/hackrf-common.cmake
2014-11-13 11:26:41 -08:00
Jared Boone
02cc5814b1 I2C: Interface: Rename init()->start(), add stop(). 2014-11-13 10:32:38 -08:00
Jared Boone
ea136038a9 SPI: Rename spi_t to spi_bus_t to match I2C naming. 2014-11-13 10:16:39 -08:00
Jared Boone
05b8c4c153 SPI: Interface: Rename init()->start(), add stop(). 2014-11-13 09:51:48 -08:00
Jared Boone
eb0dea483f I2C: Finish extracting from Si5351C code. 2014-11-12 14:03:27 -08:00
Jared Boone
569f320826 SPI: Pull remaining hardware bits out of MAX2837/5864/W25Q80BV device drivers. 2014-11-10 17:05:19 -08:00