84 Commits

Author SHA1 Message Date
Jared Boone
e05677ab0d OperaCake: Bring together with PortaPack code.
The plan is to have them coexist in the firmware binary, even if the hardware is mutually exclusive at runtime.
2019-01-07 15:35:41 -08:00
Jared Boone
88fb406a55 PortaPack: Conditionally claim JTAG pins in SCU #defines 2018-12-27 10:10:01 -08:00
Jared Boone
ccc86aad14 Add support for PortaPack user interface add-on board. 2018-08-01 21:05:10 -07: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
Dominic Spill
49257e60e3 Remove Jellybean support from firmware
- nobody has a jellybean board
2017-02-14 21:33:52 -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
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
Michael Ossmann
3474ad50c0 Merge branch 'multi-device-hardware-sync' of https://github.com/dodgymike/hackrf into dodgymike-multi-device-hardware-sync 2017-01-24 16:18:33 -07:00
Mike Davis
ddb19a86fe Add vendor request for enabling/disabling gpio-based sync 2017-01-22 22:28:11 +02:00
Dominic Spill
0ef1666c2a Add initial operacake support 2016-12-13 19:07:11 -07: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
b985d9c899 Merge branch 'abstract_buses' of https://github.com/jboone/hackrf into jboone-abstract_buses 2015-12-18 12:24:43 +00:00
Tobias Schneider
c6e7490397 Merge remote-tracking branch 'mossmann/master' into rad1o
Conflicts:
	host/misc/udev/53-hackrf.rules.in
	host/python/max2837_dump.py
	host/python/set_transceiver_mode.py
2015-12-07 21:05:39 +01:00
Dominic Spill
d3ce4779e9 Fix inconsistent indentation 2015-07-07 07:23:48 +01:00
Dominic Spill
ce9ad343e0 Fix issue #113 - CPLD update fails on Windows
Using the patch from @supersat
2015-07-06 21:25:01 +01:00
Tobias Schneider
745456dc28 fix(max2871): Wait for VAS to finish before turning on RFA 2015-06-09 07:07:53 +02:00
Tobias Schneider
c79c53c52f chore(name): We are now rad1o 2015-06-07 23:33:24 +02:00
Tobias Schneider
cf6fe302bc feat(max2871.c): POC 2015-06-07 17:07:36 +02:00
Tobias Schneider
b4b768c76f feat(max2871.c): Set the default values after reset 2015-06-07 13:58:46 +02:00
Tobias Schneider
9e6ae19e10 fix(rf_path): First version of rad10 path 2015-06-07 03:35:59 +02:00
Tobias Schneider
c05929fe25 fix(common, hackf_usb): Make it compile for rad10 2015-06-06 18:49:09 +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
28d629e099 Si5351C: Bring I2C wrapper into main driver. 2014-11-12 18:32:00 -08:00
Jared Boone
905cd2b919 SSP: Merge SSP0 and SSP1 code into single unit.
Conflicts:
	firmware/common/hackrf_core.c
2014-11-10 17:02:45 -08:00
Jared Boone
21eb27c3f3 SSP0: Extract SPI interface from W25Q80BV code. 2014-11-10 17:00:15 -08:00
Jared Boone
b8421cc14f SSP1: Merge MAX2837 and MAX5864 SPI code to use single SPI interface.
Conflicts:
	firmware/common/hackrf_core.c
	firmware/common/hackrf_core.h
2014-11-10 16:59:47 -08:00
Jared Boone
58e3465ce5 W25Q80BV: Finish abstracting SPI code. 2014-11-10 16:55:22 -08:00
Jared Boone
e6c02bea62 MAX5864: Abstract SPI, extract target code 2014-11-10 16:55:02 -08:00
Jared Boone
58e7ef4171 MAX2837: Refactoring toward abstracted SPI.
Conflicts:
	firmware/common/hackrf_core.c
	firmware/common/hackrf_core.h
	firmware/common/tuning.c
2014-11-10 16:53:27 -08:00
Jared Boone
786a8fd2e1 RFFC5071: Rename rffc5071_drv->rffc5071_spi. 2014-11-10 16:48:31 -08:00
Jared Boone
5a77d196ea W25Q80BV: Separate structures into algorithm and hardware access layers.
Also extract #define constants for W25Q80BV into driver structure. Driver could eventually extend to other devices.
2014-11-10 16:46:12 -08:00
Jared Boone
7639ef0e3e W25Q80BV: De-singleton the driver. 2014-11-10 16:45:44 -08:00
Jared Boone
d55bd529e2 RFFC507x: De-singleton the driver code. 2014-11-10 16:42:08 -08:00
Jared Boone
453f622b74 MAX2837: De-singleton the driver.
Conflicts:
	firmware/common/hackrf_core.c
	firmware/common/hackrf_core.h
2014-11-10 16:37:34 -08:00
Jared Boone
3bc41f1480 Si5351C: Un-singleton the high- and low-level drivers. Proper. 2014-11-10 16:27:35 -08:00
Jared Boone
16709505fc USB0 and USB1 LEDs are only on Jellybean and Jawbreaker. 2014-08-11 16:09:37 -07:00
Jared Boone
fb5dc6d5e0 Merge remote-tracking branch 'mossmann/master' into jboone_refactor_20130906
Conflicts:
	firmware/common/si5351c.c

Preferred Si5351C configuration that drives 40MHz into the LPC43xx GP_CLKIN.
Added HACKRF_ONE qualifier for CPLD TMS/TDI swap.
2014-01-07 16:48:52 -08:00
Jared Boone
0ddb4cb7f2 Configure LPC43xx for GP_CLKIN input. 2013-12-31 20:07:11 -08:00
Michael Ossmann
355597d9e6 swapped CPLD JTAG pins for HackRF One 20131127 2013-12-09 19:06:24 -07:00
Jared Boone
b285b91e4c Merge remote-tracking branch 'mossmann/master' into jboone_refactor_20130906
Conflicts:
	firmware/common/hackrf_core.h
	firmware/common/rffc5071.c
2013-11-20 18:43:40 -08:00
Jared Boone
9db166427f Remove I2S pin definitions, since they're too specific for generic/shared HackRF code. 2013-11-20 15:46:53 -08:00