Initial commit of files
BIN
SoftwareDefined/HackRF/baudline/baudline
Executable file
1
SoftwareDefined/HackRF/gsg-sdr/README
Normal file
@ -0,0 +1 @@
|
||||
materials for Great Scott Gadgets Software Defined Radio course
|
||||
BIN
SoftwareDefined/HackRF/gsg-sdr/gsg-sdr-exercises.pdf
Normal file
BIN
SoftwareDefined/HackRF/gsg-sdr/xyloc/data-sheets/RF2915.pdf
Normal file
BIN
SoftwareDefined/HackRF/gsg-sdr/xyloc/fcc/block-diagram.pdf
Normal file
BIN
SoftwareDefined/HackRF/gsg-sdr/xyloc/fcc/internal-photos1.jpeg
Normal file
|
After Width: | Height: | Size: 248 KiB |
BIN
SoftwareDefined/HackRF/gsg-sdr/xyloc/fcc/internal-photos2.jpeg
Normal file
|
After Width: | Height: | Size: 269 KiB |
BIN
SoftwareDefined/HackRF/gsg-sdr/xyloc/fcc/layout.pdf
Normal file
BIN
SoftwareDefined/HackRF/gsg-sdr/xyloc/fcc/manual.pdf
Normal file
BIN
SoftwareDefined/HackRF/gsg-sdr/xyloc/fcc/test-report.pdf
Normal file
340
SoftwareDefined/HackRF/hackrf-2015.07.2/COPYING
Normal file
@ -0,0 +1,340 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
150
SoftwareDefined/HackRF/hackrf-2015.07.2/RELEASENOTES
Normal file
@ -0,0 +1,150 @@
|
||||
HackRF 2015.07.2 Release Notes
|
||||
|
||||
Bonus release! This release contains fixes for CMake configuration bugs that
|
||||
affected installation of 2015.07.1 on some platforms.
|
||||
|
||||
|
||||
==============================
|
||||
HackRF 2015.07.1 Release Notes
|
||||
|
||||
To upgrade to this release, you must update libhackrf and hackrf-tools on your
|
||||
host computer. You must also update firmware on your HackRF. It is important
|
||||
to update both the host code and firmware for this release to work properly.
|
||||
If you only update one or the other, you may experience unpredictable
|
||||
behaviour.
|
||||
|
||||
Major changes in this release include:
|
||||
|
||||
- Multiple HackRF support. Users with more than one HackRF can target a
|
||||
specific device from software using the device serial number. The serial
|
||||
number is easy to find with hackrf_info. Thanks, Hessu!
|
||||
|
||||
- Linux kernel module detaching. A work-around to avoid the unofficial HackRF
|
||||
kernel module in recent kernel versions that has been causing problems for
|
||||
many users.
|
||||
|
||||
- Updating the CPLD is now possible from Windows. There is no CPLD update with
|
||||
this release, but Windows users should now be able to update.
|
||||
|
||||
- Support for rad1o hardware, the badge of CCCamp 2015 based on HackRF One.
|
||||
This package contains host software supporting rad1o; for firmware and other
|
||||
resources, refer to: https://rad1o.badge.events.ccc.de/
|
||||
|
||||
There have been many more enhancements and bug fixes, for a full list of
|
||||
changes, see the git log.
|
||||
|
||||
|
||||
==============================
|
||||
HackRF 2014.08.1 Release Notes
|
||||
|
||||
To upgrade to this release, you must update libhackrf and hackrf-tools on your
|
||||
host computer. You must also update firmware and the CPLD. It is important to
|
||||
update both the firmware and the CPLD for this release to work properly. If
|
||||
you only update one or the other, you may experience an inverted baseband
|
||||
spectrum.
|
||||
|
||||
For a complete list of changes, see the git log. Highlights include:
|
||||
|
||||
- HackRF now uses high side injection when tuning to frequencies below 2150
|
||||
MHz. This significantly reduces images on both RX and TX that resulted from
|
||||
harmonics of the front-end local oscillator. If you ever wondered why you
|
||||
were picking up broadcast FM stations at frequencies well outside the FM
|
||||
broadcast band, they were probably such images.
|
||||
|
||||
- A CLKIN firmware bug was fixed. The bug prevented switching to the external
|
||||
clock source. Switching now works automatically at the start of every TX or
|
||||
RX operation. If a clock signal is detected on CLKIN, that external source
|
||||
is used. If a clock signal is not detected on CLKIN, the internal crystal is
|
||||
used.
|
||||
|
||||
- hackrf_transfer now has a signal source mode that transmits a CW signal.
|
||||
Thanks, dovecho!
|
||||
|
||||
- The optional udev rules file was moved from hackrf-tools to libhackrf.
|
||||
|
||||
|
||||
==============================
|
||||
HackRF 2014.04.1 Release Notes
|
||||
|
||||
To upgrade to this release, you must install updates to the software on your
|
||||
host computer including libhackrf, hackrf-tools, and any other software (e.g.
|
||||
gr-osmosdr) that uses libhackrf. You must also update firmware and the CPLD
|
||||
(which should be updated after firmware and host software is updated).
|
||||
|
||||
For a complete list of changes, see the git log. Highlights include:
|
||||
|
||||
- The sample format has changed from unsigned 8 bit integers to signed 8 bit
|
||||
integers. This affects all HackRF software and changes the file format used
|
||||
by hackrf_transfer. If you need to convert a file from unsigned bytes to
|
||||
signed bytes, I recommend sox:
|
||||
|
||||
$ sox old.ub new.sb
|
||||
|
||||
- HackRF One is now supported and is the default target platform when compiling
|
||||
firmware. To compile firmware for Jawbreaker, set the BOARD variable:
|
||||
|
||||
$ make -e BOARD=JAWBREAKER
|
||||
|
||||
- HackRF One hardware design and documentation are complete. It is now the
|
||||
preferred platform.
|
||||
|
||||
- Automatic clock synchronization is enabled in the firmware. To activate
|
||||
clock synchronization, simply connect an SMA cable from CLKOUT on one HackRF
|
||||
One to CLKIN on another HackRF One. The clock signal is a 10 MHz square wave
|
||||
at 3.3 V DC. This also works on Jawbreaker but requires the installation of
|
||||
SMA connectors and a few other components noted in the schematic diagram.
|
||||
|
||||
- The automatic tuning algorithm is improved for frequencies above 2150 MHz.
|
||||
The algorithm (in firmware) automatically avoids spurs caused by harmonic
|
||||
relationships between oscillator frequencies in the analog RF section.
|
||||
Similar improvements below 2150 MHz will require further effort.
|
||||
|
||||
- An explicit tuning option is now available to select tuning parameters
|
||||
different from those chosen by the automatic tuning algorithm. Automatic
|
||||
tuning should be preferred for most use cases, but advanced users can use
|
||||
explicit tuning when there is a need, for example, to avoid a particular
|
||||
local oscillator frequency for a specific application. Explicit tuning is
|
||||
implemented only in hackrf_transfer so far.
|
||||
|
||||
- Antenna port power on HackRF One can be enabled or disabled during RX or TX.
|
||||
This is implemented in hackrf_transfer. When activated, 3.0 to 3.3 V DC is
|
||||
supplied to the antenna port. This can safely supply up to 50 mA, enabling
|
||||
equipment including some active antennas.
|
||||
|
||||
- The firmware compilation and installation instructions have changed. See
|
||||
firmware/README and firmware/cpld/README for details.
|
||||
|
||||
Known bug: CPLD update does not work on Windows. See:
|
||||
https://github.com/mossmann/hackrf/issues/113
|
||||
|
||||
Many thanks to Ben Gamari and Jared Boone for their considerable efforts to
|
||||
improve the firmware in this release!
|
||||
|
||||
|
||||
==============================
|
||||
HackRF 2013.07.1 Release Notes
|
||||
|
||||
A firmware update is required to take advantage of features of this release and
|
||||
for compatibility with future software based on this release.
|
||||
|
||||
For a complete list of changes, see the git log. Highlights include:
|
||||
|
||||
- DC offset correction (greatly reducing the spike seen in the center of an FFT
|
||||
display)
|
||||
- Intermediate Frequency (IF) selection
|
||||
|
||||
|
||||
==============================
|
||||
HackRF 2013.06.1 Release Notes
|
||||
|
||||
This is the first release of the HackRF project.
|
||||
|
||||
This release package is simply a copy of the git repository with the addition
|
||||
of a binary firmware image (in the firmware-bin directory) that may be used
|
||||
to upgrade the firmware on a HackRF Jawbreaker. For instructions, see:
|
||||
|
||||
https://github.com/mossmann/hackrf/wiki/Updating-Firmware
|
||||
|
||||
The git repository is located at:
|
||||
|
||||
https://github.com/mossmann/hackrf
|
||||
10
SoftwareDefined/HackRF/hackrf-2015.07.2/Readme.md
Normal file
@ -0,0 +1,10 @@
|
||||
This repository contains hardware designs and software for HackRF, a project to
|
||||
produce a low cost, open source software radio platform.
|
||||
|
||||

|
||||
|
||||
(photo by fd0 from https://github.com/fd0/jawbreaker-pictures)
|
||||
|
||||
principal author: Michael Ossmann <mike@ossmann.com>
|
||||
|
||||
http://greatscottgadgets.com/hackrf/
|
||||
3
SoftwareDefined/HackRF/hackrf-2015.07.2/TRADEMARK
Normal file
@ -0,0 +1,3 @@
|
||||
"HackRF" is a trademark of Michael Ossmann. Permission to use the trademark
|
||||
with attribution to Michael Ossmann is granted to all licensees of HackRF for
|
||||
the purpose of naming or describing copies or derived works. (See COPYING.)
|
||||
7
SoftwareDefined/HackRF/hackrf-2015.07.2/doc/Readme.md
Normal file
@ -0,0 +1,7 @@
|
||||
The primary source of documentation is the wiki on github:
|
||||
|
||||
https://github.com/mossmann/hackrf/wiki
|
||||
|
||||
This directory contains supplemental documentation.
|
||||
|
||||
(photo jawbreaker-fd0-145436.jpeg by fd0 from https://github.com/fd0/jawbreaker-pictures)
|
||||
@ -0,0 +1,127 @@
|
||||
|
||||
OLS version used from: git://github.com/jawi/ols.git
|
||||
Warning sometimes there's a bug between Mode3 & Mode0 in OLS 0.9.6b3
|
||||
Expected is when /CS = 0 at first SCK Rising Edge data shall be read.
|
||||
|
||||
1) Read JDEC ID:
|
||||
----------------
|
||||
SPI Standard, Mode3, 8bits, MSB first, Show /CS & Honour /CS, SCK=About 32MHz:
|
||||
Send(MOSI)=0x9F(Read JDEC ID)
|
||||
Receive(MISO)=0xEF => Manufacturer ID(Winbond) and 0x40, 0x14 => Device ID
|
||||
|
||||
2) Read Status Register-2:
|
||||
--------------------------
|
||||
SPI Standard, Mode3, 8bits, MSB first, Show /CS & Honour /CS, SCK=About 32MHz:
|
||||
Send(MOSI)=0x35(Read Status Register-2)
|
||||
Receive(MISO)=0x02 (Status Register-2 => S15-S8)
|
||||
|
||||
3) Read Unknown Command 0xA3 (maybe for other SPIFI memory ??):
|
||||
---------------------------------------------------------------
|
||||
SPI Standard, Mode3, 8bits, MSB first, Show /CS & Honour /CS, SCK=About 32MHz:
|
||||
Send(MOSI)=0xA3
|
||||
Receive(MISO)=0x00 0x00 0x00
|
||||
|
||||
4) Fast Read Quad I/O with "Continuous Read Mode"(0xEB):
|
||||
--------------------------------------------------------
|
||||
SPI Standard, Mode3, 8bits, MSB first, Show /CS & Honour /CS, SCK=About 32MHz:
|
||||
Send(MOSI)=0xEB(Fast Read Quad I/O)
|
||||
SPI Quad, Mode3, 8bits, MSB first, Show /CS & Honour /CS:
|
||||
Send(IO0 to IO3) hexa:
|
||||
00 00 00 (A23-16) (A15-8) (A7-0)
|
||||
A5 (M7-0) => A5 = 1010 0101 (Continuous Read Mode enabled)
|
||||
A5 A5 (Dummy 2 bytes)
|
||||
Receive(IO0 to IO3) hexa:
|
||||
00 00 02 10 B1 01 00 14 (Data) => Vect Table = 0x10020000(Stack Pointer), 0x140001B1(Thumb) Real Addr=0x140001B0 (Reset_Handler/ResetISR)
|
||||
79 01 00 14 7B 01 00 14 (Data)
|
||||
7D 01 00 14 7F 01 00 14 (Data)
|
||||
Dump from Debug (Big Endian to swap 32bits):
|
||||
0x80000000 00000210 B1010014 79010014 7B010014 ....<2E>...y...{...
|
||||
0x80000010 7D010014 7F010014 }.......
|
||||
|
||||
5) Fast Read Quad I/O with "Continuous Read Mode"(0xEB):
|
||||
--------------------------------------------------------
|
||||
SPI Quad, Mode3, 8bits, MSB first, Show /CS & Honour /CS, SCK=About 32MHz:
|
||||
Send(IO0 to IO3) hexa:
|
||||
00 01 B0 (A23-16) (A15-8) (A7-0) (Corresponds to Real Addr=0x140001B0 (Reset_Handler/ResetISR))
|
||||
A5 (M7-0) => A5 = 1010 0101 (Continuous Read Mode enabled)
|
||||
A5 A5 (Dummy 2 bytes)
|
||||
Receive(IO0 to IO3) hexa:
|
||||
10 B5 72 B6 19 4B 1A 4A (Data)
|
||||
1A 60 1A 4A 5A 60 1A 4A (Data)
|
||||
4F F0 FF 33 13 60 53 60 (Data)
|
||||
Dump from Debug (Big Endian to swap 32bits):
|
||||
0x800001B0 10B572B6 194B1A4A 1A601A4A 5A601A4A .<2E>r<EFBFBD>.K.J.`.JZ`.J
|
||||
0x800001C0 4FF0FF33 13605360 O<><4F>3.`S`
|
||||
|
||||
6) Fast Read Quad I/O with "Continuous Read Mode"(0xEB):
|
||||
--------------------------------------------------------
|
||||
SPI Quad, Mode3, 8bits, MSB first, Show /CS & Honour /CS:
|
||||
Send(IO0 to IO3) hexa:
|
||||
00 02 18 (A23-16) (A15-8) (A7-0)
|
||||
A5 (M7-0) => A5 = 1010 0101 (Continuous Read Mode enabled)
|
||||
A5 A5 (Dummy 2 bytes)
|
||||
Receive(IO0 to IO3) hexa:
|
||||
FE E7 00 BF 00 31 05 40 (Data)
|
||||
00 00 DF 10 FF F7 DF 01 (Data)
|
||||
80 E2 00 E0 14 01 00 14 (Data)
|
||||
Dump from Debug (Big Endian to swap 32bits):
|
||||
0x80000218 FEE700BF 00310540 0000DF10 FFF7DF01 <20><>.<2E>.1.@..<2E>.<2E><><EFBFBD>.
|
||||
0x80000228 80E200E0 14010014 .<2E>.<2E>....
|
||||
|
||||
7) Fast Read Quad I/O with "Continuous Read Mode"(0xEB):
|
||||
--------------------------------------------------------
|
||||
SPI Quad, Mode3, 8bits, MSB first, Show /CS & Honour /CS:
|
||||
Send(IO0 to IO3) hexa:
|
||||
00 01 C8 (A23-16) (A15-8) (A7-0)
|
||||
A5 (M7-0) => A5 = 1010 0101 (Continuous Read Mode enabled)
|
||||
A5 A5 (Dummy 2 bytes)
|
||||
Receive(IO0 to IO3) hexa:
|
||||
93 60 D3 60 13 61 53 61 (Data)
|
||||
93 61 D3 61 62 B6 15 4C (Data)
|
||||
Dump from Debug (Big Endian to swap 32bits):
|
||||
0x800001C8 9360D360 13615361 9361D361 62B6154C .`<60>`.aSa.a<>ab<61>.L
|
||||
|
||||
8) Fast Read Quad I/O with "Continuous Read Mode"(0xEB):
|
||||
--------------------------------------------------------
|
||||
SPI Quad, Mode3, 8bits, MSB first, Show /CS & Honour /CS:
|
||||
Send(IO0 to IO3) hexa:
|
||||
00 02 30 (A23-16) (A15-8) (A7-0)
|
||||
A5 (M7-0) => A5 = 1010 0101 (Continuous Read Mode enabled)
|
||||
A5 A5 (Dummy 2 bytes)
|
||||
Receive(IO0 to IO3) hexa:
|
||||
50 01 00 14 78 01 00 14 (Data)
|
||||
Dump from Debug (Big Endian to swap 32bits):
|
||||
0x80000230 50010014 78010014 P...x...
|
||||
|
||||
9) Fast Read Quad I/O with "Continuous Read Mode"(0xEB):
|
||||
--------------------------------------------------------
|
||||
SPI Quad, Mode3, 8bits, MSB first, Show /CS & Honour /CS:
|
||||
Send(IO0 to IO3) hexa:
|
||||
00 01 D8 (A23-16) (A15-8) (A7-0)
|
||||
A5 (M7-0) => A5 = 1010 0101 (Continuous Read Mode enabled)
|
||||
A5 A5 (Dummy 2 bytes)
|
||||
Receive(IO0 to IO3) hexa:
|
||||
05 E0 20 68 61 68 A2 68 (Data)
|
||||
0C 34 FF F7 D2 FF 12 4B (Data
|
||||
9C 42 F6 D3 04 E0 20 68 (Data)
|
||||
61 68 08 34 FF F7 D2 FF (Data)
|
||||
0E 4B 9C 42 F7 D3 DF F8 (Data)
|
||||
Dump from Debug (Big Endian to swap 32bits):
|
||||
0x800001D8 05E02068 6168A268 0C34FFF7 D2FF124B .<2E> hah<61>h.4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.K
|
||||
0x800001E8 9C42F6D3 04E02068 61680834 FFF7D2FF .B<><42>.<2E> hah.4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
0x800001F8 0E4B9C42 F7D3DFF8 .K.B<><42><EFBFBD><EFBFBD>
|
||||
|
||||
Nota:
|
||||
Tested on JellyBean.
|
||||
SCK is about 32MHz After about 620us from startup.
|
||||
SCK change to about 660KHz/700KHz during about 400us. (During Read from 00 0C 78 => During CGU SetPLL1 code).
|
||||
SCK change from 4MHz to about 8MHz during about 15us. (Read from 00 0D 98 => During CGU SetPLL1 code).
|
||||
SCK stabilize to 8MHz during 122us (no data anymore OLS memory is full) (Read from 00 05 B0).
|
||||
|
||||
...
|
||||
During Code running the SCK run at 8MHz MCU is configured at 72MHz => 12MHz(IRC)*6.
|
||||
SPIFI CLK(0x40050070) = 0xD000800 0x0D=IDIVB & 0x800=AUTOBLOCK_CLOCK_BIT Enabled
|
||||
IDIVB_CTRL(0x4005004C) = 0x9000820 => IDIB=1000(8+1)=9 => for 72MHz Core => 72/9=8MHz
|
||||
IDIVB_CTRL(0x4005004C) = 0x9000800 => IDIB=0000(0+1)=1 => for 72MHz Core => 72/1=72MHz => This configuration just crash.
|
||||
IDIVB_CTRL(0x4005004C) = 0x9000800 => IDIB=0000(0+1)=1 => for 72MHz Core => 72/2=36MHz => This configuration works fine.
|
||||
|
||||
@ -0,0 +1,2 @@
|
||||
These files are generated from KiCad source. They are provided for
|
||||
convenience but may not be as up to date as the KiCad source files.
|
||||
@ -0,0 +1,415 @@
|
||||
ref;value;Field1;Field2;Field3;Field4;Field5;Field6;Field7;Field8
|
||||
C1;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C2;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
||||
C3;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C4;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
||||
C5;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C6;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
||||
C7;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C8;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
||||
C9;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C10;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C11;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C12;330pF;Murata;GRM155R71H331KA01D;CAP CER 330PF 50V 10% X7R 0402;;;;;
|
||||
C13;330pF;Murata;GRM155R71H331KA01D;CAP CER 330PF 50V 10% X7R 0402;;;;;
|
||||
C14;8p2;Taiyo Yuden;UMK105CG8R2DV-F;CAP CER 8.2PF 50V NP0 0402;;;;;
|
||||
C15;180pF;Murata;GRM1555C1H181JA01D;CAP CER 180PF 50V 5% NP0 0402;;;;;
|
||||
C16;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C17;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C18;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C19;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C20;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C21;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
||||
C22;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C23;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C24;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C25;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C26;47pF;Murata;GRM1555C1H470JA01D;CAP CER 47PF 50V 5% NP0 0402;;;;;
|
||||
C27;47pF;Murata;GRM1555C1H470JA01D;CAP CER 47PF 50V 5% NP0 0402;;;;;
|
||||
C28;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C29;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C30;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C31;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C32;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
||||
C33;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C34;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C35;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C36;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C37;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C38;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C39;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C40;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C41;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;;;;;
|
||||
C42;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;;;;;
|
||||
C43;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
||||
C44;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C45;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C46;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C47;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C48;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
||||
C49;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C50;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C51;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
||||
C52;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;;;;;
|
||||
C53;1uF;Taiyo Yuden;LMK105BJ105KV-F;CAP CER 1UF 10V 10% X5R 0402;;;;;
|
||||
C54;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C55;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C56;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C57;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C58;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C59;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C60;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C61;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C62;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C63;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C64;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C65;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C66;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C67;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C68;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;DNP;;;;
|
||||
C69;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;DNP;;;;
|
||||
C70;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;;;;;
|
||||
C71;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C72;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
||||
C73;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C74;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
||||
C75;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C76;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
||||
C77;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C78;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
||||
C79;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C80;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
||||
C81;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C82;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
||||
C83;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C84;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
||||
C85;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
||||
C86;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
||||
C87;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
||||
C88;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
||||
C89;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
||||
C90;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;;;;;
|
||||
C91;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C92;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
||||
C93;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
||||
C94;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
||||
C95;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
||||
C96;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
||||
C97;330nF;Murata;GRM155R61A334KE15D;CAP CER 0.33UF 10V 10% X5R 0402;;;;;
|
||||
C98;330nF;Murata;GRM155R61A334KE15D;CAP CER 0.33UF 10V 10% X5R 0402;;;;;
|
||||
C99;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
||||
C100;330nF;Murata;GRM155R61A334KE15D;CAP CER 0.33UF 10V 10% X5R 0402;;;;;
|
||||
C101;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
||||
C102;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
||||
C103;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
||||
C104;3pF;Murata;GRM1555C1H3R0CA01D;CAP CER 3PF 50V NP0 0402;;;;;
|
||||
C105;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805;;;;;
|
||||
C106;1uF;Taiyo Yuden;LMK105BJ105KV-F;CAP CER 1UF 10V 10% X5R 0402;;;;;
|
||||
C107;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
||||
C108;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
||||
C109;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
||||
C110;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
||||
C111;3pF;Murata;GRM1555C1H3R0CA01D;CAP CER 3PF 50V NP0 0402;;;;;
|
||||
C112;180pF;Murata;GRM1555C1H181JA01D;CAP CER 180PF 50V 5% NP0 0402;;;;;
|
||||
C113;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C114;3.3nF;Murata;GRM155R71H332KA01D;CAP CER 3300PF 50V 10% X7R 0402;;;;;
|
||||
C115;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C116;47pF;Murata;GRM1555C1H470JA01D;CAP CER 47PF 50V 5% NP0 0402;;;;;
|
||||
C118;18pF;Murata;GRM1555C1H180JA01D;CAP CER 18PF 50V 5% NP0 0402;;;;;
|
||||
C119;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C120;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C121;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C122;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C123;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C124;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
||||
C125;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
||||
C126;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805;;;;;
|
||||
C127;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805;;;;;
|
||||
C128;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C129;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C130;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C131;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C132;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C133;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C134;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C135;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C136;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C137;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C138;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C139;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C140;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C141;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C142;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C143;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805;;;;;
|
||||
C144;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C145;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805;;;;;
|
||||
C146;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805;;;;;
|
||||
C147;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C148;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C149;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C150;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C151;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C152;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C153;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C154;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C155;DNP;DNP;;;;;;;
|
||||
C156;47pF;Murata;GRM1555C1H470JA01D;CAP CER 47PF 50V 5% NP0 0402;DNP;;;;
|
||||
C157;18pF;Murata;GRM1555C1H180JA01D;CAP CER 18PF 50V 5% NP0 0402;;;;;
|
||||
C158;18pF;Murata;GRM1555C1H180JA01D;CAP CER 18PF 50V 5% NP0 0402;;;;;
|
||||
C159;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;DNP;;;;
|
||||
C160;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;;;;;
|
||||
C161;1uF;Taiyo Yuden;LMK105BJ105KV-F;CAP CER 1UF 10V 10% X5R 0402;;;;;
|
||||
C162;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
||||
C163;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
||||
C164;18pF;Murata;GRM1555C1H180JA01D;CAP CER 18PF 50V 5% NP0 0402;;;;;
|
||||
C165;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;DNP;;;;
|
||||
C166;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C167;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
||||
C168;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;DNP;;;;
|
||||
C169;DNP;DNP;;;;;;;
|
||||
C170;DNP;DNP;;;;;;;
|
||||
C171;1uF;Taiyo Yuden;LMK105BJ105KV-F;CAP CER 1UF 10V 10% X5R 0402;;;;;
|
||||
D1;GSG-DIODE-TVS-BI;Murata;LXES15AAA1-100;TVS DIODE ESD .05PF 15KV 0402;;;;;
|
||||
D2;VAALED;Lite-On;LTST-S220KRKT;LED SUPR RED CLR RT ANG 0805;;;;;
|
||||
D3;GSG-DIODE-TVS-BI;Murata;LXES15AAA1-100;TVS DIODE ESD .05PF 15KV 0402;;;;;
|
||||
D4;USBLED;Lite-On;LTST-S220KGKT;LED GREEN CLEAR RT ANG 0805;;;;;
|
||||
D5;RXLED;Lite-On;LTST-S220KSKT;LED YELLOW CLEAR RT ANG 0805;;;;;
|
||||
D6;TXLED;Lite-On;LTST-S220KRKT;LED SUPR RED CLR RT ANG 0805;;;;;
|
||||
D7;VCCLED;Lite-On;LTST-S220KGKT;LED GREEN CLEAR RT ANG 0805;;;;;
|
||||
D8;1V8LED;Lite-On;LTST-S220KSKT;LED YELLOW CLEAR RT ANG 0805;;;;;
|
||||
D9;GSG-DIODE-TVS-BI;Murata;LXES15AAA1-100;TVS DIODE ESD .05PF 15KV 0402;;;;;
|
||||
FB1;FILTER;Murata;BLM21PG221SN1D;FERRITE CHIP 220 OHM 2000MA 0805;;;;;
|
||||
FB2;FILTER;Murata;BLM21PG221SN1D;FERRITE CHIP 220 OHM 2000MA 0805;;;;;
|
||||
FB3;FILTER;Murata;BLM21PG221SN1D;FERRITE CHIP 220 OHM 2000MA 0805;;;;;
|
||||
J1;USB-MICRO-B;FCI;10103592-0001LF;CONN RCPT REV MICRO USB TYPE B;;;;;
|
||||
J2;RF-SHIELD-FRAME;Laird;BMI-S-230-F-R;BOARD SHIELD 2INX1.5IN FRAME;DNP;;;;
|
||||
J3;RF-SHIELD-COVER;Laird;BMI-S-230-C;BOARD SHIELD 2INX1.5IN COVER;DNP;;;;
|
||||
J4;MOUNTING_HOLE;DNP;;;;;;;
|
||||
J5;MOUNTING_HOLE;DNP;;;;;;;
|
||||
J6;MOUNTING_HOLE;DNP;;;;;;;
|
||||
J7;MOUNTING_HOLE;DNP;;;;;;;
|
||||
J8;MOUNTING_HOLE;DNP;;;;;;;
|
||||
J9;MOUNTING_HOLE;DNP;;;;;;;
|
||||
J10;GND_CLIP;Harwin;S1751-46R;PC TEST POINT TIN SMD;DNP;;;;
|
||||
L1;DNP;DNP;;;;;;;
|
||||
L2;10uH;Taiyo Yuden;BRL1608T100M;INDUCTR 10UH 220MA 20% 0603 SMD;;;;;
|
||||
L3;10uH;Taiyo Yuden;BRL1608T100M;INDUCTR 10UH 220MA 20% 0603 SMD;;;;;
|
||||
L4;DNP;DNP;;;;;;;
|
||||
L5;10uH;Taiyo Yuden;BRL1608T100M;INDUCTR 10UH 220MA 20% 0603 SMD;;;;;
|
||||
L6;DNP;DNP;;;;;;;
|
||||
L7;6.2nH;Taiyo Yuden;HK10056N2S-T;INDUCTOR HIFREQ 6.2+/-0.3NH 0402;;;;;
|
||||
L8;DNP;DNP;;;;;;;
|
||||
L9;DNP;DNP;;;;;;;
|
||||
L10;4u7;Taiyo Yuden;NRG4026T4R7M;INDUCTOR 4.7UH 1.6A 20% SMD;;;;;
|
||||
L11;4u7;Taiyo Yuden;NRG4026T4R7M;INDUCTOR 4.7UH 1.6A 20% SMD;;;;;
|
||||
L12;10uH;Taiyo Yuden;BRL1608T100M;INDUCTR 10UH 220MA 20% 0603 SMD;;;;;
|
||||
L13;10uH;Taiyo Yuden;BRL1608T100M;INDUCTR 10UH 220MA 20% 0603 SMD;;;;;
|
||||
P1;1V8;DNP;;;;;;;
|
||||
P2;CLKOUT;Molex;73251-2121;CONN SMA JACK 50 OHM EDGE MNT W/JAM NUT & LOCK WASHER;;;;;
|
||||
P3;GND;DNP;;;;;;;
|
||||
P4;ANTENNA;Molex;73251-2121;CONN SMA JACK 50 OHM EDGE MNT W/JAM NUT & LOCK WASHER;;;;;
|
||||
P5;LEDS;DNP;;;;;;;
|
||||
P6;GPO4;DNP;;;;;;;
|
||||
P7;GPO2;DNP;;;;;;;
|
||||
P8;VCC;DNP;;;;;;;
|
||||
P9;BASEBAND;Sullins;PPPC082LFBN-RC;CONN HEADER FMAL 16PS.1" DL GOLD;;;;;
|
||||
P13;GPO1;DNP;;;;;;;
|
||||
P14;XCVR_CLKOUT;DNP;;;;;;;
|
||||
P15;INTR;DNP;;;;;;;
|
||||
P16;CLKIN;Molex;73251-2121;CONN SMA JACK 50 OHM EDGE MNT W/JAM NUT & LOCK WASHER;;;;;
|
||||
P17;GPO6;DNP;;;;;;;
|
||||
P18;OEB;DNP;;;;;;;
|
||||
P19;GPO3;DNP;;;;;;;
|
||||
P20;GPIO;Sullins;PPPC112LFBN-RC;CONN HEADER FMAL 22PS.1" DL GOLD;;;;;
|
||||
P21;REF_IN;DNP;;;;;;;
|
||||
P22;I2S;Sullins;PPPC132LFBN-RC;CONN HEADER FMAL 26PS.1" DL GOLD;;;;;
|
||||
P23;DBGEN;DNP;;;;;;;
|
||||
P24;TRST;DNP;;;;;;;
|
||||
P25;LPC_ISP;DNP;;;;;;;
|
||||
P26;LPC_JTAG;Sullins;GRPB052VWVN-RC;CONN HEADER .050" 10PS DL PCB AU;DNP;;;;
|
||||
P27;MIXER_SDATA;DNP;;;;;;;
|
||||
P28;SD;Sullins;PPPC112LFBN-RC;CONN HEADER FMAL 22PS.1" DL GOLD;;;;;
|
||||
P29;CPLD_JTAG;DNP;;;;;;;
|
||||
P30;BANK2_AUX;DNP;;;;;;;
|
||||
P31;MIXER_SCLK;DNP;;;;;;;
|
||||
P32;MIXER_ENX;DNP;;;;;;;
|
||||
P33;MIXER_RESETX;DNP;;;;;;;
|
||||
P34;MIX_BYPASS;DNP;;;;;;;
|
||||
P35;!MIX_BYPASS;DNP;;;;;;;
|
||||
P36;VAA;DNP;;;;;;;
|
||||
P37;SCL;DNP;;;;;;;
|
||||
P38;SDA;DNP;;;;;;;
|
||||
P39;SSP1_SCK;DNP;;;;;;;
|
||||
P40;SSP1_MOSI;DNP;;;;;;;
|
||||
P41;SSP1_MISO;DNP;;;;;;;
|
||||
P42;TX;DNP;;;;;;;
|
||||
P43;RX;DNP;;;;;;;
|
||||
P44;HP;DNP;;;;;;;
|
||||
P45;LP;DNP;;;;;;;
|
||||
P46;TX_MIX_BP;DNP;;;;;;;
|
||||
P47;RX_MIX_BP;DNP;;;;;;;
|
||||
P48;TX_AMP;DNP;;;;;;;
|
||||
P49;RX_AMP;DNP;;;;;;;
|
||||
P50;AMP_BYPASS;DNP;;;;;;;
|
||||
P51;!TX_AMP_PWR;DNP;;;;;;;
|
||||
P52;!RX_AMP_PWR;DNP;;;;;;;
|
||||
P53;CS_XCVR;DNP;;;;;;;
|
||||
P54;CS_AD;DNP;;;;;;;
|
||||
P55;TXENABLE;DNP;;;;;;;
|
||||
P56;RXENABLE;DNP;;;;;;;
|
||||
P57;XTAL2;DNP;;;;;;;
|
||||
P58;GCK1;DNP;;;;;;;
|
||||
P59;GCK2;DNP;;;;;;;
|
||||
P60;SGPIO_CLK;DNP;;;;;;;
|
||||
P61;DA0;DNP;;;;;;;
|
||||
P62;DA7;DNP;;;;;;;
|
||||
P63;DD0;DNP;;;;;;;
|
||||
P64;DD9;DNP;;;;;;;
|
||||
P65;DA4;DNP;;;;;;;
|
||||
P66;DD5;DNP;;;;;;;
|
||||
P67;RSSI;DNP;;;;;;;
|
||||
P68;SPIFI_CS;DNP;;;;;;;
|
||||
P69;VREGMODE;DNP;;;;;;;
|
||||
P70;EN_1V8;DNP;;;;;;;
|
||||
P71;ID;DNP;;;;;;;
|
||||
P72;GP_CLKIN;DNP;;;;;;;
|
||||
P73;P1_2;DNP;;;;;;;
|
||||
P74;P1_1;DNP;;;;;;;
|
||||
P75;GP_CLKIN;DNP;;;;;;;
|
||||
P76;GP_CLKIN;DNP;;;;;;;
|
||||
P77;GP_CLKIN;DNP;;;;;;;
|
||||
P78;GP_CLKIN;DNP;;;;;;;
|
||||
P79;GP_CLKIN;DNP;;;;;;;
|
||||
P80;SHIELD;DNP;;;;;;;
|
||||
P81;SPIFI_SIO2;DNP;;;;;;;
|
||||
P82;SPIFI_SIO3;DNP;;;;;;;
|
||||
P83;GND;DNP;;;;;;;
|
||||
P84;GND;DNP;;;;;;;
|
||||
P85;GND;DNP;;;;;;;
|
||||
P86;GND;DNP;;;;;;;
|
||||
P87;GND;DNP;;;;;;;
|
||||
P88;GND;DNP;;;;;;;
|
||||
P89;GND;DNP;;;;;;;
|
||||
P90;GND;DNP;;;;;;;
|
||||
P91;GND;DNP;;;;;;;
|
||||
P92;GND;DNP;;;;;;;
|
||||
Q1;MOSFET_P;Fairchild;BSS84;MOSFET P-CH 50V 130MA SOT-23;;;;;
|
||||
Q2;MOSFET_P;Fairchild;BSS84;MOSFET P-CH 50V 130MA SOT-23;;;;;
|
||||
Q3;MOSFET_P;Diodes Inc.;DMP2305U-7;MOSFET P-CH 20V 4.2A SOT-23;;;;;
|
||||
Q4;MOSFET_P;Fairchild;BSS84;MOSFET P-CH 50V 130MA SOT-23;;;;;
|
||||
Q5;MOSFET_P;Alpha and Omega;AO3407A;MOSFET P-CH -30V -4.3A SOT23;;;;;
|
||||
R1;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402;;;;;
|
||||
R2;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402;;;;;
|
||||
R3;22k;Panasonic;ERJ-2GEJ223X;RES 22K OHM 1/10W 5% 0402 SMD;;;;;
|
||||
R4;51k;Stackpole;RMCF0402FT51K0;RES TF 51K OHM 1% 0.0625W 0402;;;;;
|
||||
R5;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R6;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R7;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R8;1k;Stackpole;RMCF0402FT1K00;RES 1K OHM 1/16W 1% 0402;;;;;
|
||||
R9;1k;Stackpole;RMCF0402FT1K00;RES 1K OHM 1/16W 1% 0402;;;;;
|
||||
R10;1k;Stackpole;RMCF0402FT1K00;RES 1K OHM 1/16W 1% 0402;;;;;
|
||||
R11;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R12;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R13;1k;Stackpole;RMCF0402FT1K00;RES 1K OHM 1/16W 1% 0402;;;;;
|
||||
R14;4k7;Stackpole;RMCF0402FT4K70;RES 4.7K OHM 1/16W 1% 0402;;;;;
|
||||
R15;4k7;Stackpole;RMCF0402FT4K70;RES 4.7K OHM 1/16W 1% 0402;;;;;
|
||||
R16;4k7;Stackpole;RMCF0402FT4K70;RES 4.7K OHM 1/16W 1% 0402;;;;;
|
||||
R17;4k7;Stackpole;RMCF0402FT4K70;RES 4.7K OHM 1/16W 1% 0402;;;;;
|
||||
R18;1k8;Stackpole;RMCF0402JT1K80;RES TF 1.8K OHM 5% 1/16W 0402;;;;;
|
||||
R19;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R20;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
||||
R21;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
||||
R22;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
||||
R23;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
||||
R24;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R25;475;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402;;;;;
|
||||
R26;475;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402;;;;;
|
||||
R27;1k8;Stackpole;RMCF0402JT1K80;RES TF 1.8K OHM 5% 1/16W 0402;;;;;
|
||||
R28;1k8;Stackpole;RMCF0402JT1K80;RES TF 1.8K OHM 5% 1/16W 0402;;;;;
|
||||
R29;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R30;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R31;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R32;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R33;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R34;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R35;DNP;DNP;;;;;;;
|
||||
R36;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R37;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R41;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R46;162k;Stackpole;RMCF0402FT162K;RES TF 1/16W 162K OHM 1% 0402;;;;;
|
||||
R47;330k;Stackpole;RMCF0402FT330K;RES TF 1/16W 330K OHM 1% 0402;;;;;
|
||||
R48;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R49;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R51;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R52;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R54;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R55;162k;Stackpole;RMCF0402FT162K;RES TF 1/16W 162K OHM 1% 0402;;;;;
|
||||
R56;715k;Stackpole;RMCF0402FT715K;RES TF 1/16W 715K OHM 1% 0402;;;;;
|
||||
R57;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
||||
R58;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
||||
R59;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R62;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
||||
R63;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R64;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R65;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R66;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R67;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R68;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R69;12k;Rohm;MCR01MRTF1202;RES 12.0K OHM 1/16W 1% 0402 SMD;;;;;
|
||||
R72;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402;;;;;
|
||||
R73;1k;Stackpole;RMCF0402FT1K00;RES 1K OHM 1/16W 1% 0402;;;;;
|
||||
R74;1k8;Stackpole;RMCF0402JT1K80;RES TF 1.8K OHM 5% 1/16W 0402;;;;;
|
||||
R75;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402;;;;;
|
||||
R76;1k;Stackpole;RMCF0402FT1K00;RES 1K OHM 1/16W 1% 0402;;;;;
|
||||
R77;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R78;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R79;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R80;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R81;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R85;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R86;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R87;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R88;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R89;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R90;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R91;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R93;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R94;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R96;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R98;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R99;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R100;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R104;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
R105;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
||||
SW1;DFU;TE Connectivity;FSMRA3JH;SWITCH TACTILE SPST-NO 0.05A 12V;;;;;
|
||||
SW2;RESET;TE Connectivity;FSMRA3JH;SWITCH TACTILE SPST-NO 0.05A 12V;;;;;
|
||||
T1;MIX_IN_BALUN;Anaren;B0310J50100AHF;Ultra Low Profile 0805 Balun 50 to 100 ohm Balanced;;;;;
|
||||
T2;MIX_OUT_BALUN;Anaren;B0310J50100AHF;Ultra Low Profile 0805 Balun 50 to 100 ohm Balanced;;;;;
|
||||
T3;RX_BALUN;Johanson Technology;2500BL14M100T;BALUN CERAMIC CHIP WIMAX 2.5GHZ;;;;;
|
||||
T4;TX_BALUN;Johanson Technology;2500BL14M100T;BALUN CERAMIC CHIP WIMAX 2.5GHZ;;;;;
|
||||
U1;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
||||
U2;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
||||
U3;RX_LOWPASS_FILTER;AVX;LP0603A1880ANTR;FILTER LOW PASS 1880MHZ 0603 SMD;;;;;
|
||||
U4;RFFC5072;RFMD;RFFC5072TR7;WIDEBAND SYNTHESIZER/VCO WITH INTEGRATED 6GHz MIXER;;;;;
|
||||
U5;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
||||
U6;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
||||
U7;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
||||
U8;RX_HIGHPASS_FILTER;TDK;DEA162400HT-8004B1;FILTER HIGHPASS WLAN&BLUETOOTH;;;;;
|
||||
U9;SKY13317;Skyworks;SKY13317-373LF;20 MHz-6.0 GHz pHEMT GaAs SP3T Switch;;;;;
|
||||
U10;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
||||
U11;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
||||
U12;SKY13317;Skyworks;SKY13317-373LF;20 MHz-6.0 GHz pHEMT GaAs SP3T Switch;;;;;
|
||||
U13;MGA-81563;Avago;MGA-81563-TR1G;0.1-6 GHz 3 V, 14 dBm Amplifier;;;;;
|
||||
U14;SKY13317;Skyworks;SKY13317-373LF;20 MHz-6.0 GHz pHEMT GaAs SP3T Switch;;;;;
|
||||
U15;LXES1TBCC2-004;Murata;LXES1TBCC2-004;ESD Suppressors 0.55pF 6V 2ch;;;;;
|
||||
U17;MAX2837;Maxim;MAX2837ETM+;IC TXRX 2.3GHZ-2.7GHZ 48TQFN;;;;;
|
||||
U18;MAX5864;Maxim;MAX5864ETM+;IC ANLG FRONT END 22MSPS 48-TQFN;;;;;
|
||||
U19;SI5351C;Silicon Laboratories Inc;SI5351C-B-GM;IC CLK GENERATOR 160MHZ 20QFN;;;;;
|
||||
U20;W25Q80BV;Winbond;W25Q80BVSSIG;IC FLASH 8MBIT 8SOIC;;;;;
|
||||
U21;TPS62410;Texas Instruments;TPS62410DRCR;IC BUCK SYNC DUAL ADJ 0.8A 10SON;;;;;
|
||||
U23;LPC4320FBD144;NXP;LPC4320FBD144,551;IC MCU 32BIT 144LQFP;;;;;
|
||||
U24;GSG-XC2C64A-7VQG100C;Xilinx;XC2C64A-7VQG100C;IC CR-II CPLD 64MCELL 100-VQFP;;;;;
|
||||
U25;MGA-81563;Avago;MGA-81563-TR1G;0.1-6 GHz 3 V, 14 dBm Amplifier;;;;;
|
||||
X1;GSG-XTAL4PIN;AVX;CX3225GB25000D0HEQZ1;CRYSTAL 25.000MHZ 8PF SMD;;;;;
|
||||
X2;MCU_XTAL;TXC;7V-12.000MAAE-T;CRYSTAL 12.000 MHZ 12PF SMD;;;;;
|
||||
X3;RTC_XTAL;Abracon;AB26TRQ-32.768KHZ-T;CRYSTAL 32.768KHZ 12.5PF SMD;;;;;
|
||||
|
Can't render this file because it contains an unexpected character in line 215 and column 59.
|
@ -0,0 +1,47 @@
|
||||
Copyright 2012, 2013, 2014 Michael Ossmann
|
||||
|
||||
These files are part of HackRF.
|
||||
|
||||
This is a free hardware design; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This design is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this design; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
Boston, MA 02110-1301, USA.
|
||||
|
||||
|
||||
HackRF One is a wideband software radio transceiver with a USB interface.
|
||||
|
||||
hardware notes:
|
||||
|
||||
Schematic and layout files were designed in KiCad, an open source electronic
|
||||
design automation package.
|
||||
|
||||
order of copper layers:
|
||||
Copper 1: C1F (front)
|
||||
Copper 2: C2
|
||||
Copper 3: C3
|
||||
Copper 4: C1B (back)
|
||||
|
||||
PCB description: 4 layer PCB 0.062 in
|
||||
Copper 1 0.5 oz foil plated to approximately 0.0017 in
|
||||
Dielectric 1-2 0.0119 in
|
||||
Copper 2 1 oz foil (0.0014 in)
|
||||
Dielectric 2-3 0.0280 in
|
||||
Copper 3 1 oz foil (0.0014 in)
|
||||
Dielectric 3-4 0.0119 in
|
||||
Copper 4 0.5 oz foil plated to approximately 0.0017 in
|
||||
|
||||
FR4 or similar substrate with Er=4.5 (+/- 0.1)
|
||||
double side solder mask green
|
||||
single side silkscreen white
|
||||
6 mil min trace width and
|
||||
6 mil min isolation
|
||||
@ -0,0 +1,329 @@
|
||||
G04 (created by PCBNEW (2012-nov-02)-stable) date Sat 15 Mar 2014 07:07:26 PM MDT*
|
||||
%MOIN*%
|
||||
G04 Gerber Fmt 3.4, Leading zero omitted, Abs format*
|
||||
%FSLAX34Y34*%
|
||||
G01*
|
||||
G70*
|
||||
G90*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0*%
|
||||
%ADD11R,0.066X0.066*%
|
||||
%ADD12C,0.066*%
|
||||
%ADD13C,0.0650551*%
|
||||
%ADD14C,0.0847402*%
|
||||
%ADD15C,0.0306*%
|
||||
%ADD16C,0.029*%
|
||||
%ADD17R,0.048X0.048*%
|
||||
%ADD18C,0.048*%
|
||||
%ADD19C,0.029222*%
|
||||
%ADD20C,0.0290315*%
|
||||
%ADD21C,0.226472*%
|
||||
%ADD22C,0.029622*%
|
||||
%ADD23R,0.170961X0.110921*%
|
||||
%ADD24C,0.0611181*%
|
||||
%ADD25C,0.0787402*%
|
||||
G04 APERTURE END LIST*
|
||||
G54D10*
|
||||
G54D11*
|
||||
X68122Y-61397D03*
|
||||
G54D12*
|
||||
X67122Y-61397D03*
|
||||
X68122Y-60397D03*
|
||||
X67122Y-60397D03*
|
||||
X68122Y-59397D03*
|
||||
X67122Y-59397D03*
|
||||
X68122Y-58397D03*
|
||||
X67122Y-58397D03*
|
||||
X68122Y-57397D03*
|
||||
X67122Y-57397D03*
|
||||
X68122Y-56397D03*
|
||||
X67122Y-56397D03*
|
||||
X68122Y-55397D03*
|
||||
X67122Y-55397D03*
|
||||
X68122Y-54397D03*
|
||||
X67122Y-54397D03*
|
||||
X68122Y-53397D03*
|
||||
X67122Y-53397D03*
|
||||
X68122Y-52397D03*
|
||||
X67122Y-52397D03*
|
||||
X68122Y-51397D03*
|
||||
X67122Y-51397D03*
|
||||
G54D13*
|
||||
X24685Y-48090D03*
|
||||
X24685Y-49862D03*
|
||||
G54D14*
|
||||
X25665Y-50356D03*
|
||||
X25665Y-47596D03*
|
||||
G54D15*
|
||||
X40510Y-44276D03*
|
||||
X40510Y-44925D03*
|
||||
X39860Y-44925D03*
|
||||
X39860Y-44276D03*
|
||||
X39860Y-43626D03*
|
||||
X40510Y-43626D03*
|
||||
X41159Y-43626D03*
|
||||
X41159Y-44276D03*
|
||||
X41159Y-44925D03*
|
||||
G54D16*
|
||||
X42775Y-55865D03*
|
||||
X42775Y-56455D03*
|
||||
X42184Y-56455D03*
|
||||
X42184Y-55865D03*
|
||||
X42184Y-55274D03*
|
||||
X42775Y-55274D03*
|
||||
X43365Y-55274D03*
|
||||
X43365Y-55865D03*
|
||||
X43365Y-56455D03*
|
||||
G54D11*
|
||||
X54122Y-62397D03*
|
||||
G54D12*
|
||||
X55122Y-62397D03*
|
||||
X56122Y-62397D03*
|
||||
X57122Y-62397D03*
|
||||
X58122Y-62397D03*
|
||||
X59122Y-62397D03*
|
||||
G54D17*
|
||||
X59709Y-45065D03*
|
||||
G54D18*
|
||||
X60209Y-45065D03*
|
||||
X59709Y-45565D03*
|
||||
X60209Y-45565D03*
|
||||
X59709Y-46065D03*
|
||||
X60209Y-46065D03*
|
||||
X59709Y-46565D03*
|
||||
X60209Y-46565D03*
|
||||
X59709Y-47065D03*
|
||||
X60209Y-47065D03*
|
||||
G54D11*
|
||||
X63122Y-41397D03*
|
||||
G54D12*
|
||||
X63122Y-42397D03*
|
||||
X62122Y-41397D03*
|
||||
X62122Y-42397D03*
|
||||
X61122Y-41397D03*
|
||||
X61122Y-42397D03*
|
||||
X60122Y-41397D03*
|
||||
X60122Y-42397D03*
|
||||
X59122Y-41397D03*
|
||||
X59122Y-42397D03*
|
||||
X58122Y-41397D03*
|
||||
X58122Y-42397D03*
|
||||
X57122Y-41397D03*
|
||||
X57122Y-42397D03*
|
||||
X56122Y-41397D03*
|
||||
X56122Y-42397D03*
|
||||
X55122Y-41397D03*
|
||||
X55122Y-42397D03*
|
||||
X54122Y-41397D03*
|
||||
X54122Y-42397D03*
|
||||
G54D19*
|
||||
X36464Y-62111D03*
|
||||
X36464Y-61678D03*
|
||||
X36897Y-61678D03*
|
||||
X36897Y-62111D03*
|
||||
X36897Y-62544D03*
|
||||
X36464Y-62544D03*
|
||||
X36031Y-62544D03*
|
||||
X36031Y-62111D03*
|
||||
X36031Y-61678D03*
|
||||
X50184Y-64144D03*
|
||||
X49924Y-64403D03*
|
||||
X49924Y-63884D03*
|
||||
X50444Y-63884D03*
|
||||
X50444Y-64403D03*
|
||||
G54D11*
|
||||
X33122Y-50397D03*
|
||||
G54D12*
|
||||
X33122Y-49397D03*
|
||||
G54D11*
|
||||
X57122Y-44397D03*
|
||||
G54D12*
|
||||
X58122Y-44397D03*
|
||||
G54D11*
|
||||
X62122Y-44397D03*
|
||||
G54D12*
|
||||
X63122Y-44397D03*
|
||||
G54D20*
|
||||
X66744Y-44075D03*
|
||||
X66547Y-44370D03*
|
||||
X66940Y-44370D03*
|
||||
X66940Y-43780D03*
|
||||
X66547Y-43780D03*
|
||||
G54D13*
|
||||
X24685Y-42972D03*
|
||||
X24685Y-44744D03*
|
||||
G54D14*
|
||||
X25665Y-45238D03*
|
||||
X25665Y-42478D03*
|
||||
G54D11*
|
||||
X66122Y-64397D03*
|
||||
G54D12*
|
||||
X66122Y-65397D03*
|
||||
X65122Y-64397D03*
|
||||
X65122Y-65397D03*
|
||||
X64122Y-64397D03*
|
||||
X64122Y-65397D03*
|
||||
X63122Y-64397D03*
|
||||
X63122Y-65397D03*
|
||||
X62122Y-64397D03*
|
||||
X62122Y-65397D03*
|
||||
X61122Y-64397D03*
|
||||
X61122Y-65397D03*
|
||||
X60122Y-64397D03*
|
||||
X60122Y-65397D03*
|
||||
X59122Y-64397D03*
|
||||
X59122Y-65397D03*
|
||||
X58122Y-64397D03*
|
||||
X58122Y-65397D03*
|
||||
X57122Y-64397D03*
|
||||
X57122Y-65397D03*
|
||||
X56122Y-64397D03*
|
||||
X56122Y-65397D03*
|
||||
X55122Y-64397D03*
|
||||
X55122Y-65397D03*
|
||||
X54122Y-64397D03*
|
||||
X54122Y-65397D03*
|
||||
G54D11*
|
||||
X36122Y-41397D03*
|
||||
G54D12*
|
||||
X36122Y-42397D03*
|
||||
X35122Y-41397D03*
|
||||
X35122Y-42397D03*
|
||||
X34122Y-41397D03*
|
||||
X34122Y-42397D03*
|
||||
G54D11*
|
||||
X57122Y-46397D03*
|
||||
G54D12*
|
||||
X57122Y-47397D03*
|
||||
G54D11*
|
||||
X70122Y-51397D03*
|
||||
G54D12*
|
||||
X70122Y-52397D03*
|
||||
G54D11*
|
||||
X49122Y-61397D03*
|
||||
G54D12*
|
||||
X48122Y-61397D03*
|
||||
X49122Y-60397D03*
|
||||
X48122Y-60397D03*
|
||||
X49122Y-59397D03*
|
||||
X48122Y-59397D03*
|
||||
X49122Y-58397D03*
|
||||
X48122Y-58397D03*
|
||||
X49122Y-57397D03*
|
||||
X48122Y-57397D03*
|
||||
X49122Y-56397D03*
|
||||
X48122Y-56397D03*
|
||||
X49122Y-55397D03*
|
||||
X48122Y-55397D03*
|
||||
X49122Y-54397D03*
|
||||
X48122Y-54397D03*
|
||||
X49122Y-53397D03*
|
||||
X48122Y-53397D03*
|
||||
X49122Y-52397D03*
|
||||
X48122Y-52397D03*
|
||||
X49122Y-51397D03*
|
||||
X48122Y-51397D03*
|
||||
G54D11*
|
||||
X51122Y-52397D03*
|
||||
G54D12*
|
||||
X52122Y-52397D03*
|
||||
G54D21*
|
||||
X25196Y-40944D03*
|
||||
G54D22*
|
||||
X25196Y-40078D03*
|
||||
X24330Y-40944D03*
|
||||
X25196Y-41811D03*
|
||||
X26062Y-40944D03*
|
||||
X25807Y-40334D03*
|
||||
X24586Y-40334D03*
|
||||
X24586Y-41555D03*
|
||||
X25807Y-41555D03*
|
||||
G54D21*
|
||||
X25196Y-67322D03*
|
||||
G54D22*
|
||||
X25196Y-66456D03*
|
||||
X24330Y-67322D03*
|
||||
X25196Y-68188D03*
|
||||
X26062Y-67322D03*
|
||||
X25807Y-66712D03*
|
||||
X24586Y-66712D03*
|
||||
X24586Y-67933D03*
|
||||
X25807Y-67933D03*
|
||||
G54D21*
|
||||
X69291Y-67322D03*
|
||||
G54D22*
|
||||
X69291Y-66456D03*
|
||||
X68425Y-67322D03*
|
||||
X69291Y-68188D03*
|
||||
X70157Y-67322D03*
|
||||
X69901Y-66712D03*
|
||||
X68681Y-66712D03*
|
||||
X68681Y-67933D03*
|
||||
X69901Y-67933D03*
|
||||
G54D21*
|
||||
X69291Y-40944D03*
|
||||
G54D22*
|
||||
X69291Y-40078D03*
|
||||
X68425Y-40944D03*
|
||||
X69291Y-41811D03*
|
||||
X70157Y-40944D03*
|
||||
X69901Y-40334D03*
|
||||
X68681Y-40334D03*
|
||||
X68681Y-41555D03*
|
||||
X69901Y-41555D03*
|
||||
G54D21*
|
||||
X49606Y-40944D03*
|
||||
G54D22*
|
||||
X49606Y-40078D03*
|
||||
X48740Y-40944D03*
|
||||
X49606Y-41811D03*
|
||||
X50472Y-40944D03*
|
||||
X50216Y-40334D03*
|
||||
X48996Y-40334D03*
|
||||
X48996Y-41555D03*
|
||||
X50216Y-41555D03*
|
||||
G54D21*
|
||||
X51574Y-56692D03*
|
||||
G54D22*
|
||||
X51574Y-55826D03*
|
||||
X50708Y-56692D03*
|
||||
X51574Y-57559D03*
|
||||
X52440Y-56692D03*
|
||||
X52185Y-56082D03*
|
||||
X50964Y-56082D03*
|
||||
X50964Y-57303D03*
|
||||
X52185Y-57303D03*
|
||||
G54D11*
|
||||
X42122Y-50397D03*
|
||||
G54D12*
|
||||
X42122Y-51397D03*
|
||||
X41122Y-50397D03*
|
||||
X41122Y-51397D03*
|
||||
X40122Y-50397D03*
|
||||
X40122Y-51397D03*
|
||||
X39122Y-50397D03*
|
||||
X39122Y-51397D03*
|
||||
X38122Y-50397D03*
|
||||
X38122Y-51397D03*
|
||||
X37122Y-50397D03*
|
||||
X37122Y-51397D03*
|
||||
X36122Y-50397D03*
|
||||
X36122Y-51397D03*
|
||||
X35122Y-50397D03*
|
||||
X35122Y-51397D03*
|
||||
G54D23*
|
||||
X24848Y-62010D03*
|
||||
X24848Y-64760D03*
|
||||
X69639Y-65548D03*
|
||||
X69639Y-62798D03*
|
||||
X69639Y-58461D03*
|
||||
X69639Y-55711D03*
|
||||
G54D13*
|
||||
X70393Y-50442D03*
|
||||
X70393Y-47194D03*
|
||||
G54D24*
|
||||
X69200Y-49799D03*
|
||||
X69200Y-47838D03*
|
||||
G54D25*
|
||||
X67322Y-40157D03*
|
||||
M02*
|
||||
@ -0,0 +1,120 @@
|
||||
G04 (created by PCBNEW (2012-nov-02)-stable) date Sat 15 Mar 2014 07:07:26 PM MDT*
|
||||
%MOIN*%
|
||||
G04 Gerber Fmt 3.4, Leading zero omitted, Abs format*
|
||||
%FSLAX34Y34*%
|
||||
G01*
|
||||
G70*
|
||||
G90*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0*%
|
||||
%ADD11C,0.015*%
|
||||
G04 APERTURE END LIST*
|
||||
G54D10*
|
||||
G54D11*
|
||||
X70866Y-49931D02*
|
||||
X70866Y-54622D01*
|
||||
X70866Y-48061D02*
|
||||
X70866Y-49576D01*
|
||||
X70866Y-40944D02*
|
||||
X70866Y-47706D01*
|
||||
X70413Y-49576D02*
|
||||
G75*
|
||||
G03X70413Y-49931I0J-177D01*
|
||||
G74*
|
||||
G01*
|
||||
X70866Y-49931D02*
|
||||
X70413Y-49931D01*
|
||||
X70866Y-49576D02*
|
||||
X70413Y-49576D01*
|
||||
X70413Y-47706D02*
|
||||
G75*
|
||||
G03X70413Y-48061I0J-177D01*
|
||||
G74*
|
||||
G01*
|
||||
X70413Y-48061D02*
|
||||
X70866Y-48061D01*
|
||||
X70866Y-47706D02*
|
||||
X70413Y-47706D01*
|
||||
X23850Y-61393D02*
|
||||
X23795Y-61338D01*
|
||||
X23795Y-65433D02*
|
||||
X23850Y-65377D01*
|
||||
X23795Y-65432D02*
|
||||
G75*
|
||||
G03X23622Y-65850I417J-417D01*
|
||||
G74*
|
||||
G01*
|
||||
X23850Y-65378D02*
|
||||
G75*
|
||||
G03X24023Y-64960I-417J417D01*
|
||||
G74*
|
||||
G01*
|
||||
X23795Y-61338D02*
|
||||
G75*
|
||||
G02X23622Y-60921I417J417D01*
|
||||
G74*
|
||||
G01*
|
||||
X23850Y-61393D02*
|
||||
G75*
|
||||
G02X24023Y-61811I-417J-417D01*
|
||||
G74*
|
||||
G01*
|
||||
X70866Y-67322D02*
|
||||
X70866Y-66637D01*
|
||||
X70637Y-66165D02*
|
||||
X70692Y-66220D01*
|
||||
X70693Y-66220D02*
|
||||
G75*
|
||||
G02X70866Y-66637I-417J-417D01*
|
||||
G74*
|
||||
G01*
|
||||
X70637Y-66165D02*
|
||||
G75*
|
||||
G02X70464Y-65748I417J417D01*
|
||||
G74*
|
||||
G01*
|
||||
X70637Y-55094D02*
|
||||
X70692Y-55039D01*
|
||||
X70693Y-55039D02*
|
||||
G75*
|
||||
G03X70866Y-54622I-417J417D01*
|
||||
G74*
|
||||
G01*
|
||||
X70637Y-55094D02*
|
||||
G75*
|
||||
G03X70464Y-55511I417J-417D01*
|
||||
G74*
|
||||
G01*
|
||||
X23622Y-65850D02*
|
||||
X23622Y-67322D01*
|
||||
X23622Y-60921D02*
|
||||
X23622Y-40944D01*
|
||||
X24023Y-61811D02*
|
||||
X24023Y-64960D01*
|
||||
X70464Y-55511D02*
|
||||
X70464Y-65748D01*
|
||||
X69291Y-39370D02*
|
||||
X25196Y-39370D01*
|
||||
X25196Y-68897D02*
|
||||
X69291Y-68897D01*
|
||||
X69291Y-68897D02*
|
||||
G75*
|
||||
G03X70866Y-67322I0J1574D01*
|
||||
G74*
|
||||
G01*
|
||||
X70866Y-40944D02*
|
||||
G75*
|
||||
G03X69291Y-39370I-1574J0D01*
|
||||
G74*
|
||||
G01*
|
||||
X23622Y-67322D02*
|
||||
G75*
|
||||
G03X25196Y-68897I1574J0D01*
|
||||
G74*
|
||||
G01*
|
||||
X25196Y-39370D02*
|
||||
G75*
|
||||
G03X23622Y-40944I0J-1574D01*
|
||||
G74*
|
||||
G01*
|
||||
M02*
|
||||
@ -0,0 +1,832 @@
|
||||
M48
|
||||
INCH,TZ
|
||||
T1C0.013
|
||||
T2C0.013
|
||||
T3C0.014
|
||||
T4C0.015
|
||||
T5C0.016
|
||||
T6C0.020
|
||||
T7C0.025
|
||||
T8C0.028
|
||||
T9C0.028
|
||||
T10C0.035
|
||||
T11C0.039
|
||||
T12C0.040
|
||||
T13C0.051
|
||||
T14C0.126
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X066547Y-044371
|
||||
X066744Y-044075
|
||||
T2
|
||||
X027744Y-061755
|
||||
X027744Y-062605
|
||||
X028644Y-061705
|
||||
X028834Y-063305
|
||||
X028874Y-057845
|
||||
X029035Y-061890
|
||||
X029092Y-056731
|
||||
X029112Y-056231
|
||||
X029754Y-059245
|
||||
X030050Y-066064
|
||||
X030302Y-054621
|
||||
X030352Y-055881
|
||||
X030464Y-061305
|
||||
X030784Y-061455
|
||||
X031434Y-060765
|
||||
X031660Y-057780
|
||||
X031752Y-053831
|
||||
X031752Y-054281
|
||||
X031752Y-054731
|
||||
X031972Y-066158
|
||||
X033352Y-054681
|
||||
X033352Y-055931
|
||||
X034152Y-063008
|
||||
X034750Y-061560
|
||||
X034838Y-056789
|
||||
X036128Y-056939
|
||||
X036150Y-049756
|
||||
X036650Y-049756
|
||||
X037380Y-049756
|
||||
X037805Y-059962
|
||||
X037882Y-049758
|
||||
X038240Y-061360
|
||||
X038255Y-060062
|
||||
X038335Y-061712
|
||||
X038343Y-065364
|
||||
X038700Y-060440
|
||||
X038765Y-042911
|
||||
X039400Y-047546
|
||||
X039900Y-047546
|
||||
X040335Y-046101
|
||||
X040630Y-047546
|
||||
X040960Y-056980
|
||||
X041100Y-061650
|
||||
X041105Y-056465
|
||||
X041130Y-047546
|
||||
X041175Y-055555
|
||||
X041240Y-057330
|
||||
X041607Y-066367
|
||||
X042330Y-053880
|
||||
X042330Y-054270
|
||||
X042600Y-061280
|
||||
X042820Y-053040
|
||||
X044025Y-054405
|
||||
X050935Y-065394
|
||||
X050942Y-065738
|
||||
X053662Y-047208
|
||||
X054292Y-063508
|
||||
X054402Y-058688
|
||||
X054582Y-058408
|
||||
X054652Y-061393
|
||||
X054887Y-061668
|
||||
X055642Y-057088
|
||||
X055982Y-057118
|
||||
X056352Y-054078
|
||||
X056539Y-050409
|
||||
X056546Y-059976
|
||||
X056765Y-053336
|
||||
X057092Y-056008
|
||||
X057122Y-045578
|
||||
X057122Y-053708
|
||||
X057122Y-055608
|
||||
X057132Y-052638
|
||||
X057252Y-051918
|
||||
X057282Y-060598
|
||||
X057322Y-053118
|
||||
X057442Y-059168
|
||||
X057562Y-052178
|
||||
X057662Y-053078
|
||||
X057742Y-051228
|
||||
X058002Y-059768
|
||||
X058186Y-049143
|
||||
X058252Y-048428
|
||||
X058252Y-059998
|
||||
X058502Y-055668
|
||||
X058522Y-048108
|
||||
X058742Y-055958
|
||||
X059070Y-051484
|
||||
X059572Y-052538
|
||||
X059772Y-062808
|
||||
X060132Y-056858
|
||||
X060182Y-057578
|
||||
X060512Y-057228
|
||||
X060542Y-060438
|
||||
X060712Y-060728
|
||||
X060774Y-060132
|
||||
X060792Y-055738
|
||||
X060802Y-056108
|
||||
X060812Y-055038
|
||||
X060842Y-055408
|
||||
X060906Y-052322
|
||||
X061882Y-057258
|
||||
X062192Y-055788
|
||||
X062606Y-055557
|
||||
X063044Y-055288
|
||||
X063150Y-055635
|
||||
X064994Y-044325
|
||||
X065444Y-043625
|
||||
X066547Y-043780
|
||||
X066941Y-043780
|
||||
X066941Y-044371
|
||||
X068224Y-045075
|
||||
X068904Y-042575
|
||||
T3
|
||||
X036032Y-061679
|
||||
X036032Y-062112
|
||||
X036032Y-062545
|
||||
X036465Y-061679
|
||||
X036465Y-062112
|
||||
X036465Y-062545
|
||||
X036898Y-061679
|
||||
X036898Y-062112
|
||||
X036898Y-062545
|
||||
X049925Y-063884
|
||||
X049925Y-064404
|
||||
X050185Y-064144
|
||||
X050445Y-063884
|
||||
X050445Y-064404
|
||||
T4
|
||||
X024331Y-040945
|
||||
X024331Y-067323
|
||||
X024587Y-040335
|
||||
X024587Y-041555
|
||||
X024587Y-066713
|
||||
X024587Y-067933
|
||||
X024614Y-061614
|
||||
X024614Y-062008
|
||||
X024614Y-062402
|
||||
X024614Y-064370
|
||||
X024614Y-064764
|
||||
X024614Y-065157
|
||||
X025008Y-061614
|
||||
X025008Y-062008
|
||||
X025008Y-062402
|
||||
X025008Y-064370
|
||||
X025008Y-064764
|
||||
X025008Y-065157
|
||||
X025197Y-040079
|
||||
X025197Y-041811
|
||||
X025197Y-066457
|
||||
X025197Y-068189
|
||||
X025402Y-061614
|
||||
X025402Y-062008
|
||||
X025402Y-062402
|
||||
X025402Y-064370
|
||||
X025402Y-064764
|
||||
X025402Y-065157
|
||||
X025807Y-040335
|
||||
X025807Y-041555
|
||||
X025807Y-066713
|
||||
X025807Y-067933
|
||||
X026063Y-040945
|
||||
X026063Y-067323
|
||||
X039860Y-043627
|
||||
X039860Y-044276
|
||||
X039860Y-044926
|
||||
X040510Y-043627
|
||||
X040510Y-044276
|
||||
X040510Y-044926
|
||||
X041160Y-043627
|
||||
X041160Y-044276
|
||||
X041160Y-044926
|
||||
X042184Y-055274
|
||||
X042184Y-055865
|
||||
X042184Y-056456
|
||||
X042775Y-055274
|
||||
X042775Y-055865
|
||||
X042775Y-056456
|
||||
X043366Y-055274
|
||||
X043366Y-055865
|
||||
X043366Y-056456
|
||||
X048740Y-040945
|
||||
X048996Y-040335
|
||||
X048996Y-041555
|
||||
X049606Y-040079
|
||||
X049606Y-041811
|
||||
X050217Y-040335
|
||||
X050217Y-041555
|
||||
X050472Y-040945
|
||||
X050709Y-056693
|
||||
X050965Y-056083
|
||||
X050965Y-057303
|
||||
X051575Y-055827
|
||||
X051575Y-057559
|
||||
X052185Y-056083
|
||||
X052185Y-057303
|
||||
X052441Y-056693
|
||||
X068425Y-040945
|
||||
X068425Y-067323
|
||||
X068681Y-040335
|
||||
X068681Y-041555
|
||||
X068681Y-066713
|
||||
X068681Y-067933
|
||||
X069087Y-055315
|
||||
X069087Y-055709
|
||||
X069087Y-056102
|
||||
X069087Y-058071
|
||||
X069087Y-058465
|
||||
X069087Y-058858
|
||||
X069087Y-062402
|
||||
X069087Y-062795
|
||||
X069087Y-063189
|
||||
X069087Y-065157
|
||||
X069087Y-065551
|
||||
X069087Y-065945
|
||||
X069291Y-040079
|
||||
X069291Y-041811
|
||||
X069291Y-066457
|
||||
X069291Y-068189
|
||||
X069480Y-055315
|
||||
X069480Y-055709
|
||||
X069480Y-056102
|
||||
X069480Y-058071
|
||||
X069480Y-058465
|
||||
X069480Y-058858
|
||||
X069480Y-062402
|
||||
X069480Y-062795
|
||||
X069480Y-063189
|
||||
X069480Y-065157
|
||||
X069480Y-065551
|
||||
X069480Y-065945
|
||||
X069874Y-055315
|
||||
X069874Y-055709
|
||||
X069874Y-056102
|
||||
X069874Y-058071
|
||||
X069874Y-058465
|
||||
X069874Y-058858
|
||||
X069874Y-062402
|
||||
X069874Y-062795
|
||||
X069874Y-063189
|
||||
X069874Y-065157
|
||||
X069874Y-065551
|
||||
X069874Y-065945
|
||||
X069902Y-040335
|
||||
X069902Y-041555
|
||||
X069902Y-066713
|
||||
X069902Y-067933
|
||||
X070157Y-040945
|
||||
X070157Y-067323
|
||||
T5
|
||||
X025032Y-046368
|
||||
X036355Y-058922
|
||||
X036355Y-059452
|
||||
X036755Y-059452
|
||||
X037155Y-059452
|
||||
X037452Y-059098
|
||||
X037805Y-058812
|
||||
X037960Y-047176
|
||||
X038255Y-058962
|
||||
X038360Y-047176
|
||||
X038705Y-059262
|
||||
X038760Y-047176
|
||||
X039020Y-064630
|
||||
X039160Y-047176
|
||||
X039212Y-042148
|
||||
X039268Y-042578
|
||||
X039560Y-046076
|
||||
X039560Y-047176
|
||||
X039892Y-063158
|
||||
X040052Y-064648
|
||||
X040400Y-047176
|
||||
X040760Y-047136
|
||||
X040952Y-064558
|
||||
X041055Y-055195
|
||||
X041532Y-047228
|
||||
X041922Y-063588
|
||||
X041992Y-047288
|
||||
X042690Y-064830
|
||||
X044375Y-055305
|
||||
X044435Y-055845
|
||||
X044602Y-056588
|
||||
X044725Y-055475
|
||||
X045460Y-053640
|
||||
X046100Y-043930
|
||||
X046192Y-047448
|
||||
X046232Y-048048
|
||||
X047360Y-068120
|
||||
X047462Y-047868
|
||||
X048042Y-046878
|
||||
X048042Y-048028
|
||||
X048052Y-047648
|
||||
X048062Y-047268
|
||||
X048542Y-062188
|
||||
X048902Y-063418
|
||||
X049232Y-049848
|
||||
X049642Y-058258
|
||||
X049792Y-058908
|
||||
X049942Y-059438
|
||||
X050062Y-058648
|
||||
X050082Y-044088
|
||||
X050102Y-043698
|
||||
X050202Y-058998
|
||||
X050602Y-044328
|
||||
X050692Y-043748
|
||||
X050832Y-053108
|
||||
X050892Y-044068
|
||||
X050912Y-051178
|
||||
X050972Y-053458
|
||||
X051082Y-044398
|
||||
X051202Y-053988
|
||||
X051792Y-059088
|
||||
X052052Y-051268
|
||||
X052442Y-059538
|
||||
X052792Y-062628
|
||||
X053072Y-059548
|
||||
X053082Y-064048
|
||||
X053223Y-051069
|
||||
X053292Y-064428
|
||||
X053622Y-063928
|
||||
X053662Y-063488
|
||||
X054302Y-050778
|
||||
X054422Y-050198
|
||||
X054990Y-056410
|
||||
X055920Y-055320
|
||||
X056182Y-050338
|
||||
X056212Y-060358
|
||||
X056332Y-058068
|
||||
X056410Y-055370
|
||||
X056722Y-045148
|
||||
X056912Y-057288
|
||||
X057022Y-058718
|
||||
X057282Y-048168
|
||||
X057712Y-048158
|
||||
X058522Y-054918
|
||||
X059062Y-052108
|
||||
X059222Y-052468
|
||||
X059692Y-053098
|
||||
X060762Y-056748
|
||||
X060800Y-058460
|
||||
X061080Y-045976
|
||||
X061082Y-046388
|
||||
X061170Y-062700
|
||||
X061492Y-047878
|
||||
X061632Y-061358
|
||||
X061782Y-061008
|
||||
X061872Y-051258
|
||||
X062042Y-053228
|
||||
X062082Y-046858
|
||||
X062172Y-061048
|
||||
X062342Y-045988
|
||||
X062342Y-048668
|
||||
X062358Y-058647
|
||||
X062772Y-049368
|
||||
X062832Y-060688
|
||||
X063202Y-048768
|
||||
X063572Y-046988
|
||||
X063701Y-048583
|
||||
X063900Y-061910
|
||||
X064170Y-062210
|
||||
X064472Y-059808
|
||||
X064900Y-054850
|
||||
X065082Y-050818
|
||||
X065682Y-059148
|
||||
X065990Y-058910
|
||||
X066142Y-052108
|
||||
X066280Y-061980
|
||||
X066650Y-058060
|
||||
X067934Y-043505
|
||||
X068044Y-044675
|
||||
X068894Y-043075
|
||||
X068894Y-045575
|
||||
X069250Y-042336
|
||||
T6
|
||||
X028774Y-064385
|
||||
X029234Y-063705
|
||||
X035715Y-064792
|
||||
X036765Y-064792
|
||||
X037335Y-044801
|
||||
X040015Y-055375
|
||||
X040810Y-046076
|
||||
X042855Y-059445
|
||||
X042995Y-059885
|
||||
X043275Y-053055
|
||||
X043385Y-054105
|
||||
X045575Y-055065
|
||||
X045585Y-055845
|
||||
X050985Y-066144
|
||||
X051885Y-065594
|
||||
X062591Y-056646
|
||||
X063348Y-052495
|
||||
T7
|
||||
X024622Y-046738
|
||||
X024722Y-051898
|
||||
X024722Y-053698
|
||||
X024722Y-055488
|
||||
X024722Y-057288
|
||||
X024722Y-059088
|
||||
X025122Y-052898
|
||||
X025822Y-064098
|
||||
X026673Y-053937
|
||||
X026673Y-056299
|
||||
X026673Y-058661
|
||||
X026673Y-061024
|
||||
X026673Y-065748
|
||||
X026722Y-043088
|
||||
X026722Y-048188
|
||||
X027165Y-062598
|
||||
X027244Y-060205
|
||||
X027284Y-060995
|
||||
X027284Y-061825
|
||||
X027342Y-058268
|
||||
X027594Y-059405
|
||||
X027704Y-058805
|
||||
X027894Y-060875
|
||||
X027932Y-056721
|
||||
X028254Y-062705
|
||||
X028312Y-055851
|
||||
X028346Y-052362
|
||||
X028346Y-067323
|
||||
X028702Y-065008
|
||||
X028982Y-066198
|
||||
X029324Y-059245
|
||||
X029344Y-058605
|
||||
X029480Y-055000
|
||||
X029494Y-061135
|
||||
X029600Y-066064
|
||||
X029650Y-064200
|
||||
X029870Y-058620
|
||||
X030034Y-060675
|
||||
X030250Y-059450
|
||||
X030604Y-062075
|
||||
X030650Y-058230
|
||||
X030702Y-056641
|
||||
X030709Y-052362
|
||||
X030709Y-067323
|
||||
X031002Y-055281
|
||||
X031130Y-066420
|
||||
X031250Y-065514
|
||||
X031652Y-056781
|
||||
X031802Y-047498
|
||||
X032152Y-056781
|
||||
X032194Y-062335
|
||||
X032244Y-060405
|
||||
X032390Y-058220
|
||||
X032602Y-046718
|
||||
X032702Y-055281
|
||||
X032892Y-041898
|
||||
X032952Y-053931
|
||||
X032952Y-056691
|
||||
X033071Y-052362
|
||||
X033071Y-067323
|
||||
X033232Y-040778
|
||||
X033802Y-043278
|
||||
X033912Y-040428
|
||||
X034048Y-056489
|
||||
X034312Y-047898
|
||||
X034615Y-059812
|
||||
X034920Y-062020
|
||||
X034965Y-060812
|
||||
X035065Y-064192
|
||||
X035388Y-057589
|
||||
X035433Y-052362
|
||||
X035433Y-067323
|
||||
X035865Y-063692
|
||||
X036265Y-064792
|
||||
X036405Y-060462
|
||||
X036488Y-055899
|
||||
X036655Y-063712
|
||||
X037008Y-052854
|
||||
X037185Y-065412
|
||||
X037252Y-044233
|
||||
X037485Y-043451
|
||||
X037795Y-067323
|
||||
X037827Y-045788
|
||||
X038055Y-060962
|
||||
X038427Y-044258
|
||||
X038475Y-064062
|
||||
X038515Y-045171
|
||||
X038635Y-042401
|
||||
X038682Y-043368
|
||||
X038965Y-065962
|
||||
X038976Y-052953
|
||||
X039050Y-064200
|
||||
X039225Y-041661
|
||||
X039255Y-061412
|
||||
X039260Y-063210
|
||||
X039540Y-060960
|
||||
X039705Y-063712
|
||||
X039945Y-042451
|
||||
X040157Y-067323
|
||||
X040160Y-060900
|
||||
X040365Y-054765
|
||||
X040365Y-056915
|
||||
X040390Y-063240
|
||||
X040412Y-041668
|
||||
X041009Y-065769
|
||||
X041043Y-052854
|
||||
X041529Y-064429
|
||||
X041560Y-046086
|
||||
X041725Y-057475
|
||||
X041725Y-058665
|
||||
X041785Y-059665
|
||||
X041874Y-062269
|
||||
X042065Y-045711
|
||||
X042150Y-060370
|
||||
X042290Y-046886
|
||||
X042362Y-044458
|
||||
X042520Y-052362
|
||||
X042520Y-067323
|
||||
X042769Y-066369
|
||||
X042925Y-057485
|
||||
X042925Y-058665
|
||||
X043161Y-062076
|
||||
X043505Y-044071
|
||||
X043505Y-044551
|
||||
X043775Y-053055
|
||||
X044065Y-059665
|
||||
X044094Y-050984
|
||||
X044160Y-062230
|
||||
X044375Y-056965
|
||||
X044475Y-053455
|
||||
X044775Y-057765
|
||||
X044882Y-052362
|
||||
X044882Y-067323
|
||||
X044900Y-045670
|
||||
X045700Y-046070
|
||||
X045875Y-055465
|
||||
X046063Y-057087
|
||||
X046100Y-043450
|
||||
X046442Y-050278
|
||||
X046500Y-042470
|
||||
X046555Y-053937
|
||||
X046555Y-058661
|
||||
X046555Y-061024
|
||||
X046555Y-063386
|
||||
X046555Y-065748
|
||||
X047047Y-055512
|
||||
X047052Y-064338
|
||||
X047070Y-063510
|
||||
X047082Y-066108
|
||||
X047142Y-064828
|
||||
X047300Y-049870
|
||||
X047360Y-044850
|
||||
X047452Y-064058
|
||||
X047669Y-066094
|
||||
X047742Y-062598
|
||||
X048085Y-065354
|
||||
X048240Y-066890
|
||||
X048330Y-043560
|
||||
X048652Y-064148
|
||||
X048700Y-045410
|
||||
X048702Y-048588
|
||||
X048722Y-056898
|
||||
X048952Y-062328
|
||||
X048980Y-064850
|
||||
X049192Y-050778
|
||||
X049485Y-065444
|
||||
X049710Y-048580
|
||||
X049735Y-062744
|
||||
X050182Y-060698
|
||||
X050672Y-044898
|
||||
X050770Y-066890
|
||||
X050910Y-063000
|
||||
X050982Y-059438
|
||||
X051032Y-048608
|
||||
X051292Y-062178
|
||||
X051432Y-060738
|
||||
X051432Y-063468
|
||||
X051500Y-042170
|
||||
X051732Y-053938
|
||||
X051802Y-067238
|
||||
X051822Y-062628
|
||||
X051850Y-041360
|
||||
X052322Y-061878
|
||||
X052382Y-065608
|
||||
X052532Y-057788
|
||||
X052612Y-063108
|
||||
X052918Y-053945
|
||||
X052961Y-056731
|
||||
X053052Y-043363
|
||||
X053392Y-056968
|
||||
X053731Y-051434
|
||||
X053750Y-046270
|
||||
X053800Y-046770
|
||||
X053950Y-043970
|
||||
X054412Y-048698
|
||||
X054412Y-049208
|
||||
X054412Y-049708
|
||||
X054580Y-052283
|
||||
X054862Y-060058
|
||||
X054932Y-061098
|
||||
X055172Y-043868
|
||||
X055711Y-059212
|
||||
X056112Y-061568
|
||||
X056242Y-048924
|
||||
X056672Y-061318
|
||||
X057168Y-049737
|
||||
X057514Y-061016
|
||||
X058165Y-050550
|
||||
X058964Y-048677
|
||||
X059636Y-049136
|
||||
X059742Y-061207
|
||||
X059880Y-063220
|
||||
X060131Y-060874
|
||||
X060732Y-051929
|
||||
X060979Y-061723
|
||||
X061110Y-063210
|
||||
X061297Y-052495
|
||||
X061510Y-050656
|
||||
X062358Y-049808
|
||||
X062623Y-051846
|
||||
X062712Y-050162
|
||||
X062942Y-058108
|
||||
X063207Y-059495
|
||||
X063355Y-054496
|
||||
X063461Y-050968
|
||||
X063737Y-057268
|
||||
X063744Y-044075
|
||||
X063772Y-058930
|
||||
X064303Y-056702
|
||||
X064367Y-053588
|
||||
X064586Y-058116
|
||||
X064790Y-061240
|
||||
X065072Y-047368
|
||||
X065151Y-052955
|
||||
X065151Y-057551
|
||||
X065328Y-051222
|
||||
X065363Y-053591
|
||||
X065399Y-052071
|
||||
X065594Y-044075
|
||||
X066112Y-049163
|
||||
X066302Y-050318
|
||||
X066372Y-048048
|
||||
X067144Y-041425
|
||||
X067144Y-046725
|
||||
X067594Y-042575
|
||||
X067594Y-045575
|
||||
X067776Y-049163
|
||||
X068122Y-065718
|
||||
X068694Y-045075
|
||||
X068898Y-046969
|
||||
X069324Y-043749
|
||||
X069372Y-059848
|
||||
T8
|
||||
X069201Y-047839
|
||||
X069201Y-049799
|
||||
T9
|
||||
X059710Y-045066
|
||||
X059710Y-045566
|
||||
X059710Y-046066
|
||||
X059710Y-046566
|
||||
X059710Y-047066
|
||||
X060210Y-045066
|
||||
X060210Y-045566
|
||||
X060210Y-046066
|
||||
X060210Y-046566
|
||||
X060210Y-047066
|
||||
T10
|
||||
X070394Y-047195
|
||||
X070394Y-050443
|
||||
T11
|
||||
X024685Y-042972
|
||||
X024685Y-044744
|
||||
X024685Y-048091
|
||||
X024685Y-049862
|
||||
T12
|
||||
X033122Y-049398
|
||||
X033122Y-050398
|
||||
X034122Y-041398
|
||||
X034122Y-042398
|
||||
X035122Y-041398
|
||||
X035122Y-042398
|
||||
X035122Y-050398
|
||||
X035122Y-051398
|
||||
X036122Y-041398
|
||||
X036122Y-042398
|
||||
X036122Y-050398
|
||||
X036122Y-051398
|
||||
X037122Y-050398
|
||||
X037122Y-051398
|
||||
X038122Y-050398
|
||||
X038122Y-051398
|
||||
X039122Y-050398
|
||||
X039122Y-051398
|
||||
X040122Y-050398
|
||||
X040122Y-051398
|
||||
X041122Y-050398
|
||||
X041122Y-051398
|
||||
X042122Y-050398
|
||||
X042122Y-051398
|
||||
X048122Y-051398
|
||||
X048122Y-052398
|
||||
X048122Y-053398
|
||||
X048122Y-054398
|
||||
X048122Y-055398
|
||||
X048122Y-056398
|
||||
X048122Y-057398
|
||||
X048122Y-058398
|
||||
X048122Y-059398
|
||||
X048122Y-060398
|
||||
X048122Y-061398
|
||||
X049122Y-051398
|
||||
X049122Y-052398
|
||||
X049122Y-053398
|
||||
X049122Y-054398
|
||||
X049122Y-055398
|
||||
X049122Y-056398
|
||||
X049122Y-057398
|
||||
X049122Y-058398
|
||||
X049122Y-059398
|
||||
X049122Y-060398
|
||||
X049122Y-061398
|
||||
X051122Y-052398
|
||||
X052122Y-052398
|
||||
X054122Y-041398
|
||||
X054122Y-042398
|
||||
X054122Y-062398
|
||||
X054122Y-064398
|
||||
X054122Y-065398
|
||||
X055122Y-041398
|
||||
X055122Y-042398
|
||||
X055122Y-062398
|
||||
X055122Y-064398
|
||||
X055122Y-065398
|
||||
X056122Y-041398
|
||||
X056122Y-042398
|
||||
X056122Y-062398
|
||||
X056122Y-064398
|
||||
X056122Y-065398
|
||||
X057122Y-041398
|
||||
X057122Y-042398
|
||||
X057122Y-044398
|
||||
X057122Y-046398
|
||||
X057122Y-047398
|
||||
X057122Y-062398
|
||||
X057122Y-064398
|
||||
X057122Y-065398
|
||||
X058122Y-041398
|
||||
X058122Y-042398
|
||||
X058122Y-044398
|
||||
X058122Y-062398
|
||||
X058122Y-064398
|
||||
X058122Y-065398
|
||||
X059122Y-041398
|
||||
X059122Y-042398
|
||||
X059122Y-062398
|
||||
X059122Y-064398
|
||||
X059122Y-065398
|
||||
X060122Y-041398
|
||||
X060122Y-042398
|
||||
X060122Y-064398
|
||||
X060122Y-065398
|
||||
X061122Y-041398
|
||||
X061122Y-042398
|
||||
X061122Y-064398
|
||||
X061122Y-065398
|
||||
X062122Y-041398
|
||||
X062122Y-042398
|
||||
X062122Y-044398
|
||||
X062122Y-064398
|
||||
X062122Y-065398
|
||||
X063122Y-041398
|
||||
X063122Y-042398
|
||||
X063122Y-044398
|
||||
X063122Y-064398
|
||||
X063122Y-065398
|
||||
X064122Y-064398
|
||||
X064122Y-065398
|
||||
X065122Y-064398
|
||||
X065122Y-065398
|
||||
X066122Y-064398
|
||||
X066122Y-065398
|
||||
X067122Y-051398
|
||||
X067122Y-052398
|
||||
X067122Y-053398
|
||||
X067122Y-054398
|
||||
X067122Y-055398
|
||||
X067122Y-056398
|
||||
X067122Y-057398
|
||||
X067122Y-058398
|
||||
X067122Y-059398
|
||||
X067122Y-060398
|
||||
X067122Y-061398
|
||||
X068122Y-051398
|
||||
X068122Y-052398
|
||||
X068122Y-053398
|
||||
X068122Y-054398
|
||||
X068122Y-055398
|
||||
X068122Y-056398
|
||||
X068122Y-057398
|
||||
X068122Y-058398
|
||||
X068122Y-059398
|
||||
X068122Y-060398
|
||||
X068122Y-061398
|
||||
X070122Y-051398
|
||||
X070122Y-052398
|
||||
T13
|
||||
X025665Y-042478
|
||||
X025665Y-045238
|
||||
X025665Y-047596
|
||||
X025665Y-050356
|
||||
T14
|
||||
X025197Y-040945
|
||||
X025197Y-067323
|
||||
X049606Y-040945
|
||||
X051575Y-056693
|
||||
X069291Y-040945
|
||||
X069291Y-067323
|
||||
T0
|
||||
M30
|
||||
@ -0,0 +1,368 @@
|
||||
ref;value;Field1;Field2;Field3;Field4;Field5;Field6;Field7;Field8
|
||||
C1;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C2;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C3;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C4;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C5;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C6;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C7;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C8;47pF;Murata;GRM1555C1H470JZ01D;CAP CER 47PF 50V 5% NP0 0402
|
||||
C9;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C10;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C11;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C12;330pF;Murata;GRM155R71H331KA01D;CAP CER 330PF 50V 10% X7R 0402
|
||||
C13;330pF;Murata;GRM155R71H331KA01D;CAP CER 330PF 50V 10% X7R 0402
|
||||
C14;8p2;Taiyo Yuden;UMK105CG8R2DV-F;CAP CER 8.2PF 50V NP0 0402
|
||||
C15;180pF;Murata;GRM1555C1H181JA01D;CAP CER 180PF 50V 5% NP0 0402
|
||||
C16;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C17;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C18;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C19;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C20;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C21;47pF;Murata;GRM1555C1H470JZ01D;CAP CER 47PF 50V 5% NP0 0402
|
||||
C22;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C23;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C24;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C25;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C26;47pF;Murata;GRM1555C1H470JZ01D;CAP CER 47PF 50V 5% NP0 0402
|
||||
C27;47pF;Murata;GRM1555C1H470JZ01D;CAP CER 47PF 50V 5% NP0 0402
|
||||
C28;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C29;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C30;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C31;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C32;47pF;Murata;GRM1555C1H470JZ01D;CAP CER 47PF 50V 5% NP0 0402
|
||||
C33;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C34;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C35;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C36;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C37;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C38;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C39;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C40;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C41;100pF;Murata;GRM1555C1H101JZ01D;CAP CER 100PF 50V 5% NP0 0402
|
||||
C42;100pF;Murata;GRM1555C1H101JZ01D;CAP CER 100PF 50V 5% NP0 0402
|
||||
C43;47pF;Murata;GRM1555C1H470JZ01D;CAP CER 47PF 50V 5% NP0 0402
|
||||
C44;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C45;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C46;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C47;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C48;47pF;Murata;GRM1555C1H470JZ01D;CAP CER 47PF 50V 5% NP0 0402
|
||||
C49;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C50;100pF;Murata;GRM1555C1H101JZ01D;CAP CER 100PF 50V 5% NP0 0402
|
||||
C51;47pF;Murata;GRM1555C1H470JZ01D;CAP CER 47PF 50V 5% NP0 0402
|
||||
C52;100pF;Murata;GRM1555C1H101JZ01D;CAP CER 100PF 50V 5% NP0 0402
|
||||
C53;1uF;Taiyo Yuden;LMK105BJ105KV-F;CAP CER 1UF 10V 10% X5R 0402
|
||||
C54;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C55;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C56;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C57;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C58;100pF;Murata;GRM1555C1H101JZ01D;CAP CER 100PF 50V 5% NP0 0402
|
||||
C59;100pF;Murata;GRM1555C1H101JZ01D;CAP CER 100PF 50V 5% NP0 0402
|
||||
C60;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C61;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C62;100pF;Murata;GRM1555C1H101JZ01D;CAP CER 100PF 50V 5% NP0 0402
|
||||
C63;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C64;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C65;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C66;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C67;47pF;Murata;GRM1555C1H470JZ01D;CAP CER 47PF 50V 5% NP0 0402
|
||||
C68;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C69;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C70;47pF;Murata;GRM1555C1H470JZ01D;CAP CER 47PF 50V 5% NP0 0402
|
||||
C71;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C72;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402
|
||||
C73;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C74;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402
|
||||
C75;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C76;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402
|
||||
C77;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C78;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402
|
||||
C79;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C80;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402
|
||||
C81;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C82;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402
|
||||
C83;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C84;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402
|
||||
C85;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402
|
||||
C86;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402
|
||||
C87;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C88;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C89;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C90;100pF;Murata;GRM1555C1H101JZ01D;CAP CER 100PF 50V 5% NP0 0402
|
||||
C91;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C92;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C93;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C94;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402
|
||||
C95;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP
|
||||
C96;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP
|
||||
C97;330nF;Murata;GRM155R61A334KE15D;CAP CER 0.33UF 10V 10% X5R 0402
|
||||
C98;330nF;Murata;GRM155R61A334KE15D;CAP CER 0.33UF 10V 10% X5R 0402
|
||||
C99;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402
|
||||
C100;330nF;Murata;GRM155R61A334KE15D;CAP CER 0.33UF 10V 10% X5R 0402
|
||||
C101;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP
|
||||
C102;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402
|
||||
C103;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP
|
||||
C104;3pF;Murata;GRM1555C1H3R0CA01D;CAP CER 3PF 50V NP0 0402
|
||||
C105;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805
|
||||
C106;1uF;Taiyo Yuden;LMK105BJ105KV-F;CAP CER 1UF 10V 10% X5R 0402
|
||||
C107;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP
|
||||
C108;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP
|
||||
C109;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP
|
||||
C110;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP
|
||||
C111;3pF;Murata;GRM1555C1H3R0CA01D;CAP CER 3PF 50V NP0 0402
|
||||
C112;180pF;Murata;GRM1555C1H181JA01D;CAP CER 180PF 50V 5% NP0 0402
|
||||
C113;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C114;3.3nF;Murata;GRM155R71H332KA01D;CAP CER 3300PF 50V 10% X7R 0402
|
||||
C115;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C116;100pF;Murata;GRM1555C1H101JZ01D;CAP CER 100PF 50V 5% NP0 0402
|
||||
C117;DNP;DNP
|
||||
C118;DNP;DNP
|
||||
C119;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C120;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C121;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C122;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C123;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C124;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402
|
||||
C125;33pF;Murata;GRM1555C1H330JZ01D;CAP CER 33PF 50V 5% NP0 0402
|
||||
C126;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805
|
||||
C127;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805
|
||||
C128;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C129;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C130;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C131;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C132;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C133;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C134;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C135;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C136;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C137;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C138;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C139;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C140;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C141;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C142;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C143;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805
|
||||
C144;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C145;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805
|
||||
C146;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805
|
||||
C147;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C148;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C149;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C150;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C151;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C152;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C153;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C154;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402
|
||||
C155;100pF;Murata;GRM1555C1H101JZ01D;CAP CER 100PF 50V 5% NP0 0402
|
||||
C156;47pF;Murata;GRM1555C1H470JZ01D;CAP CER 47PF 50V 5% NP0 0402
|
||||
C157;18pF;Murata;GRM1555C1H180JZ01D;CAP CER 18PF 50V 5% NP0 0402
|
||||
C158;18pF;Murata;GRM1555C1H180JZ01D;CAP CER 18PF 50V 5% NP0 0402
|
||||
C159;1uF;Murata;GRM155R61A105ME15D;CAP CER 1UF 10V 20% X5R 0402;DNP
|
||||
C160;100pF;Murata;GRM1555C1H101JZ01D;CAP CER 100PF 50V 5% NP0 0402
|
||||
C161;1uF;Taiyo Yuden;LMK105BJ105KV-F;CAP CER 1UF 10V 10% X5R 0402
|
||||
C162;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C163;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402
|
||||
C164;DNP;DNP
|
||||
C165;DNP;DNP
|
||||
D1;GSG-DIODE-TVS-BI;Murata;LXES15AAA1-100;TVS DIODE ESD .05PF 15KV 0402
|
||||
D2;USBLED1;Everlight;QTLP601C4TR;LED GREEN STD BRIGHT 0603 SMD
|
||||
D3;USBLED0;Everlight;QTLP600CYTR;LED YLW SUPER BRIGHT 0606 SMD
|
||||
D4;LED1;Everlight;QTLP601C4TR;LED GREEN STD BRIGHT 0603 SMD
|
||||
D5;LED2;Everlight;QTLP600CYTR;LED YLW SUPER BRIGHT 0606 SMD
|
||||
D6;LED3;Everlight;QTLP601CRTR;LED RED STD BRIGHT 0603 SMD
|
||||
D7;VCCLED;Everlight;QTLP601C4TR;LED GREEN STD BRIGHT 0603 SMD
|
||||
D8;1V8LED;Everlight;QTLP600CYTR;LED YLW SUPER BRIGHT 0606 SMD
|
||||
FB1;FILTER;Murata;BLM21PG221SN1D;FERRITE CHIP 220 OHM 2000MA 0805
|
||||
FB2;FILTER;Murata;BLM21PG221SN1D;FERRITE CHIP 220 OHM 2000MA 0805
|
||||
J1;GSG-USB-MICRO-B;FCI;10103594-0001LF;CONN RCPT STD MICRO USB TYPE B
|
||||
J2;900MHZ-F-ANTENNA;DNP
|
||||
L1;DNP;DNP
|
||||
L2;1uH;Taiyo Yuden;BRL1608T1R0M;INDUCTR 1.0UH 650MA 20% 0603 SMD
|
||||
L3;1uH;Taiyo Yuden;BRL1608T1R0M;INDUCTR 1.0UH 650MA 20% 0603 SMD
|
||||
L4;DNP;DNP
|
||||
L5;1uH;Taiyo Yuden;BRL1608T1R0M;INDUCTR 1.0UH 650MA 20% 0603 SMD
|
||||
L6;DNP;DNP
|
||||
L7;6.2nH;Taiyo Yuden;HK10056N2S-T;INDUCTOR HIFREQ 6.2+/-0.3NH 0402
|
||||
L8;DNP;DNP
|
||||
L9;DNP;DNP
|
||||
L10;4u7;Taiyo Yuden;NRG4026T4R7M;INDUCTOR 4.7UH 1.6A 20% SMD
|
||||
L11;4u7;Taiyo Yuden;NRG4026T4R7M;INDUCTOR 4.7UH 1.6A 20% SMD
|
||||
L12;1uH;Taiyo Yuden;BRL1608T1R0M;INDUCTR 1.0UH 650MA 20% 0603 SMD
|
||||
L13;INDUCTOR;DNP
|
||||
L14;INDUCTOR;DNP
|
||||
P1;1V8;DNP
|
||||
P2;CLKOUT;TE Connectivity;2081233-1;CONN JACK SMA PCB VERT;DNP
|
||||
P3;GND;DNP
|
||||
P4;ANTENNA;TE Connectivity;2081233-1;CONN JACK SMA PCB VERT
|
||||
P5;WAKEUP;DNP
|
||||
P6;TRACECLK;DNP
|
||||
P7;CTIN_4;DNP
|
||||
P8;VCC;DNP
|
||||
P9;CTOUT_4;DNP
|
||||
P10;CTOUT_2;DNP
|
||||
P11;CTIN_2;DNP
|
||||
P12;U3_RXD;DNP
|
||||
P13;U3_TXD;DNP
|
||||
P14;XCVR_CLKOUT;DNP
|
||||
P15;INTR;DNP
|
||||
P16;CLKIN;TE Connectivity;2081233-1;CONN JACK SMA PCB VERT;DNP
|
||||
P17;CLKIN_JMP;DNP
|
||||
P18;OEB;DNP
|
||||
P19;SPIFI;DNP
|
||||
P20;GPIO;DNP
|
||||
P21;ANALOG;DNP
|
||||
P22;I2S;DNP
|
||||
P23;DBGEN;DNP
|
||||
P24;TRST;DNP
|
||||
P25;LPC_ISP;DNP
|
||||
P26;LPC_JTAG;DNP
|
||||
P27;CONN_3;DNP
|
||||
P28;SD;DNP
|
||||
P29;CPLD_JTAG;DNP
|
||||
P30;BANK2_AUX;DNP
|
||||
P31;BANK1_AUX;DNP
|
||||
P32;CONN_3;DNP
|
||||
P33;CONN_3;DNP
|
||||
P34;CONN_3;DNP
|
||||
P35;GCK0;DNP
|
||||
P36;VAA;DNP
|
||||
P37;SCL;DNP
|
||||
P38;SDA;DNP
|
||||
P39;SSP1_SCK;DNP
|
||||
P40;SSP1_MOSI;DNP
|
||||
P41;SSP1_MISO;DNP
|
||||
Q1;MOSFET_P;Fairchild;BSS84;MOSFET P-CH 50V 130MA SOT-23
|
||||
Q2;MOSFET_P;Fairchild;BSS84;MOSFET P-CH 50V 130MA SOT-23
|
||||
R1;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402
|
||||
R2;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402
|
||||
R3;22k;Panasonic;ERJ-2GEJ223X;RES 22K OHM 1/10W 5% 0402 SMD
|
||||
R4;51k;Stackpole;RMCF0402FT51K0;RES TF 51K OHM 1% 0.0625W 0402
|
||||
R5;4k7;Stackpole;RMCF0402JT4K70;RES 4.7K OHM 1/16W 5% 0402 SMD
|
||||
R6;4k7;Stackpole;RMCF0402JT4K70;RES 4.7K OHM 1/16W 5% 0402 SMD
|
||||
R7;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R8;1k;Stackpole;RMCF0402JT1K00;RES 1K OHM 1/16W 5% 0402 SMD
|
||||
R9;1k;Stackpole;RMCF0402JT1K00;RES 1K OHM 1/16W 5% 0402 SMD
|
||||
R10;1k;Stackpole;RMCF0402JT1K00;RES 1K OHM 1/16W 5% 0402 SMD
|
||||
R11;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R12;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R13;1k;Stackpole;RMCF0402JT1K00;RES 1K OHM 1/16W 5% 0402 SMD
|
||||
R14;4k7;Stackpole;RMCF0402JT4K70;RES 4.7K OHM 1/16W 5% 0402 SMD
|
||||
R15;4k7;Stackpole;RMCF0402JT4K70;RES 4.7K OHM 1/16W 5% 0402 SMD
|
||||
R16;4k7;Stackpole;RMCF0402JT4K70;RES 4.7K OHM 1/16W 5% 0402 SMD
|
||||
R17;4k7;Stackpole;RMCF0402JT4K70;RES 4.7K OHM 1/16W 5% 0402 SMD
|
||||
R18;47;DNP
|
||||
R19;47;DNP
|
||||
R20;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD
|
||||
R21;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD
|
||||
R22;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD
|
||||
R23;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD
|
||||
R24;4k7;Stackpole;RMCF0402JT4K70;RES 4.7K OHM 1/16W 5% 0402 SMD
|
||||
R25;475;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402
|
||||
R26;475;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402
|
||||
R27;1k8;Stackpole;RMCF0402JT1K80;RES TF 1.8K OHM 5% 1/16W 0402
|
||||
R28;1k8;Stackpole;RMCF0402JT1K80;RES TF 1.8K OHM 5% 1/16W 0402
|
||||
R29;4k7;Stackpole;RMCF0402JT4K70;RES 4.7K OHM 1/16W 5% 0402 SMD
|
||||
R30;0;DNP
|
||||
R31;0;DNP
|
||||
R32;0;DNP
|
||||
R33;0;DNP
|
||||
R34;0;DNP
|
||||
R35;0;DNP
|
||||
R36;0;DNP
|
||||
R37;0;DNP
|
||||
R38;0;DNP
|
||||
R39;0;DNP
|
||||
R40;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;DNP
|
||||
R41;4k7;Stackpole;RMCF0402JT4K70;RES 4.7K OHM 1/16W 5% 0402 SMD
|
||||
R42;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;DNP
|
||||
R43;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;DNP
|
||||
R44;0;DNP
|
||||
R45;DNP;DNP
|
||||
R46;162k;Stackpole;RMCF0402FT162K;RES TF 1/16W 162K OHM 1% 0402
|
||||
R47;330k;Stackpole;RMCF0402FT330K;RES TF 1/16W 330K OHM 1% 0402
|
||||
R48;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R49;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R50;DNP;DNP
|
||||
R51;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R52;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R53;DNP;DNP
|
||||
R54;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R55;162k;Stackpole;RMCF0402FT162K;RES TF 1/16W 162K OHM 1% 0402
|
||||
R56;715k;Stackpole;RMCF0402FT715K;RES TF 1/16W 715K OHM 1% 0402
|
||||
R57;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD
|
||||
R58;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD
|
||||
R59;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R60;0;DNP
|
||||
R61;0;DNP
|
||||
R62;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD
|
||||
R63;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R64;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R65;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;DNP
|
||||
R66;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R67;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R68;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R69;12k;Rohm;MCR01MRTF1202;RES 12.0K OHM 1/16W 1% 0402 SMD
|
||||
R70;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402
|
||||
R71;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402
|
||||
R72;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402
|
||||
R73;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402
|
||||
R74;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402
|
||||
R75;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402
|
||||
R76;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402
|
||||
R77;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R78;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R79;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R80;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R81;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R82;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;DNP
|
||||
R83;0;DNP
|
||||
R84;50;DNP
|
||||
R85;DNP;DNP
|
||||
R86;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R87;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R88;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R89;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R90;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R91;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R92;50;DNP
|
||||
R93;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD
|
||||
R94;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R96;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R97;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;DNP
|
||||
R98;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R99;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R100;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD
|
||||
R104;4k7;Stackpole;RMCF0402JT4K70;RES 4.7K OHM 1/16W 5% 0402 SMD
|
||||
R105;4k7;Stackpole;RMCF0402JT4K70;RES 4.7K OHM 1/16W 5% 0402 SMD
|
||||
T1;MIX_IN_BALUN;Anaren;B0310J50100AHF;Ultra Low Profile 0805 Balun 50 to 100 ohm Balanced
|
||||
T2;MIX_OUT_BALUN;Anaren;B0310J50100AHF;Ultra Low Profile 0805 Balun 50 to 100 ohm Balanced
|
||||
T3;RX_BALUN;Johanson Technology;2500BL14M100T;BALUN CERAMIC CHIP WIMAX 2.5GHZ
|
||||
T4;TX_BALUN;Johanson Technology;2500BL14M100T;BALUN CERAMIC CHIP WIMAX 2.5GHZ
|
||||
U1;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch
|
||||
U2;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch
|
||||
U3;RX_LOWPASS_FILTER;AVX;LP0603A1880ANTR;FILTER LOW PASS 1880MHZ 0603 SMD
|
||||
U4;RFFC5072;RFMD;RFFC5072TR7;WIDEBAND SYNTHESIZER/VCO WITH INTEGRATED 6GHz MIXER
|
||||
U5;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch
|
||||
U6;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch
|
||||
U7;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch
|
||||
U8;RX_HIGHPASS_FILTER;TDK;DEA162400HT-8004B1;FILTER HIGHPASS WLAN&BLUETOOTH
|
||||
U9;SKY13317;Skyworks;SKY13317-373LF;20 MHz-6.0 GHz pHEMT GaAs SP3T Switch
|
||||
U10;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch
|
||||
U11;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch
|
||||
U12;SKY13317;Skyworks;SKY13317-373LF;20 MHz-6.0 GHz pHEMT GaAs SP3T Switch
|
||||
U13;MGA-81563;Avago;MGA-81563-TR1G;0.1-6 GHz 3 V, 14 dBm Amplifier
|
||||
U14;SKY13317;Skyworks;SKY13317-373LF;20 MHz-6.0 GHz pHEMT GaAs SP3T Switch
|
||||
U15;GSG-74HC04;Texas Instruments;SN74AHC04RGYR;IC HEX INVERTERS 14-QFN
|
||||
U16;GSG-74HC08;Texas Instruments;SN74AHC08RGYR;IC QUAD 2IN POS-AND GATE 14-QFN
|
||||
U17;MAX2837;Maxim;MAX2837ETM+;IC TXRX 2.3GHZ-2.7GHZ 48TQFN
|
||||
U18;MAX5864;Maxim;MAX5864ETM+;IC ANLG FRONT END 22MSPS 48-TQFN
|
||||
U19;SI5351C;Silicon Laboratories Inc;SI5351C-B-GM;IC CLK GENERATOR 160MHZ 20QFN
|
||||
U20;W25Q80BV;Winbond;W25Q80BVSSIG;IC FLASH 8MBIT 8SOIC
|
||||
U21;TPS62410;Texas Instruments;TPS62410DRCR;IC BUCK SYNC DUAL ADJ 0.8A 10SON
|
||||
U22;GSG-IP4220CZ6;NXP;IP4220CZ6,125;IC USB DUAL ESD PROTECT 6TSOP
|
||||
U23;LPC43XXFBD144;NXP;LPC4330FBD144,551;IC MCU 32BIT 144LQFP
|
||||
U24;GSG-XC2C64A-7VQG100C;Xilinx;XC2C64A-7VQG100C;IC CR-II CPLD 64MCELL 100-VQFP
|
||||
U25;MGA-81563;Avago;MGA-81563-TR1G;0.1-6 GHz 3 V, 14 dBm Amplifier
|
||||
U26;RF LDO;DNP
|
||||
X1;GSG-XTAL4PIN;AVX;CX3225GB25000D0HEQZ1;CRYSTAL 25.000MHZ 8PF SMD
|
||||
X2;MCU_XTAL;TXC;7V-12.000MAAE-T;CRYSTAL 12.000 MHZ 12PF SMD
|
||||
|
Can't render this file because it has a wrong number of fields in line 353.
|
@ -0,0 +1,19 @@
|
||||
order of copper layers:
|
||||
Copper 1: Front
|
||||
Copper 2: Inner3
|
||||
Copper 3: Inner2
|
||||
Copper 4: Back
|
||||
|
||||
PCB description: 4 layer PCB 0.062 in
|
||||
Copper 1 0.5 oz foil plated to approximately 0.0017 in
|
||||
Dielectric 1-2 0.0119 in
|
||||
Copper 2 1 oz foil (0.0014 in)
|
||||
Dielectric 2-3 0.0280 in
|
||||
Copper 3 1 oz foil (0.0014 in)
|
||||
Dielectric 3-4 0.0119 in
|
||||
Copper 4 0.5 oz foil plated to approximately 0.0017 in
|
||||
FR4 or similar substrate with Er=4.5 (+/- 0.1)
|
||||
double side solder mask black
|
||||
single side silkscreen white
|
||||
6 mil min trace width and
|
||||
6 mil min isolation
|
||||
@ -0,0 +1,257 @@
|
||||
G04 (created by PCBNEW (2013-01-23 BZR 3920)-stable) date Mon Jun 10 00:49:26 2013*
|
||||
%MOIN*%
|
||||
G04 Gerber Fmt 3.4, Leading zero omitted, Abs format*
|
||||
%FSLAX34Y34*%
|
||||
G01*
|
||||
G70*
|
||||
G90*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,2.3622e-06*%
|
||||
%ADD11C,0.075*%
|
||||
%ADD12C,0.0691*%
|
||||
%ADD13C,0.0292*%
|
||||
%ADD14C,0.029*%
|
||||
%ADD15R,0.072X0.072*%
|
||||
%ADD16C,0.072*%
|
||||
%ADD17C,0.112*%
|
||||
%ADD18C,0.138*%
|
||||
%ADD19C,0.0306*%
|
||||
%ADD20R,0.054X0.054*%
|
||||
%ADD21C,0.054*%
|
||||
%ADD22C,0.035*%
|
||||
G04 APERTURE END LIST*
|
||||
G54D10*
|
||||
G54D11*
|
||||
X70583Y-22169D03*
|
||||
X68417Y-22169D03*
|
||||
G54D12*
|
||||
X70479Y-23339D03*
|
||||
X68521Y-23339D03*
|
||||
G54D13*
|
||||
X44202Y-47702D03*
|
||||
X43798Y-47702D03*
|
||||
X43798Y-47298D03*
|
||||
X44202Y-47298D03*
|
||||
X40202Y-47702D03*
|
||||
X39798Y-47702D03*
|
||||
X39798Y-47298D03*
|
||||
X40202Y-47298D03*
|
||||
G54D14*
|
||||
X51225Y-27025D03*
|
||||
X51225Y-26431D03*
|
||||
X51819Y-26431D03*
|
||||
X51819Y-27025D03*
|
||||
X51819Y-27619D03*
|
||||
X51225Y-27619D03*
|
||||
X50631Y-27619D03*
|
||||
X50631Y-27025D03*
|
||||
X50631Y-26431D03*
|
||||
G54D13*
|
||||
X38150Y-27200D03*
|
||||
X37717Y-27200D03*
|
||||
X37717Y-26767D03*
|
||||
X38150Y-26767D03*
|
||||
X38583Y-26767D03*
|
||||
X38583Y-27200D03*
|
||||
X38583Y-27633D03*
|
||||
X38150Y-27633D03*
|
||||
X37717Y-27633D03*
|
||||
X46300Y-31600D03*
|
||||
X46039Y-31339D03*
|
||||
X46561Y-31339D03*
|
||||
X46561Y-31861D03*
|
||||
X46039Y-31861D03*
|
||||
G54D15*
|
||||
X59500Y-29000D03*
|
||||
G54D16*
|
||||
X60500Y-29000D03*
|
||||
X59500Y-30000D03*
|
||||
X60500Y-30000D03*
|
||||
X59500Y-31000D03*
|
||||
X60500Y-31000D03*
|
||||
X59500Y-32000D03*
|
||||
X60500Y-32000D03*
|
||||
X59500Y-33000D03*
|
||||
X60500Y-33000D03*
|
||||
X59500Y-34000D03*
|
||||
X60500Y-34000D03*
|
||||
X59500Y-35000D03*
|
||||
X60500Y-35000D03*
|
||||
X59500Y-36000D03*
|
||||
X60500Y-36000D03*
|
||||
G54D15*
|
||||
X66500Y-48500D03*
|
||||
G54D16*
|
||||
X66500Y-49500D03*
|
||||
X65500Y-48500D03*
|
||||
X65500Y-49500D03*
|
||||
X64500Y-48500D03*
|
||||
X64500Y-49500D03*
|
||||
X63500Y-48500D03*
|
||||
X63500Y-49500D03*
|
||||
X62500Y-48500D03*
|
||||
X62500Y-49500D03*
|
||||
X61500Y-48500D03*
|
||||
X61500Y-49500D03*
|
||||
G54D15*
|
||||
X78500Y-43500D03*
|
||||
G54D16*
|
||||
X77500Y-43500D03*
|
||||
X78500Y-42500D03*
|
||||
X77500Y-42500D03*
|
||||
X78500Y-41500D03*
|
||||
X77500Y-41500D03*
|
||||
X78500Y-40500D03*
|
||||
X77500Y-40500D03*
|
||||
X78500Y-39500D03*
|
||||
X77500Y-39500D03*
|
||||
X78500Y-38500D03*
|
||||
X77500Y-38500D03*
|
||||
G54D15*
|
||||
X78500Y-35500D03*
|
||||
G54D16*
|
||||
X77500Y-35500D03*
|
||||
X78500Y-34500D03*
|
||||
X77500Y-34500D03*
|
||||
X78500Y-33500D03*
|
||||
X77500Y-33500D03*
|
||||
X78500Y-32500D03*
|
||||
X77500Y-32500D03*
|
||||
X78500Y-31500D03*
|
||||
X77500Y-31500D03*
|
||||
G54D15*
|
||||
X50500Y-49500D03*
|
||||
G54D16*
|
||||
X50500Y-48500D03*
|
||||
X51500Y-49500D03*
|
||||
X51500Y-48500D03*
|
||||
X52500Y-49500D03*
|
||||
X52500Y-48500D03*
|
||||
X53500Y-49500D03*
|
||||
X53500Y-48500D03*
|
||||
X54500Y-49500D03*
|
||||
X54500Y-48500D03*
|
||||
G54D15*
|
||||
X76500Y-29000D03*
|
||||
G54D16*
|
||||
X76500Y-30000D03*
|
||||
X75500Y-29000D03*
|
||||
X75500Y-30000D03*
|
||||
X74500Y-29000D03*
|
||||
X74500Y-30000D03*
|
||||
X73500Y-29000D03*
|
||||
X73500Y-30000D03*
|
||||
G54D15*
|
||||
X78510Y-46500D03*
|
||||
G54D16*
|
||||
X78510Y-47500D03*
|
||||
X77510Y-46500D03*
|
||||
X77510Y-47500D03*
|
||||
X76510Y-46500D03*
|
||||
X76510Y-47500D03*
|
||||
G54D15*
|
||||
X69500Y-49500D03*
|
||||
G54D16*
|
||||
X70500Y-49500D03*
|
||||
X71500Y-49500D03*
|
||||
X72500Y-49500D03*
|
||||
X73500Y-49500D03*
|
||||
X74500Y-49500D03*
|
||||
G54D15*
|
||||
X47500Y-44500D03*
|
||||
G54D16*
|
||||
X47500Y-45500D03*
|
||||
X47500Y-46500D03*
|
||||
X47500Y-47500D03*
|
||||
X47500Y-48500D03*
|
||||
X47500Y-49500D03*
|
||||
G54D15*
|
||||
X63500Y-24000D03*
|
||||
G54D16*
|
||||
X64500Y-24000D03*
|
||||
X65500Y-24000D03*
|
||||
G54D15*
|
||||
X63500Y-23000D03*
|
||||
G54D16*
|
||||
X64500Y-23000D03*
|
||||
X65500Y-23000D03*
|
||||
G54D15*
|
||||
X63500Y-25000D03*
|
||||
G54D16*
|
||||
X64500Y-25000D03*
|
||||
X65500Y-25000D03*
|
||||
G54D15*
|
||||
X63500Y-26000D03*
|
||||
G54D16*
|
||||
X64500Y-26000D03*
|
||||
X65500Y-26000D03*
|
||||
G54D15*
|
||||
X67500Y-26000D03*
|
||||
G54D16*
|
||||
X67500Y-25000D03*
|
||||
G54D17*
|
||||
X43500Y-36500D03*
|
||||
X42500Y-37500D03*
|
||||
X44500Y-37500D03*
|
||||
X44500Y-35500D03*
|
||||
X42500Y-35500D03*
|
||||
X35000Y-44500D03*
|
||||
X36000Y-43500D03*
|
||||
X34000Y-43500D03*
|
||||
X34000Y-45500D03*
|
||||
X36000Y-45500D03*
|
||||
X43500Y-42500D03*
|
||||
X42500Y-43500D03*
|
||||
X44500Y-43500D03*
|
||||
X44500Y-41500D03*
|
||||
X42500Y-41500D03*
|
||||
G54D15*
|
||||
X54500Y-24000D03*
|
||||
G54D16*
|
||||
X54500Y-23000D03*
|
||||
G54D15*
|
||||
X77500Y-24000D03*
|
||||
G54D16*
|
||||
X77500Y-23000D03*
|
||||
G54D15*
|
||||
X77500Y-27000D03*
|
||||
G54D16*
|
||||
X77500Y-26000D03*
|
||||
G54D15*
|
||||
X42500Y-33500D03*
|
||||
G54D16*
|
||||
X43500Y-33500D03*
|
||||
G54D18*
|
||||
X26075Y-23075D03*
|
||||
X80925Y-23075D03*
|
||||
X80925Y-48925D03*
|
||||
X26075Y-48925D03*
|
||||
G54D19*
|
||||
X52575Y-34275D03*
|
||||
X52575Y-33625D03*
|
||||
X53225Y-33625D03*
|
||||
X53225Y-34275D03*
|
||||
X53225Y-34925D03*
|
||||
X52575Y-34925D03*
|
||||
X51925Y-34925D03*
|
||||
X51925Y-34275D03*
|
||||
X51925Y-33625D03*
|
||||
G54D20*
|
||||
X63000Y-29900D03*
|
||||
G54D21*
|
||||
X63000Y-29400D03*
|
||||
X63500Y-29900D03*
|
||||
X63500Y-29400D03*
|
||||
X64000Y-29900D03*
|
||||
X64000Y-29400D03*
|
||||
X64500Y-29900D03*
|
||||
X64500Y-29400D03*
|
||||
X65000Y-29900D03*
|
||||
X65000Y-29400D03*
|
||||
G54D22*
|
||||
X73750Y-25000D03*
|
||||
X73947Y-24705D03*
|
||||
X73553Y-24705D03*
|
||||
X73553Y-25295D03*
|
||||
X73947Y-25295D03*
|
||||
M02*
|
||||
@ -0,0 +1,42 @@
|
||||
G04 (created by PCBNEW (2013-01-23 BZR 3920)-stable) date Mon Jun 10 00:49:26 2013*
|
||||
%MOIN*%
|
||||
G04 Gerber Fmt 3.4, Leading zero omitted, Abs format*
|
||||
%FSLAX34Y34*%
|
||||
G01*
|
||||
G70*
|
||||
G90*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,2.3622e-06*%
|
||||
%ADD11C,0.015*%
|
||||
G04 APERTURE END LIST*
|
||||
G54D10*
|
||||
G54D11*
|
||||
X26075Y-21500D02*
|
||||
X80975Y-21500D01*
|
||||
X26075Y-50500D02*
|
||||
X80925Y-50500D01*
|
||||
X24500Y-23075D02*
|
||||
X24500Y-48925D01*
|
||||
X82500Y-23075D02*
|
||||
X82500Y-48925D01*
|
||||
X82500Y-23075D02*
|
||||
G75*
|
||||
G03X80925Y-21500I-1575J0D01*
|
||||
G74*
|
||||
G01*
|
||||
X80925Y-50500D02*
|
||||
G75*
|
||||
G03X82500Y-48925I0J1575D01*
|
||||
G74*
|
||||
G01*
|
||||
X24500Y-48925D02*
|
||||
G75*
|
||||
G03X26075Y-50500I1575J0D01*
|
||||
G74*
|
||||
G01*
|
||||
X26075Y-21500D02*
|
||||
G75*
|
||||
G03X24500Y-23075I0J-1575D01*
|
||||
G74*
|
||||
G01*
|
||||
M02*
|
||||
@ -0,0 +1,715 @@
|
||||
M48
|
||||
INCH,TZ
|
||||
T1C0.013
|
||||
T2C0.014
|
||||
T3C0.015
|
||||
T4C0.016
|
||||
T5C0.020
|
||||
T6C0.025
|
||||
T7C0.028
|
||||
T8C0.040
|
||||
T9C0.041
|
||||
T10C0.047
|
||||
T11C0.060
|
||||
T12C0.067
|
||||
T13C0.126
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X033650Y-039550
|
||||
X033650Y-040400
|
||||
X034350Y-022550
|
||||
X034550Y-039500
|
||||
X034740Y-041100
|
||||
X034750Y-030250
|
||||
X034780Y-035640
|
||||
X034850Y-026330
|
||||
X034900Y-034400
|
||||
X034900Y-034750
|
||||
X035010Y-039720
|
||||
X035150Y-033100
|
||||
X035420Y-022550
|
||||
X035600Y-033100
|
||||
X035660Y-037040
|
||||
X036000Y-025950
|
||||
X036000Y-031500
|
||||
X036050Y-033100
|
||||
X036050Y-034550
|
||||
X036090Y-024630
|
||||
X036100Y-025500
|
||||
X036280Y-035280
|
||||
X036370Y-039100
|
||||
X036450Y-024300
|
||||
X036620Y-035260
|
||||
X036690Y-039250
|
||||
X036800Y-036850
|
||||
X036810Y-026610
|
||||
X036810Y-030200
|
||||
X037200Y-034500
|
||||
X037250Y-031500
|
||||
X037330Y-028590
|
||||
X037340Y-037710
|
||||
X037340Y-038560
|
||||
X037430Y-025680
|
||||
X037750Y-025420
|
||||
X038100Y-030350
|
||||
X038150Y-042350
|
||||
X038550Y-047360
|
||||
X038560Y-048220
|
||||
X038600Y-028630
|
||||
X038850Y-047960
|
||||
X038930Y-047230
|
||||
X038970Y-025670
|
||||
X039000Y-046870
|
||||
X039010Y-028610
|
||||
X039020Y-022820
|
||||
X039220Y-045050
|
||||
X039240Y-036530
|
||||
X039260Y-025930
|
||||
X039270Y-023190
|
||||
X039400Y-035520
|
||||
X039590Y-023020
|
||||
X039670Y-045890
|
||||
X039880Y-029130
|
||||
X040160Y-045620
|
||||
X040230Y-023850
|
||||
X040250Y-035260
|
||||
X040390Y-031410
|
||||
X040410Y-042350
|
||||
X040570Y-035690
|
||||
X040580Y-048550
|
||||
X040600Y-044770
|
||||
X040730Y-034350
|
||||
X040740Y-034770
|
||||
X040750Y-031420
|
||||
X040970Y-044750
|
||||
X041100Y-046180
|
||||
X041260Y-024230
|
||||
X041280Y-047760
|
||||
X041410Y-025250
|
||||
X041450Y-031410
|
||||
X041600Y-047570
|
||||
X041710Y-031150
|
||||
X042000Y-047190
|
||||
X042200Y-023670
|
||||
X042340Y-023280
|
||||
X042370Y-047570
|
||||
X042870Y-047040
|
||||
X043098Y-025298
|
||||
X043100Y-024150
|
||||
X043130Y-026360
|
||||
X043390Y-046520
|
||||
X043870Y-026410
|
||||
X044130Y-026170
|
||||
X044620Y-027220
|
||||
X044680Y-026560
|
||||
X044700Y-032300
|
||||
X044780Y-026900
|
||||
X044950Y-047000
|
||||
X045050Y-032350
|
||||
X045310Y-047400
|
||||
X045330Y-047030
|
||||
X045670Y-047790
|
||||
X046000Y-030000
|
||||
X046030Y-047120
|
||||
X046350Y-034060
|
||||
X046450Y-036600
|
||||
X047350Y-036600
|
||||
X047650Y-031600
|
||||
X047650Y-031950
|
||||
X049575Y-026375
|
||||
X049975Y-028485
|
||||
X050200Y-040360
|
||||
X051180Y-029850
|
||||
X051180Y-030230
|
||||
X051620Y-029390
|
||||
X051670Y-028620
|
||||
X051670Y-029010
|
||||
X051800Y-038500
|
||||
X052025Y-030975
|
||||
X052525Y-030975
|
||||
X052750Y-032450
|
||||
X052825Y-027335
|
||||
X052895Y-026425
|
||||
X053025Y-030975
|
||||
X053525Y-030975
|
||||
X053850Y-036180
|
||||
X054060Y-035880
|
||||
X054075Y-028675
|
||||
X054320Y-035640
|
||||
X054575Y-028675
|
||||
X055075Y-028675
|
||||
X055575Y-028675
|
||||
X056340Y-036940
|
||||
X056460Y-033110
|
||||
X056460Y-033550
|
||||
X056630Y-030180
|
||||
X056960Y-030050
|
||||
X057340Y-036940
|
||||
X057520Y-026850
|
||||
X057550Y-029130
|
||||
X057690Y-043610
|
||||
X057760Y-031520
|
||||
X059030Y-024610
|
||||
X060080Y-026420
|
||||
X060220Y-026080
|
||||
X060320Y-046400
|
||||
X060650Y-026060
|
||||
X061140Y-035260
|
||||
X061210Y-035700
|
||||
X061310Y-036060
|
||||
X061560Y-036350
|
||||
X061710Y-046540
|
||||
X061800Y-037050
|
||||
X062020Y-026880
|
||||
X062060Y-045810
|
||||
X062120Y-036860
|
||||
X062280Y-034350
|
||||
X062330Y-045130
|
||||
X062500Y-031850
|
||||
X062700Y-046100
|
||||
X062720Y-034080
|
||||
X063630Y-035750
|
||||
X063630Y-036820
|
||||
X063630Y-038280
|
||||
X063660Y-036110
|
||||
X064010Y-032720
|
||||
X064030Y-031800
|
||||
X064180Y-039980
|
||||
X064320Y-032500
|
||||
X064420Y-038540
|
||||
X064580Y-033700
|
||||
X064580Y-034080
|
||||
X064940Y-034130
|
||||
X065020Y-040750
|
||||
X065060Y-036190
|
||||
X065330Y-034130
|
||||
X066210Y-035570
|
||||
X066370Y-036240
|
||||
X066610Y-035640
|
||||
X066650Y-036620
|
||||
X066660Y-037010
|
||||
X066960Y-037490
|
||||
X067190Y-037210
|
||||
X067280Y-044690
|
||||
X067290Y-038100
|
||||
X067390Y-049290
|
||||
X067440Y-037760
|
||||
X067610Y-035160
|
||||
X067610Y-038790
|
||||
X067660Y-049530
|
||||
X067710Y-038440
|
||||
X067930Y-039250
|
||||
X067940Y-040990
|
||||
X067970Y-041810
|
||||
X068040Y-035150
|
||||
X068220Y-041230
|
||||
X068240Y-042920
|
||||
X068460Y-035140
|
||||
X068480Y-040710
|
||||
X070100Y-027500
|
||||
X070210Y-028110
|
||||
X070400Y-029650
|
||||
X071190Y-026830
|
||||
X071380Y-028550
|
||||
X071590Y-026500
|
||||
X071740Y-041300
|
||||
X071830Y-042950
|
||||
X072250Y-029600
|
||||
X072270Y-024000
|
||||
X072560Y-037690
|
||||
X072830Y-035860
|
||||
X072990Y-035540
|
||||
X073110Y-035040
|
||||
X073430Y-035210
|
||||
X073553Y-024705
|
||||
X073553Y-025295
|
||||
X073720Y-036910
|
||||
X073740Y-037710
|
||||
X073750Y-025000
|
||||
X073947Y-024705
|
||||
X073947Y-025295
|
||||
X074880Y-040430
|
||||
X074930Y-040070
|
||||
X075050Y-025450
|
||||
X075270Y-040640
|
||||
X075500Y-024750
|
||||
X075610Y-036730
|
||||
T2
|
||||
X037717Y-026767
|
||||
X037717Y-027200
|
||||
X037717Y-027633
|
||||
X038150Y-026767
|
||||
X038150Y-027200
|
||||
X038150Y-027633
|
||||
X038583Y-026767
|
||||
X038583Y-027200
|
||||
X038583Y-027633
|
||||
X039798Y-047298
|
||||
X039798Y-047702
|
||||
X040202Y-047298
|
||||
X040202Y-047702
|
||||
X043798Y-047298
|
||||
X043798Y-047702
|
||||
X044202Y-047298
|
||||
X044202Y-047702
|
||||
X046039Y-031339
|
||||
X046039Y-031861
|
||||
X046300Y-031600
|
||||
X046561Y-031339
|
||||
X046561Y-031861
|
||||
T3
|
||||
X050631Y-026431
|
||||
X050631Y-027025
|
||||
X050631Y-027619
|
||||
X051225Y-026431
|
||||
X051225Y-027025
|
||||
X051225Y-027619
|
||||
X051819Y-026431
|
||||
X051819Y-027025
|
||||
X051819Y-027619
|
||||
X051925Y-033625
|
||||
X051925Y-034275
|
||||
X051925Y-034925
|
||||
X052575Y-033625
|
||||
X052575Y-034275
|
||||
X052575Y-034925
|
||||
X053225Y-033625
|
||||
X053225Y-034275
|
||||
X053225Y-034925
|
||||
T4
|
||||
X034850Y-025950
|
||||
X035000Y-025500
|
||||
X035100Y-027300
|
||||
X035300Y-025050
|
||||
X035630Y-026500
|
||||
X035630Y-026900
|
||||
X035630Y-027300
|
||||
X049275Y-027415
|
||||
X049470Y-036330
|
||||
X049565Y-027045
|
||||
X049625Y-027585
|
||||
X049820Y-035960
|
||||
X052325Y-031415
|
||||
X052685Y-031375
|
||||
X052945Y-027695
|
||||
X053525Y-031375
|
||||
X053525Y-032475
|
||||
X053925Y-031375
|
||||
X054325Y-031375
|
||||
X054725Y-031375
|
||||
X055125Y-031375
|
||||
X063910Y-028530
|
||||
X064500Y-028250
|
||||
X068750Y-028710
|
||||
X069490Y-027840
|
||||
X070790Y-028050
|
||||
X071190Y-028050
|
||||
X071600Y-023500
|
||||
X071600Y-026000
|
||||
X072450Y-024400
|
||||
X072560Y-025570
|
||||
X076450Y-039200
|
||||
X076450Y-039900
|
||||
X076450Y-040350
|
||||
X079830Y-040270
|
||||
X080690Y-040200
|
||||
T5
|
||||
X034680Y-042180
|
||||
X035140Y-041500
|
||||
X035650Y-034600
|
||||
X035890Y-042320
|
||||
X036450Y-025700
|
||||
X036640Y-027250
|
||||
X040650Y-026900
|
||||
X040650Y-027950
|
||||
X044300Y-032400
|
||||
X044850Y-033300
|
||||
X048415Y-027045
|
||||
X048425Y-027825
|
||||
X050615Y-028785
|
||||
X050725Y-029835
|
||||
X051005Y-023005
|
||||
X051145Y-023445
|
||||
X052275Y-032475
|
||||
X053985Y-027515
|
||||
X055750Y-033750
|
||||
X055750Y-034300
|
||||
X057400Y-030800
|
||||
X071350Y-032850
|
||||
X073750Y-036320
|
||||
T6
|
||||
X033070Y-044460
|
||||
X033150Y-038000
|
||||
X033190Y-038790
|
||||
X033190Y-039620
|
||||
X033290Y-042550
|
||||
X033500Y-037200
|
||||
X033610Y-036600
|
||||
X033640Y-022950
|
||||
X033700Y-035650
|
||||
X033750Y-034050
|
||||
X033750Y-034750
|
||||
X033800Y-038670
|
||||
X034160Y-040500
|
||||
X034900Y-023200
|
||||
X035230Y-037040
|
||||
X035250Y-031900
|
||||
X035250Y-036400
|
||||
X035400Y-038930
|
||||
X035800Y-023650
|
||||
X035850Y-029050
|
||||
X035940Y-038470
|
||||
X035970Y-036150
|
||||
X036070Y-030860
|
||||
X036510Y-039870
|
||||
X036560Y-022550
|
||||
X036600Y-032150
|
||||
X036600Y-033850
|
||||
X036850Y-028700
|
||||
X036980Y-024100
|
||||
X037000Y-025700
|
||||
X037200Y-029130
|
||||
X037450Y-024500
|
||||
X037550Y-029550
|
||||
X037600Y-041150
|
||||
X037750Y-022950
|
||||
X037760Y-037710
|
||||
X037950Y-034850
|
||||
X038010Y-031900
|
||||
X038050Y-028700
|
||||
X038100Y-032700
|
||||
X038100Y-033200
|
||||
X038100Y-040130
|
||||
X038150Y-036900
|
||||
X038150Y-038200
|
||||
X038150Y-042800
|
||||
X038890Y-030650
|
||||
X038890Y-049050
|
||||
X038900Y-041650
|
||||
X039250Y-025300
|
||||
X039550Y-027800
|
||||
X039570Y-027010
|
||||
X039710Y-048650
|
||||
X039750Y-024050
|
||||
X040050Y-028600
|
||||
X040100Y-025190
|
||||
X040280Y-046320
|
||||
X040490Y-024680
|
||||
X040650Y-027400
|
||||
X041450Y-026400
|
||||
X041750Y-040350
|
||||
X042000Y-024700
|
||||
X042200Y-038750
|
||||
X042500Y-024700
|
||||
X042890Y-049050
|
||||
X043000Y-023500
|
||||
X043500Y-038700
|
||||
X043710Y-048650
|
||||
X043940Y-029720
|
||||
X044260Y-025300
|
||||
X044300Y-046320
|
||||
X045000Y-030900
|
||||
X045090Y-029500
|
||||
X045250Y-034600
|
||||
X045650Y-029000
|
||||
X045660Y-030400
|
||||
X046450Y-037750
|
||||
X046500Y-028850
|
||||
X046600Y-028050
|
||||
X046730Y-034310
|
||||
X046950Y-029650
|
||||
X047300Y-034310
|
||||
X047350Y-037750
|
||||
X047400Y-032300
|
||||
X047650Y-031150
|
||||
X047690Y-033200
|
||||
X048125Y-027425
|
||||
X048340Y-029160
|
||||
X048450Y-033500
|
||||
X048500Y-031450
|
||||
X048650Y-032200
|
||||
X048800Y-030200
|
||||
X048800Y-030750
|
||||
X048800Y-032700
|
||||
X049000Y-042100
|
||||
X049225Y-025125
|
||||
X049525Y-029435
|
||||
X049580Y-034160
|
||||
X049580Y-034640
|
||||
X049625Y-025925
|
||||
X049800Y-042500
|
||||
X049935Y-023225
|
||||
X050200Y-039880
|
||||
X050225Y-029835
|
||||
X050450Y-045900
|
||||
X050450Y-047150
|
||||
X050600Y-038900
|
||||
X050795Y-031665
|
||||
X051020Y-032840
|
||||
X051075Y-024225
|
||||
X051075Y-025405
|
||||
X051300Y-047600
|
||||
X051400Y-046300
|
||||
X051460Y-041280
|
||||
X051505Y-031265
|
||||
X051525Y-032465
|
||||
X052215Y-023225
|
||||
X052275Y-024225
|
||||
X052275Y-025415
|
||||
X052430Y-039990
|
||||
X052700Y-047600
|
||||
X052800Y-046400
|
||||
X053130Y-037260
|
||||
X053140Y-036100
|
||||
X053635Y-025975
|
||||
X053635Y-028125
|
||||
X053810Y-045010
|
||||
X053860Y-036890
|
||||
X054400Y-035100
|
||||
X054450Y-036150
|
||||
X054500Y-034300
|
||||
X054570Y-033380
|
||||
X055180Y-045010
|
||||
X055200Y-032800
|
||||
X055600Y-035100
|
||||
X055600Y-038600
|
||||
X055800Y-024400
|
||||
X055950Y-037790
|
||||
X056150Y-024900
|
||||
X056300Y-025800
|
||||
X057150Y-026100
|
||||
X057200Y-022200
|
||||
X057400Y-024900
|
||||
X057500Y-039850
|
||||
X057850Y-042700
|
||||
X057900Y-043200
|
||||
X058050Y-040400
|
||||
X058400Y-039500
|
||||
X058600Y-022900
|
||||
X061400Y-023300
|
||||
X061400Y-024300
|
||||
X061400Y-025300
|
||||
X061400Y-026300
|
||||
X062500Y-033000
|
||||
X062900Y-033550
|
||||
X063500Y-027740
|
||||
X063800Y-035350
|
||||
X063800Y-038900
|
||||
X064050Y-037540
|
||||
X064550Y-040800
|
||||
X064990Y-031000
|
||||
X065000Y-038900
|
||||
X065000Y-041250
|
||||
X065030Y-035270
|
||||
X065550Y-033250
|
||||
X066310Y-035140
|
||||
X066350Y-033100
|
||||
X066640Y-030840
|
||||
X067000Y-043190
|
||||
X067350Y-029600
|
||||
X067540Y-043020
|
||||
X067540Y-044230
|
||||
X067900Y-029100
|
||||
X068750Y-031650
|
||||
X068750Y-032850
|
||||
X068800Y-023950
|
||||
X069100Y-034300
|
||||
X069250Y-031650
|
||||
X069650Y-024150
|
||||
X069700Y-048250
|
||||
X069900Y-034300
|
||||
X070350Y-031690
|
||||
X070378Y-032904
|
||||
X070700Y-043000
|
||||
X070700Y-044200
|
||||
X071000Y-045300
|
||||
X071000Y-046100
|
||||
X071200Y-030040
|
||||
X071800Y-024000
|
||||
X071850Y-030550
|
||||
X072250Y-033000
|
||||
X072500Y-031100
|
||||
X072770Y-034260
|
||||
X072800Y-045050
|
||||
X072810Y-032920
|
||||
X072900Y-023500
|
||||
X072900Y-026500
|
||||
X072950Y-031900
|
||||
X073250Y-043000
|
||||
X073250Y-044200
|
||||
X073350Y-022350
|
||||
X073350Y-027650
|
||||
X073550Y-032200
|
||||
X073700Y-048250
|
||||
X074040Y-031190
|
||||
X074900Y-025000
|
||||
X074960Y-041560
|
||||
X075000Y-035150
|
||||
X075000Y-035950
|
||||
X075000Y-037100
|
||||
X075000Y-037900
|
||||
X075000Y-041050
|
||||
X076000Y-033150
|
||||
X076200Y-031100
|
||||
X076200Y-035150
|
||||
X076200Y-035950
|
||||
X076200Y-037100
|
||||
X076200Y-037900
|
||||
X076200Y-041050
|
||||
X076750Y-025000
|
||||
X078150Y-037100
|
||||
X079330Y-039490
|
||||
X080400Y-043600
|
||||
X081250Y-043200
|
||||
T7
|
||||
X063000Y-029400
|
||||
X063000Y-029900
|
||||
X063500Y-029400
|
||||
X063500Y-029900
|
||||
X064000Y-029400
|
||||
X064000Y-029900
|
||||
X064500Y-029400
|
||||
X064500Y-029900
|
||||
X065000Y-029400
|
||||
X065000Y-029900
|
||||
T8
|
||||
X042500Y-033500
|
||||
X043500Y-033500
|
||||
X047500Y-044500
|
||||
X047500Y-045500
|
||||
X047500Y-046500
|
||||
X047500Y-047500
|
||||
X047500Y-048500
|
||||
X047500Y-049500
|
||||
X050500Y-048500
|
||||
X050500Y-049500
|
||||
X051500Y-048500
|
||||
X051500Y-049500
|
||||
X052500Y-048500
|
||||
X052500Y-049500
|
||||
X053500Y-048500
|
||||
X053500Y-049500
|
||||
X054500Y-023000
|
||||
X054500Y-024000
|
||||
X054500Y-048500
|
||||
X054500Y-049500
|
||||
X059500Y-029000
|
||||
X059500Y-030000
|
||||
X059500Y-031000
|
||||
X059500Y-032000
|
||||
X059500Y-033000
|
||||
X059500Y-034000
|
||||
X059500Y-035000
|
||||
X059500Y-036000
|
||||
X060500Y-029000
|
||||
X060500Y-030000
|
||||
X060500Y-031000
|
||||
X060500Y-032000
|
||||
X060500Y-033000
|
||||
X060500Y-034000
|
||||
X060500Y-035000
|
||||
X060500Y-036000
|
||||
X061500Y-048500
|
||||
X061500Y-049500
|
||||
X062500Y-048500
|
||||
X062500Y-049500
|
||||
X063500Y-023000
|
||||
X063500Y-024000
|
||||
X063500Y-025000
|
||||
X063500Y-026000
|
||||
X063500Y-048500
|
||||
X063500Y-049500
|
||||
X064500Y-023000
|
||||
X064500Y-024000
|
||||
X064500Y-025000
|
||||
X064500Y-026000
|
||||
X064500Y-048500
|
||||
X064500Y-049500
|
||||
X065500Y-023000
|
||||
X065500Y-024000
|
||||
X065500Y-025000
|
||||
X065500Y-026000
|
||||
X065500Y-048500
|
||||
X065500Y-049500
|
||||
X066500Y-048500
|
||||
X066500Y-049500
|
||||
X067500Y-025000
|
||||
X067500Y-026000
|
||||
X069500Y-049500
|
||||
X070500Y-049500
|
||||
X071500Y-049500
|
||||
X072500Y-049500
|
||||
X073500Y-029000
|
||||
X073500Y-030000
|
||||
X073500Y-049500
|
||||
X074500Y-029000
|
||||
X074500Y-030000
|
||||
X074500Y-049500
|
||||
X075500Y-029000
|
||||
X075500Y-030000
|
||||
X076500Y-029000
|
||||
X076500Y-030000
|
||||
X076510Y-046500
|
||||
X076510Y-047500
|
||||
X077500Y-023000
|
||||
X077500Y-024000
|
||||
X077500Y-026000
|
||||
X077500Y-027000
|
||||
X077500Y-031500
|
||||
X077500Y-032500
|
||||
X077500Y-033500
|
||||
X077500Y-034500
|
||||
X077500Y-035500
|
||||
X077500Y-038500
|
||||
X077500Y-039500
|
||||
X077500Y-040500
|
||||
X077500Y-041500
|
||||
X077500Y-042500
|
||||
X077500Y-043500
|
||||
X077510Y-046500
|
||||
X077510Y-047500
|
||||
X078500Y-031500
|
||||
X078500Y-032500
|
||||
X078500Y-033500
|
||||
X078500Y-034500
|
||||
X078500Y-035500
|
||||
X078500Y-038500
|
||||
X078500Y-039500
|
||||
X078500Y-040500
|
||||
X078500Y-041500
|
||||
X078500Y-042500
|
||||
X078500Y-043500
|
||||
X078510Y-046500
|
||||
X078510Y-047500
|
||||
T9
|
||||
X068521Y-023339
|
||||
X070479Y-023339
|
||||
T10
|
||||
X068417Y-022169
|
||||
X070583Y-022169
|
||||
T11
|
||||
X035000Y-044500
|
||||
X043500Y-036500
|
||||
X043500Y-042500
|
||||
T12
|
||||
X034000Y-043500
|
||||
X034000Y-045500
|
||||
X036000Y-043500
|
||||
X036000Y-045500
|
||||
X042500Y-035500
|
||||
X042500Y-037500
|
||||
X042500Y-041500
|
||||
X042500Y-043500
|
||||
X044500Y-035500
|
||||
X044500Y-037500
|
||||
X044500Y-041500
|
||||
X044500Y-043500
|
||||
T13
|
||||
X026075Y-023075
|
||||
X026075Y-048925
|
||||
X080925Y-023075
|
||||
X080925Y-048925
|
||||
T0
|
||||
M30
|
||||
|
After Width: | Height: | Size: 159 KiB |
BIN
SoftwareDefined/HackRF/hackrf-2015.07.2/doc/jawbreaker.jpeg
Normal file
|
After Width: | Height: | Size: 434 KiB |
BIN
SoftwareDefined/HackRF/hackrf-2015.07.2/doc/lemonAndjelly.jpeg
Normal file
|
After Width: | Height: | Size: 124 KiB |
|
After Width: | Height: | Size: 651 KiB |
|
After Width: | Height: | Size: 372 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 100 KiB |
@ -0,0 +1,185 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
id="svg3324"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
width="992.5"
|
||||
height="743.75"
|
||||
xml:space="preserve"
|
||||
sodipodi:docname="Day2-04.HackRF A Low Cost Software Defined Radio Platform by Benjamin Vernoux.pdf"><metadata
|
||||
id="metadata3330"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs3328"><clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath3338"><path
|
||||
d="m 0,-0.2 793.6,0 0,595.2 L 0,595 0,-0.2 z"
|
||||
clip-rule="evenodd"
|
||||
id="path3340" /></clipPath><clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath3438"><path
|
||||
d="m 397,81 0,0 0,433.1 0,0 0,-433.1 z"
|
||||
id="path3440" /></clipPath></defs><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="953"
|
||||
inkscape:window-height="745"
|
||||
id="namedview3326"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.31731092"
|
||||
inkscape:cx="496.25"
|
||||
inkscape:cy="371.875"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="g3332" /><g
|
||||
id="g3332"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Day2-04.HackRF A Low Cost Software Defined Radio Platform by Benjamin Vernoux"
|
||||
transform="matrix(1.25,0,0,-1.25,0,743.75)"><g
|
||||
id="g3334"><g
|
||||
id="g3336"
|
||||
clip-path="url(#clipPath3338)"><path
|
||||
d="m 0,595 793.7,0 0,-595.2 L 0,-0.2 0,595 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path3342" /><g
|
||||
id="g3344" /><g
|
||||
id="g3350"><text
|
||||
transform="matrix(1,0,0,-1,46.8,497.9)"
|
||||
id="text3352"><tspan
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Arial;font-variant:normal;font-weight:900;font-size:60;writing-mode:lr;-inkscape-font-specification:Arial-Black"
|
||||
x="0 50.04 89.94 128.82 168.78 215.4 255.36 275.4 322.02 342.06 381.96 402 428.58 468.54 488.52 508.56 551.88 578.46 619.32 659.28"
|
||||
y="0"
|
||||
sodipodi:role="line"
|
||||
id="tspan3354">HackRF Digital Stage</tspan></text>
|
||||
</g><path
|
||||
d="m 37.4,443.7 c 0,12.7 19.1,25.4 38.2,25.4 l 249,0 c 19.1,0 38.3,-12.7 38.3,-25.4 l 0,-165.2 c 0,-12.7 -19.2,-25.4 -38.3,-25.4 l -249,0 c -19.1,0 -38.2,12.7 -38.2,25.4 l 0,165.2 z"
|
||||
style="fill:#99ccff;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path3356" /><g
|
||||
id="g3358"><path
|
||||
d="m 37.4,443.7 c 0,12.7 19.1,25.4 38.2,25.4 l 249,0 c 19.1,0 38.3,-12.7 38.3,-25.4 l 0,-165.2 c 0,-12.7 -19.2,-25.4 -38.3,-25.4 l -249,0 c -19.1,0 -38.2,12.7 -38.2,25.4 l 0,165.2 z"
|
||||
style="fill:none;stroke:none"
|
||||
id="path3360" /></g><g
|
||||
id="g3362"><path
|
||||
d="m 37.4,469.1 0,0 z"
|
||||
style="fill:none;stroke:none"
|
||||
id="path3364" /></g><g
|
||||
id="g3366"><path
|
||||
d="m 362.9,253.1 0,0 z"
|
||||
style="fill:none;stroke:none"
|
||||
id="path3368" /></g><g
|
||||
id="g3370"><text
|
||||
transform="matrix(1,0,0,-1,76,404.3)"
|
||||
id="text3372"><tspan
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Arial;font-variant:normal;font-weight:900;font-size:48;writing-mode:lr;-inkscape-font-specification:Arial-Black"
|
||||
x="0 45.36 82.656 119.952 151.92 183.984 215.952"
|
||||
y="0"
|
||||
sodipodi:role="line"
|
||||
id="tspan3374">MAX5864</tspan></text>
|
||||
</g><g
|
||||
id="g3376"><text
|
||||
transform="matrix(1,0,0,-1,92.7,340.9)"
|
||||
id="text3378"><tspan
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Arial;font-variant:normal;font-weight:900;font-size:44;writing-mode:lr;-inkscape-font-specification:Arial-Black"
|
||||
x="0 34.276 68.376 102.652 114.84 147.136 180.444"
|
||||
y="0"
|
||||
sodipodi:role="line"
|
||||
id="tspan3380">ADC/DAC</tspan></text>
|
||||
</g><g
|
||||
id="g3382"><text
|
||||
transform="matrix(1,0,0,-1,47.1,278.8)"
|
||||
id="text3384"><tspan
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Arial;font-variant:normal;font-weight:900;font-size:44;writing-mode:lr;-inkscape-font-specification:Arial-Black"
|
||||
x="0 36.652 66.088 80.696 100.232 129.58 144.188 173.536 202.884 244.376 281.028"
|
||||
y="0"
|
||||
sodipodi:role="line"
|
||||
id="tspan3386">Up to 22MHz</tspan></text>
|
||||
</g><path
|
||||
d="m 457.6,443.7 c 0,12.7 16.9,25.4 33.8,25.4 l 220.5,0 c 16.9,0 33.9,-12.7 33.9,-25.4 l 0,-165.2 c 0,-12.7 -17,-25.4 -33.9,-25.4 l -220.5,0 c -16.9,0 -33.8,12.7 -33.8,25.4 l 0,165.2 z"
|
||||
style="fill:#99ccff;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path3388" /><g
|
||||
id="g3390"><path
|
||||
d="m 457.6,443.7 c 0,12.7 16.9,25.4 33.8,25.4 l 220.5,0 c 16.9,0 33.9,-12.7 33.9,-25.4 l 0,-165.2 c 0,-12.7 -17,-25.4 -33.9,-25.4 l -220.5,0 c -16.9,0 -33.8,12.7 -33.8,25.4 l 0,165.2 z"
|
||||
style="fill:none;stroke:none"
|
||||
id="path3392" /></g><g
|
||||
id="g3394"><path
|
||||
d="m 457.6,469.1 0,0 z"
|
||||
style="fill:none;stroke:none"
|
||||
id="path3396" /></g><g
|
||||
id="g3398"><path
|
||||
d="m 745.8,253.1 0,0 z"
|
||||
style="fill:none;stroke:none"
|
||||
id="path3400" /></g><g
|
||||
id="g3402"><text
|
||||
transform="matrix(1,0,0,-1,545.7,376)"
|
||||
id="text3404"><tspan
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Arial;font-variant:normal;font-weight:900;font-size:48;writing-mode:lr;-inkscape-font-specification:Arial-Black"
|
||||
x="0 39.888 77.184"
|
||||
y="0"
|
||||
sodipodi:role="line"
|
||||
id="tspan3406">NXP</tspan></text>
|
||||
</g><g
|
||||
id="g3408"><text
|
||||
transform="matrix(1,0,0,-1,485.5,308.3)"
|
||||
id="text3410"><tspan
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Arial;font-variant:normal;font-weight:900;font-size:48;writing-mode:lr;-inkscape-font-specification:Arial-Black"
|
||||
x="0 32.064 66.72 104.016 135.984 168.048 200.016"
|
||||
y="0"
|
||||
sodipodi:role="line"
|
||||
id="tspan3412">LPC43xx</tspan></text>
|
||||
</g><g
|
||||
id="g3414"><path
|
||||
d="m 429.9,361.1 -39.4,0"
|
||||
style="fill:none;stroke:#000000;stroke-opacity:1;stroke-width:7.07499;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none"
|
||||
id="path3416" /></g><path
|
||||
d="m 457.6,361.1 -28.9,9.6 0,-19.3 28.9,9.7 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path3418" /><path
|
||||
d="m 362.8,361.1 28.9,-9.7 0,19.3 -28.9,-9.6 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path3420" /><text
|
||||
transform="matrix(1,0,0,-1,49,181.9)"
|
||||
id="text3422"><tspan
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Arial;font-variant:normal;font-weight:900;font-size:48;writing-mode:lr;-inkscape-font-specification:Arial-Black"
|
||||
x="0 45.264 77.328 109.296 125.28 173.28 205.248 253.248 269.232 301.2 333.264 378.528 418.512 445.104 461.088 498.384 535.68 572.976 586.32 621.504 657.984 695.28"
|
||||
y="0"
|
||||
sodipodi:role="line"
|
||||
id="tspan3424">Maximum 20MHz ADC/DAC </tspan></text>
|
||||
<text
|
||||
transform="matrix(1,0,0,-1,142.3,114.2)"
|
||||
id="text3426"><tspan
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Arial;font-variant:normal;font-weight:900;font-size:48;writing-mode:lr;-inkscape-font-specification:Arial-Black"
|
||||
x="0 15.888 31.872 79.872 95.76 117.12 149.088 181.152 197.136 229.104 258.384 274.272 314.256 348.912 386.208 418.176 434.16 474.144"
|
||||
y="0"
|
||||
sodipodi:role="line"
|
||||
id="tspan3428">limited by USB2 HS</tspan></text>
|
||||
<text
|
||||
transform="matrix(1,0,0,-1,192.5,46.5)"
|
||||
id="text3430"><tspan
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Arial;font-variant:normal;font-weight:900;font-size:48;writing-mode:lr;-inkscape-font-specification:Arial-Black"
|
||||
x="0 18.672 51.216 83.184 115.152 147.216 168.48 184.464 216.432 248.496 293.76 309.744 347.04 360.336 389.616"
|
||||
y="0"
|
||||
sodipodi:role="line"
|
||||
id="tspan3432">(about 40MiB/s)</tspan></text>
|
||||
</g></g><g
|
||||
id="g3434"><g
|
||||
id="g3436" /><g
|
||||
id="g3442"><g
|
||||
clip-path="url(#clipPath3438)"
|
||||
opacity="0.5"
|
||||
id="g3444" /></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 62 KiB |
9
SoftwareDefined/HackRF/hackrf-2015.07.2/firmware/.gitignore
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
*.bin
|
||||
*.d
|
||||
*.elf
|
||||
*.hex
|
||||
*.list
|
||||
*.map
|
||||
*.o
|
||||
*.srec
|
||||
*.dfu
|
||||
@ -0,0 +1,36 @@
|
||||
# Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
#
|
||||
# This file is part of HackRF.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
|
||||
# Top directory CMake project for HackRF firmware
|
||||
|
||||
cmake_minimum_required(VERSION 2.8.9)
|
||||
set(CMAKE_TOOLCHAIN_FILE toolchain-arm-cortex-m.cmake)
|
||||
|
||||
project (hackrf_firmware_all)
|
||||
|
||||
add_subdirectory(blinky)
|
||||
add_subdirectory(mixertx)
|
||||
add_subdirectory(sgpio)
|
||||
add_subdirectory(sgpio-rx)
|
||||
add_subdirectory(simpletx)
|
||||
add_subdirectory(startup)
|
||||
add_subdirectory(startup_systick)
|
||||
add_subdirectory(startup_systick_perfo)
|
||||
add_subdirectory(hackrf_usb)
|
||||
56
SoftwareDefined/HackRF/hackrf-2015.07.2/firmware/README
Normal file
@ -0,0 +1,56 @@
|
||||
The primary firmware source code for USB HackRF devices is hackrf_usb. Most of
|
||||
the other directories contain firmware source code for test and development.
|
||||
The common directory contains source code shared by multiple HackRF firmware
|
||||
projects. The cpld directory contains HDL source for the CPLD.
|
||||
|
||||
|
||||
The firmware is set up for compilation with the GCC toolchain available here:
|
||||
|
||||
https://code.launchpad.net/gcc-arm-embedded
|
||||
|
||||
Required dependency:
|
||||
|
||||
https://github.com/mossmann/libopencm3
|
||||
|
||||
If you are using git, the preferred way to install libopencm3 is to use the
|
||||
submodule:
|
||||
|
||||
$ cd ..
|
||||
$ git submodule init
|
||||
$ git submodule update
|
||||
$ cd firmware/libopencm3
|
||||
$ make
|
||||
|
||||
|
||||
To build and install a standard firmware image for HackRF One:
|
||||
|
||||
$ cd hackrf_usb
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
$ cmake .. -DBOARD=HACKRF_ONE
|
||||
$ make
|
||||
$ hackrf_spiflash -w hackrf_usb.bin
|
||||
|
||||
If you have a Jawbreaker, use -DBOARD=JAWBREAKER instead.
|
||||
|
||||
|
||||
For loading firmware into RAM with DFU you will also need:
|
||||
|
||||
http://dfu-util.gnumonks.org/
|
||||
|
||||
To start up HackRF One in DFU mode, hold down the DFU button while powering it
|
||||
on or while pressing and releasing the RESET button. Release the DFU button
|
||||
after the 3V3 LED illuminates.
|
||||
|
||||
With dfu-util and dfu-suffix (from the dfu-util package) installed and with the
|
||||
HackRF operating in DFU mode, you can build firmware for RAM and load it with:
|
||||
|
||||
$ cd hackrf_usb
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
$ cmake .. -DRUN_FROM=RAM
|
||||
$ make hackrf_usb-program
|
||||
|
||||
Alternatively you can load a .dfu file from a release package with:
|
||||
|
||||
$ dfu-util --device 1fc9:000c --alt 0 --download hackrf_usb_ram.dfu
|
||||
@ -0,0 +1,33 @@
|
||||
# Copyright 2012 Michael Ossmann <mike@ossmann.com>
|
||||
# Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
#
|
||||
# This file is part of HackRF.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
|
||||
cmake_minimum_required(VERSION 2.8.9)
|
||||
set(CMAKE_TOOLCHAIN_FILE ../toolchain-arm-cortex-m.cmake)
|
||||
|
||||
project(blinky)
|
||||
|
||||
include(../hackrf-common.cmake)
|
||||
|
||||
set(SRC_M4
|
||||
blinky.c
|
||||
)
|
||||
|
||||
DeclareTargets()
|
||||
@ -0,0 +1 @@
|
||||
This is the simplest example firmware for HackRF. It flashes three LEDs.
|
||||
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright 2010 - 2012 Michael Ossmann
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <libopencm3/lpc43xx/gpio.h>
|
||||
#include <libopencm3/lpc43xx/scu.h>
|
||||
|
||||
#include "hackrf_core.h"
|
||||
|
||||
uint32_t boot0, boot1, boot2, boot3;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int i;
|
||||
pin_setup();
|
||||
|
||||
/* enable all power supplies */
|
||||
enable_1v8_power();
|
||||
|
||||
/* Blink LED1/2/3 on the board and Read BOOT0/1/2/3 pins. */
|
||||
while (1)
|
||||
{
|
||||
boot0 = BOOT0_STATE;
|
||||
boot1 = BOOT1_STATE;
|
||||
boot2 = BOOT2_STATE;
|
||||
boot3 = BOOT3_STATE;
|
||||
|
||||
gpio_set(PORT_LED1_3, (PIN_LED1|PIN_LED2|PIN_LED3)); /* LEDs on */
|
||||
for (i = 0; i < 2000000; i++) /* Wait a bit. */
|
||||
__asm__("nop");
|
||||
gpio_clear(PORT_LED1_3, (PIN_LED1|PIN_LED2|PIN_LED3)); /* LED off */
|
||||
for (i = 0; i < 2000000; i++) /* Wait a bit. */
|
||||
__asm__("nop");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright 2012 Michael Ossmann <mike@ossmann.com>
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
/* Linker script for HackRF One (LPC4320, 1M SPI flash, 200K SRAM). */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
/* rom is really the shadow region that points to SPI flash or elsewhere */
|
||||
rom (rx) : ORIGIN = 0x00000000, LENGTH = 96K
|
||||
ram_local1 (rwx) : ORIGIN = 0x10000000, LENGTH = 96K
|
||||
ram_local2 (rwx) : ORIGIN = 0x10080000, LENGTH = 32K
|
||||
ram_sleep (rwx) : ORIGIN = 0x10088000, LENGTH = 8K
|
||||
}
|
||||
|
||||
INCLUDE LPC43xx_M4_memory.ld
|
||||
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright 2012 Michael Ossmann <mike@ossmann.com>
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
/* Linker script for HackRF Jellybean/Jawbreaker (LPC4330, 1M SPI flash, 264K SRAM). */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
/* rom is really the shadow region that points to SPI flash or elsewhere */
|
||||
rom (rx) : ORIGIN = 0x00000000, LENGTH = 128K
|
||||
ram_local1 (rwx) : ORIGIN = 0x10000000, LENGTH = 128K
|
||||
ram_local2 (rwx) : ORIGIN = 0x10080000, LENGTH = 64K
|
||||
ram_sleep (rwx) : ORIGIN = 0x10090000, LENGTH = 8K
|
||||
}
|
||||
|
||||
INCLUDE LPC43xx_M4_memory.ld
|
||||
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Copyright 2012 Michael Ossmann <mike@ossmann.com>
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
MEMORY
|
||||
{
|
||||
ram (rwx) : ORIGIN = 0x00000000, LENGTH = 28K
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright 2012 Michael Ossmann <mike@ossmann.com>
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
PROVIDE(__m0_start__ = .);
|
||||
KEEP(*(.m0_bin*));
|
||||
. = ALIGN(4);
|
||||
PROVIDE(__m0_end__ = .);
|
||||
} >rom
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright 2012 Michael Ossmann <mike@ossmann.com>
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
MEMORY
|
||||
{
|
||||
/* Physical address in Flash used to copy Code from Flash to RAM */
|
||||
rom_flash (rx) : ORIGIN = 0x80000000, LENGTH = 1M
|
||||
ram_m0 (rwx) : ORIGIN = 0x20000000, LENGTH = 28K
|
||||
ram_shared (rwx) : ORIGIN = 0x20007000, LENGTH = 4K
|
||||
ram_usb (rwx) : ORIGIN = 0x20008000, LENGTH = 32K
|
||||
/* ram_usb: USB buffer. Straddles two blocks of RAM
|
||||
* to get performance benefit of having two USB buffers addressable
|
||||
* simultaneously (on two different buses of the AHB multilayer matrix)
|
||||
*/
|
||||
}
|
||||
|
||||
usb_bulk_buffer = ORIGIN(ram_usb);
|
||||
@ -0,0 +1,2 @@
|
||||
This directory contains things shared by multiple HackRF firmware
|
||||
implementations.
|
||||
@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "bitband.h"
|
||||
|
||||
volatile uint32_t* peripheral_bitband_address(volatile void* const address, const uint_fast8_t bit_number) {
|
||||
const uint32_t bit_band_base = 0x42000000;
|
||||
const uint32_t byte_offset = (uint32_t)address - 0x40000000;
|
||||
const uint32_t bit_word_offset = (byte_offset * 32) + (bit_number * 4);
|
||||
const uint32_t bit_word_address = bit_band_base + bit_word_offset;
|
||||
return (volatile uint32_t*)bit_word_address;
|
||||
}
|
||||
|
||||
void peripheral_bitband_set(volatile void* const peripheral_address, const uint_fast8_t bit_number) {
|
||||
volatile uint32_t* const bitband_address = peripheral_bitband_address(peripheral_address, bit_number);
|
||||
*bitband_address = 1;
|
||||
}
|
||||
|
||||
void peripheral_bitband_clear(volatile void* const peripheral_address, const uint_fast8_t bit_number) {
|
||||
volatile uint32_t* const bitband_address = peripheral_bitband_address(peripheral_address, bit_number);
|
||||
*bitband_address = 0;
|
||||
}
|
||||
|
||||
uint32_t peripheral_bitband_get(volatile void* const peripheral_address, const uint_fast8_t bit_number) {
|
||||
volatile uint32_t* const bitband_address = peripheral_bitband_address(peripheral_address, bit_number);
|
||||
return *bitband_address;
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __BITBAND_H__
|
||||
#define __BITBAND_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
volatile uint32_t* peripheral_bitband_address(volatile void* const address, const uint_fast8_t bit_number);
|
||||
void peripheral_bitband_set(volatile void* const peripheral_address, const uint_fast8_t bit_number);
|
||||
void peripheral_bitband_clear(volatile void* const peripheral_address, const uint_fast8_t bit_number);
|
||||
uint32_t peripheral_bitband_get(volatile void* const peripheral_address, const uint_fast8_t bit_number);
|
||||
|
||||
#endif//__BITBAND_H__
|
||||
@ -0,0 +1,88 @@
|
||||
/*
|
||||
* Copyright 2013 Michael Ossmann <mike@ossmann.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "cpld_jtag.h"
|
||||
#include "hackrf_core.h"
|
||||
#include "xapp058/micro.h"
|
||||
#include <libopencm3/lpc43xx/gpio.h>
|
||||
#include <libopencm3/lpc43xx/scu.h>
|
||||
#include <stdint.h>
|
||||
|
||||
static refill_buffer_cb refill_buffer;
|
||||
static uint32_t xsvf_buffer_len, xsvf_pos;
|
||||
static unsigned char* xsvf_buffer;
|
||||
|
||||
void cpld_jtag_setup(void) {
|
||||
scu_pinmux(SCU_PINMUX_CPLD_TDO, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION4);
|
||||
scu_pinmux(SCU_PINMUX_CPLD_TCK, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_PINMUX_CPLD_TMS, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_PINMUX_CPLD_TDI, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0);
|
||||
|
||||
/* TDO is an input */
|
||||
GPIO_DIR(PORT_CPLD_TDO) &= ~PIN_CPLD_TDO;
|
||||
|
||||
/* the rest are outputs */
|
||||
GPIO_DIR(PORT_CPLD_TCK) |= PIN_CPLD_TCK;
|
||||
GPIO_DIR(PORT_CPLD_TMS) |= PIN_CPLD_TMS;
|
||||
GPIO_DIR(PORT_CPLD_TDI) |= PIN_CPLD_TDI;
|
||||
}
|
||||
|
||||
/* set pins as inputs so we don't interfere with an external JTAG device */
|
||||
void cpld_jtag_release(void) {
|
||||
scu_pinmux(SCU_PINMUX_CPLD_TDO, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION4);
|
||||
scu_pinmux(SCU_PINMUX_CPLD_TCK, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_PINMUX_CPLD_TMS, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_PINMUX_CPLD_TDI, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0);
|
||||
|
||||
GPIO_DIR(PORT_CPLD_TDO) &= ~PIN_CPLD_TDO;
|
||||
GPIO_DIR(PORT_CPLD_TCK) &= ~PIN_CPLD_TCK;
|
||||
GPIO_DIR(PORT_CPLD_TMS) &= ~PIN_CPLD_TMS;
|
||||
GPIO_DIR(PORT_CPLD_TDI) &= ~PIN_CPLD_TDI;
|
||||
}
|
||||
|
||||
/* return 0 if success else return error code see xsvfExecute() */
|
||||
int cpld_jtag_program(
|
||||
const uint32_t buffer_length,
|
||||
unsigned char* const buffer,
|
||||
refill_buffer_cb refill
|
||||
) {
|
||||
int error;
|
||||
cpld_jtag_setup();
|
||||
xsvf_buffer = buffer;
|
||||
xsvf_buffer_len = buffer_length;
|
||||
refill_buffer = refill;
|
||||
error = xsvfExecute();
|
||||
cpld_jtag_release();
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
/* this gets called by the XAPP058 code */
|
||||
unsigned char cpld_jtag_get_next_byte(void) {
|
||||
if (xsvf_pos == xsvf_buffer_len) {
|
||||
refill_buffer();
|
||||
xsvf_pos = 0;
|
||||
}
|
||||
|
||||
unsigned char byte = xsvf_buffer[xsvf_pos];
|
||||
xsvf_pos++;
|
||||
return byte;
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright 2013 Michael Ossmann <mike@ossmann.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __CPLD_JTAG_H__
|
||||
#define __CPLD_JTAG_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef void (*refill_buffer_cb)(void);
|
||||
|
||||
void cpld_jtag_release(void);
|
||||
|
||||
/* Return 0 if success else return error code see xsvfExecute() see micro.h.
|
||||
*
|
||||
* We expect the buffer to be initially full of data. After the entire
|
||||
* contents of the buffer has been streamed to the CPLD the given
|
||||
* refill_buffer callback will be called. */
|
||||
int cpld_jtag_program(
|
||||
const uint32_t buffer_length,
|
||||
unsigned char* const buffer,
|
||||
refill_buffer_cb refill
|
||||
);
|
||||
unsigned char cpld_jtag_get_next_byte(void);
|
||||
|
||||
#endif//__CPLD_JTAG_H__
|
||||
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
* Copyright 2013 Benjamin Vernoux <titanmkd@gmail.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "fault_handler.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t r0;
|
||||
uint32_t r1;
|
||||
uint32_t r2;
|
||||
uint32_t r3;
|
||||
uint32_t r12;
|
||||
uint32_t lr; /* Link Register. */
|
||||
uint32_t pc; /* Program Counter. */
|
||||
uint32_t psr;/* Program Status Register. */
|
||||
} hard_fault_stack_t;
|
||||
|
||||
__attribute__((naked))
|
||||
void hard_fault_handler(void) {
|
||||
__asm__("TST LR, #4");
|
||||
__asm__("ITE EQ");
|
||||
__asm__("MRSEQ R0, MSP");
|
||||
__asm__("MRSNE R0, PSP");
|
||||
__asm__("B hard_fault_handler_c");
|
||||
}
|
||||
|
||||
volatile hard_fault_stack_t* hard_fault_stack_pt;
|
||||
|
||||
__attribute__((used)) void hard_fault_handler_c(uint32_t* args)
|
||||
{
|
||||
/* hard_fault_stack_pt contains registers saved before the hard fault */
|
||||
hard_fault_stack_pt = (hard_fault_stack_t*)args;
|
||||
|
||||
// args[0-7]: r0, r1, r2, r3, r12, lr, pc, psr
|
||||
// Other interesting registers to examine:
|
||||
// CFSR: Configurable Fault Status Register
|
||||
// HFSR: Hard Fault Status Register
|
||||
// DFSR: Debug Fault Status Register
|
||||
// AFSR: Auxiliary Fault Status Register
|
||||
// MMAR: MemManage Fault Address Register
|
||||
// BFAR: Bus Fault Address Register
|
||||
|
||||
/*
|
||||
if( SCB->HFSR & SCB_HFSR_FORCED ) {
|
||||
if( SCB->CFSR & SCB_CFSR_BFSR_BFARVALID ) {
|
||||
SCB->BFAR;
|
||||
if( SCB->CFSR & CSCB_CFSR_BFSR_PRECISERR ) {
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
while(1);
|
||||
}
|
||||
|
||||
void mem_manage_handler() {
|
||||
while(1);
|
||||
}
|
||||
|
||||
void bus_fault_handler() {
|
||||
while(1);
|
||||
}
|
||||
|
||||
void usage_fault_handler() {
|
||||
while(1);
|
||||
}
|
||||
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __FAULT_HANDLER__
|
||||
#define __FAULT_HANDLER__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <libopencm3/cm3/memorymap.h>
|
||||
|
||||
// TODO: Move all this to a Cortex-M(?) include file, since these
|
||||
// structures are supposedly the same between processors (to an
|
||||
// undetermined extent).
|
||||
typedef struct armv7m_scb_t armv7m_scb_t;
|
||||
struct armv7m_scb_t {
|
||||
volatile const uint32_t CPUID;
|
||||
volatile uint32_t ICSR;
|
||||
volatile uint32_t VTOR;
|
||||
volatile uint32_t AIRCR;
|
||||
volatile uint32_t SCR;
|
||||
volatile uint32_t CCR;
|
||||
volatile uint32_t SHPR1;
|
||||
volatile uint32_t SHPR2;
|
||||
volatile uint32_t SHPR3;
|
||||
volatile uint32_t SHCSR;
|
||||
volatile uint32_t CFSR;
|
||||
volatile uint32_t HFSR;
|
||||
volatile uint32_t DFSR;
|
||||
volatile uint32_t MMFAR;
|
||||
volatile uint32_t BFAR;
|
||||
volatile uint32_t AFSR;
|
||||
volatile const uint32_t ID_PFR0;
|
||||
volatile const uint32_t ID_PFR1;
|
||||
volatile const uint32_t ID_DFR0;
|
||||
volatile const uint32_t ID_AFR0;
|
||||
volatile const uint32_t ID_MMFR0;
|
||||
volatile const uint32_t ID_MMFR1;
|
||||
volatile const uint32_t ID_MMFR2;
|
||||
volatile const uint32_t ID_MMFR3;
|
||||
volatile const uint32_t ID_ISAR0;
|
||||
volatile const uint32_t ID_ISAR1;
|
||||
volatile const uint32_t ID_ISAR2;
|
||||
volatile const uint32_t ID_ISAR3;
|
||||
volatile const uint32_t ID_ISAR4;
|
||||
volatile const uint32_t __reserved_0x74_0x87[5];
|
||||
volatile uint32_t CPACR;
|
||||
} __attribute__((packed));
|
||||
|
||||
static armv7m_scb_t* const SCB = (armv7m_scb_t*)SCB_BASE;
|
||||
|
||||
#define SCB_HFSR_DEBUGEVT (1 << 31)
|
||||
#define SCB_HFSR_FORCED (1 << 30)
|
||||
#define SCB_HFSR_VECTTBL (1 << 1)
|
||||
|
||||
#endif//__FAULT_HANDLER__
|
||||
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright 2013 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <gpdma.h>
|
||||
|
||||
#include <libopencm3/lpc43xx/gpdma.h>
|
||||
|
||||
void gpdma_controller_enable() {
|
||||
GPDMA_CONFIG |= GPDMA_CONFIG_E(1);
|
||||
while( (GPDMA_CONFIG & GPDMA_CONFIG_E_MASK) == 0 );
|
||||
}
|
||||
|
||||
void gpdma_channel_enable(const uint_fast8_t channel) {
|
||||
GPDMA_CCONFIG(channel) |= GPDMA_CCONFIG_E(1);
|
||||
}
|
||||
|
||||
void gpdma_channel_disable(const uint_fast8_t channel) {
|
||||
GPDMA_CCONFIG(channel) &= ~GPDMA_CCONFIG_E_MASK;
|
||||
while( (GPDMA_ENBLDCHNS & GPDMA_ENBLDCHNS_ENABLEDCHANNELS(1 << channel)) );
|
||||
}
|
||||
|
||||
void gpdma_channel_interrupt_tc_clear(const uint_fast8_t channel) {
|
||||
GPDMA_INTTCCLEAR = GPDMA_INTTCCLEAR_INTTCCLEAR(1 << channel);
|
||||
}
|
||||
|
||||
void gpdma_channel_interrupt_error_clear(const uint_fast8_t channel) {
|
||||
GPDMA_INTERRCLR = GPDMA_INTERRCLR_INTERRCLR(1 << channel);
|
||||
}
|
||||
|
||||
void gpdma_lli_enable_interrupt(gpdma_lli_t* const lli) {
|
||||
lli->ccontrol |= GPDMA_CCONTROL_I(1);
|
||||
}
|
||||
|
||||
void gpdma_lli_create_loop(gpdma_lli_t* const lli, const size_t lli_count) {
|
||||
for(size_t i=0; i<lli_count; i++) {
|
||||
gpdma_lli_t* const next_lli = &lli[(i + 1) % lli_count];
|
||||
lli[i].clli = (lli[i].clli & ~GPDMA_CLLI_LLI_MASK) | GPDMA_CLLI_LLI((uint32_t)next_lli >> 2);
|
||||
}
|
||||
}
|
||||
|
||||
void gpdma_lli_create_oneshot(gpdma_lli_t* const lli, const size_t lli_count) {
|
||||
gpdma_lli_create_loop(lli, lli_count);
|
||||
lli[lli_count - 1].clli &= ~GPDMA_CLLI_LLI_MASK;
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright 2013 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GPDMA_H__
|
||||
#define __GPDMA_H__
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include <libopencm3/lpc43xx/gpdma.h>
|
||||
|
||||
void gpdma_controller_enable();
|
||||
|
||||
void gpdma_channel_enable(const uint_fast8_t channel);
|
||||
void gpdma_channel_disable(const uint_fast8_t channel);
|
||||
|
||||
void gpdma_channel_interrupt_tc_clear(const uint_fast8_t channel);
|
||||
void gpdma_channel_interrupt_error_clear(const uint_fast8_t channel);
|
||||
|
||||
void gpdma_lli_enable_interrupt(gpdma_lli_t* const lli);
|
||||
|
||||
void gpdma_lli_create_loop(gpdma_lli_t* const lli, const size_t lli_count);
|
||||
void gpdma_lli_create_oneshot(gpdma_lli_t* const lli, const size_t lli_count);
|
||||
|
||||
#endif/*__GPDMA_H__*/
|
||||
@ -0,0 +1,644 @@
|
||||
/*
|
||||
* Copyright 2012 Michael Ossmann <mike@ossmann.com>
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
* Copyright 2013 Benjamin Vernoux <titanmkd@gmail.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "hackrf_core.h"
|
||||
#include "si5351c.h"
|
||||
#include "max2837.h"
|
||||
#include "rffc5071.h"
|
||||
#include "sgpio.h"
|
||||
#include "rf_path.h"
|
||||
#include <libopencm3/lpc43xx/i2c.h>
|
||||
#include <libopencm3/lpc43xx/cgu.h>
|
||||
#include <libopencm3/lpc43xx/gpio.h>
|
||||
#include <libopencm3/lpc43xx/scu.h>
|
||||
#include <libopencm3/lpc43xx/ssp.h>
|
||||
|
||||
#define WAIT_CPU_CLOCK_INIT_DELAY (10000)
|
||||
|
||||
void delay(uint32_t duration)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
for (i = 0; i < duration; i++)
|
||||
__asm__("nop");
|
||||
}
|
||||
|
||||
/* GCD algo from wikipedia */
|
||||
/* http://en.wikipedia.org/wiki/Greatest_common_divisor */
|
||||
static uint32_t
|
||||
gcd(uint32_t u, uint32_t v)
|
||||
{
|
||||
int s;
|
||||
|
||||
if (!u || !v)
|
||||
return u | v;
|
||||
|
||||
for (s=0; !((u|v)&1); s++) {
|
||||
u >>= 1;
|
||||
v >>= 1;
|
||||
}
|
||||
|
||||
while (!(u&1))
|
||||
u >>= 1;
|
||||
|
||||
do {
|
||||
while (!(v&1))
|
||||
v >>= 1;
|
||||
|
||||
if (u>v) {
|
||||
uint32_t t;
|
||||
t = v;
|
||||
v = u;
|
||||
u = t;
|
||||
}
|
||||
|
||||
v = v - u;
|
||||
}
|
||||
while (v);
|
||||
|
||||
return u << s;
|
||||
}
|
||||
|
||||
bool sample_rate_frac_set(uint32_t rate_num, uint32_t rate_denom)
|
||||
{
|
||||
const uint64_t VCO_FREQ = 800 * 1000 * 1000; /* 800 MHz */
|
||||
uint32_t MSx_P1,MSx_P2,MSx_P3;
|
||||
uint32_t a, b, c;
|
||||
uint32_t rem;
|
||||
|
||||
/* Find best config */
|
||||
a = (VCO_FREQ * rate_denom) / rate_num;
|
||||
|
||||
rem = (VCO_FREQ * rate_denom) - (a * rate_num);
|
||||
|
||||
if (!rem) {
|
||||
/* Integer mode */
|
||||
b = 0;
|
||||
c = 1;
|
||||
} else {
|
||||
/* Fractional */
|
||||
uint32_t g = gcd(rem, rate_num);
|
||||
rem /= g;
|
||||
rate_num /= g;
|
||||
|
||||
if (rate_num < (1<<20)) {
|
||||
/* Perfect match */
|
||||
b = rem;
|
||||
c = rate_num;
|
||||
} else {
|
||||
/* Approximate */
|
||||
c = (1<<20) - 1;
|
||||
b = ((uint64_t)c * (uint64_t)rem) / rate_num;
|
||||
|
||||
g = gcd(b, c);
|
||||
b /= g;
|
||||
c /= g;
|
||||
}
|
||||
}
|
||||
|
||||
/* Can we enable integer mode ? */
|
||||
if (a & 0x1 || b)
|
||||
si5351c_set_int_mode(0, 0);
|
||||
else
|
||||
si5351c_set_int_mode(0, 1);
|
||||
|
||||
/* Final MS values */
|
||||
MSx_P1 = 128*a + (128 * b/c) - 512;
|
||||
MSx_P2 = (128*b) % c;
|
||||
MSx_P3 = c;
|
||||
|
||||
/* MS0/CLK0 is the source for the MAX5864/CPLD (CODEC_CLK). */
|
||||
si5351c_configure_multisynth(0, MSx_P1, MSx_P2, MSx_P3, 1);
|
||||
|
||||
/* MS0/CLK1 is the source for the CPLD (CODEC_X2_CLK). */
|
||||
si5351c_configure_multisynth(1, 0, 0, 0, 0);//p1 doesn't matter
|
||||
|
||||
/* MS0/CLK2 is the source for SGPIO (CODEC_X2_CLK) */
|
||||
si5351c_configure_multisynth(2, 0, 0, 0, 0);//p1 doesn't matter
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool sample_rate_set(const uint32_t sample_rate_hz) {
|
||||
#ifdef JELLYBEAN
|
||||
/* Due to design issues, Jellybean/Lemondrop frequency plan is limited.
|
||||
* Long version of the story: The MAX2837 reference frequency
|
||||
* originates from the same PLL as the sample clocks, and in order to
|
||||
* keep the sample clocks in phase and keep jitter noise down, the MAX2837
|
||||
* and sample clocks must be integer-related.
|
||||
*/
|
||||
uint32_t r_div_sample = 2;
|
||||
uint32_t r_div_sgpio = 1;
|
||||
|
||||
switch( sample_rate_hz ) {
|
||||
case 5000000:
|
||||
r_div_sample = 3; /* 800 MHz / 20 / 8 = 5 MHz */
|
||||
r_div_sgpio = 2; /* 800 MHz / 20 / 4 = 10 MHz */
|
||||
break;
|
||||
|
||||
case 10000000:
|
||||
r_div_sample = 2; /* 800 MHz / 20 / 4 = 10 MHz */
|
||||
r_div_sgpio = 1; /* 800 MHz / 20 / 2 = 20 MHz */
|
||||
break;
|
||||
|
||||
case 20000000:
|
||||
r_div_sample = 1; /* 800 MHz / 20 / 2 = 20 MHz */
|
||||
r_div_sgpio = 0; /* 800 MHz / 20 / 1 = 40 MHz */
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
/* NOTE: Because MS1, 2, 3 outputs are slaved to PLLA, the p1, p2, p3
|
||||
* values are irrelevant. */
|
||||
|
||||
/* MS0/CLK1 is the source for the MAX5864 codec. */
|
||||
si5351c_configure_multisynth(1, 4608, 0, 1, r_div_sample);
|
||||
|
||||
/* MS0/CLK2 is the source for the CPLD codec clock (same as CLK1). */
|
||||
si5351c_configure_multisynth(2, 4608, 0, 1, r_div_sample);
|
||||
|
||||
/* MS0/CLK3 is the source for the SGPIO clock. */
|
||||
si5351c_configure_multisynth(3, 4608, 0, 1, r_div_sgpio);
|
||||
|
||||
return true;
|
||||
#endif
|
||||
|
||||
#if (defined JAWBREAKER || defined HACKRF_ONE)
|
||||
uint32_t p1 = 4608;
|
||||
uint32_t p2 = 0;
|
||||
uint32_t p3 = 0;
|
||||
|
||||
switch(sample_rate_hz) {
|
||||
case 8000000:
|
||||
p1 = SI_INTDIV(50); // 800MHz / 50 = 16 MHz (SGPIO), 8 MHz (codec)
|
||||
break;
|
||||
|
||||
case 9216000:
|
||||
// 43.40277777777778: a = 43; b = 29; c = 72
|
||||
p1 = 5043;
|
||||
p2 = 40;
|
||||
p3 = 72;
|
||||
break;
|
||||
|
||||
case 10000000:
|
||||
p1 = SI_INTDIV(40); // 800MHz / 40 = 20 MHz (SGPIO), 10 MHz (codec)
|
||||
break;
|
||||
|
||||
case 12288000:
|
||||
// 32.552083333333336: a = 32; b = 159; c = 288
|
||||
p1 = 3654;
|
||||
p2 = 192;
|
||||
p3 = 288;
|
||||
break;
|
||||
|
||||
case 12500000:
|
||||
p1 = SI_INTDIV(32); // 800MHz / 32 = 25 MHz (SGPIO), 12.5 MHz (codec)
|
||||
break;
|
||||
|
||||
case 16000000:
|
||||
p1 = SI_INTDIV(25); // 800MHz / 25 = 32 MHz (SGPIO), 16 MHz (codec)
|
||||
break;
|
||||
|
||||
case 18432000:
|
||||
// 21.70138888889: a = 21; b = 101; c = 144
|
||||
p1 = 2265;
|
||||
p2 = 112;
|
||||
p3 = 144;
|
||||
break;
|
||||
|
||||
case 20000000:
|
||||
p1 = SI_INTDIV(20); // 800MHz / 20 = 40 MHz (SGPIO), 20 MHz (codec)
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
/* MS0/CLK0 is the source for the MAX5864/CPLD (CODEC_CLK). */
|
||||
si5351c_configure_multisynth(0, p1, p2, p3, 1);
|
||||
|
||||
/* MS0/CLK1 is the source for the CPLD (CODEC_X2_CLK). */
|
||||
si5351c_configure_multisynth(1, p1, 0, 1, 0);//p1 doesn't matter
|
||||
|
||||
/* MS0/CLK2 is the source for SGPIO (CODEC_X2_CLK) */
|
||||
si5351c_configure_multisynth(2, p1, 0, 1, 0);//p1 doesn't matter
|
||||
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool baseband_filter_bandwidth_set(const uint32_t bandwidth_hz) {
|
||||
return max2837_set_lpf_bandwidth(bandwidth_hz);
|
||||
}
|
||||
|
||||
/* clock startup for Jellybean with Lemondrop attached
|
||||
Configure PLL1 to max speed (204MHz).
|
||||
Note: PLL1 clock is used by M4/M0 core, Peripheral, APB1. */
|
||||
void cpu_clock_init(void)
|
||||
{
|
||||
/* use IRC as clock source for APB1 (including I2C0) */
|
||||
CGU_BASE_APB1_CLK = CGU_BASE_APB1_CLK_CLK_SEL(CGU_SRC_IRC);
|
||||
|
||||
/* use IRC as clock source for APB3 */
|
||||
CGU_BASE_APB3_CLK = CGU_BASE_APB3_CLK_CLK_SEL(CGU_SRC_IRC);
|
||||
|
||||
i2c0_init(15);
|
||||
|
||||
si5351c_disable_all_outputs();
|
||||
si5351c_disable_oeb_pin_control();
|
||||
si5351c_power_down_all_clocks();
|
||||
si5351c_set_crystal_configuration();
|
||||
si5351c_enable_xo_and_ms_fanout();
|
||||
si5351c_configure_pll_sources();
|
||||
si5351c_configure_pll_multisynth();
|
||||
|
||||
#ifdef JELLYBEAN
|
||||
/*
|
||||
* Jellybean/Lemondrop clocks:
|
||||
* CLK0 -> MAX2837
|
||||
* CLK1 -> MAX5864/CPLD.GCLK0
|
||||
* CLK2 -> CPLD.GCLK1
|
||||
* CLK3 -> CPLD.GCLK2
|
||||
* CLK4 -> LPC4330
|
||||
* CLK5 -> RFFC5072
|
||||
* CLK6 -> extra
|
||||
* CLK7 -> extra
|
||||
*/
|
||||
|
||||
/* MS0/CLK0 is the source for the MAX2837 clock input. */
|
||||
si5351c_configure_multisynth(0, 2048, 0, 1, 0); /* 40MHz */
|
||||
|
||||
/* MS4/CLK4 is the source for the LPC43xx microcontroller. */
|
||||
si5351c_configure_multisynth(4, 8021, 0, 3, 0); /* 12MHz */
|
||||
|
||||
/* MS5/CLK5 is the source for the RFFC5071 mixer. */
|
||||
si5351c_configure_multisynth(5, 1536, 0, 1, 0); /* 50MHz */
|
||||
#endif
|
||||
|
||||
#if (defined JAWBREAKER || defined HACKRF_ONE)
|
||||
/*
|
||||
* Jawbreaker clocks:
|
||||
* CLK0 -> MAX5864/CPLD
|
||||
* CLK1 -> CPLD
|
||||
* CLK2 -> SGPIO
|
||||
* CLK3 -> external clock output
|
||||
* CLK4 -> RFFC5072
|
||||
* CLK5 -> MAX2837
|
||||
* CLK6 -> none
|
||||
* CLK7 -> LPC4330 (but LPC4330 starts up on its own crystal)
|
||||
*/
|
||||
|
||||
/* MS3/CLK3 is the source for the external clock output. */
|
||||
si5351c_configure_multisynth(3, 80*128-512, 0, 1, 0); /* 800/80 = 10MHz */
|
||||
|
||||
/* MS4/CLK4 is the source for the RFFC5071 mixer. */
|
||||
si5351c_configure_multisynth(4, 16*128-512, 0, 1, 0); /* 800/16 = 50MHz */
|
||||
|
||||
/* MS5/CLK5 is the source for the MAX2837 clock input. */
|
||||
si5351c_configure_multisynth(5, 20*128-512, 0, 1, 0); /* 800/20 = 40MHz */
|
||||
|
||||
/* MS6/CLK6 is unused. */
|
||||
/* MS7/CLK7 is the source for the LPC43xx microcontroller. */
|
||||
uint8_t ms7data[] = { 90, 255, 20, 0 };
|
||||
si5351c_write(ms7data, sizeof(ms7data));
|
||||
#endif
|
||||
|
||||
/* Set to 10 MHz, the common rate between Jellybean and Jawbreaker. */
|
||||
sample_rate_set(10000000);
|
||||
|
||||
si5351c_set_clock_source(PLL_SOURCE_XTAL);
|
||||
// soft reset
|
||||
uint8_t resetdata[] = { 177, 0xac };
|
||||
si5351c_write(resetdata, sizeof(resetdata));
|
||||
si5351c_enable_clock_outputs();
|
||||
|
||||
//FIXME disable I2C
|
||||
/* Kick I2C0 down to 400kHz when we switch over to APB1 clock = 204MHz */
|
||||
i2c0_init(255);
|
||||
|
||||
/*
|
||||
* 12MHz clock is entering LPC XTAL1/OSC input now. On
|
||||
* Jellybean/Lemondrop, this is a signal from the clock generator. On
|
||||
* Jawbreaker, there is a 12 MHz crystal at the LPC.
|
||||
* Set up PLL1 to run from XTAL1 input.
|
||||
*/
|
||||
|
||||
//FIXME a lot of the details here should be in a CGU driver
|
||||
|
||||
#ifdef JELLYBEAN
|
||||
/* configure xtal oscillator for external clock input signal */
|
||||
CGU_XTAL_OSC_CTRL |= CGU_XTAL_OSC_CTRL_BYPASS;
|
||||
#endif
|
||||
|
||||
/* set xtal oscillator to low frequency mode */
|
||||
CGU_XTAL_OSC_CTRL &= ~CGU_XTAL_OSC_CTRL_HF_MASK;
|
||||
|
||||
/* power on the oscillator and wait until stable */
|
||||
CGU_XTAL_OSC_CTRL &= ~CGU_XTAL_OSC_CTRL_ENABLE_MASK;
|
||||
|
||||
/* Wait about 100us after Crystal Power ON */
|
||||
delay(WAIT_CPU_CLOCK_INIT_DELAY);
|
||||
|
||||
/* use XTAL_OSC as clock source for BASE_M4_CLK (CPU) */
|
||||
CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_XTAL) | CGU_BASE_M4_CLK_AUTOBLOCK(1));
|
||||
|
||||
/* use XTAL_OSC as clock source for APB1 */
|
||||
CGU_BASE_APB1_CLK = CGU_BASE_APB1_CLK_AUTOBLOCK(1)
|
||||
| CGU_BASE_APB1_CLK_CLK_SEL(CGU_SRC_XTAL);
|
||||
|
||||
/* use XTAL_OSC as clock source for APB3 */
|
||||
CGU_BASE_APB3_CLK = CGU_BASE_APB3_CLK_AUTOBLOCK(1)
|
||||
| CGU_BASE_APB3_CLK_CLK_SEL(CGU_SRC_XTAL);
|
||||
|
||||
cpu_clock_pll1_low_speed();
|
||||
|
||||
/* use PLL1 as clock source for BASE_M4_CLK (CPU) */
|
||||
CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_PLL1) | CGU_BASE_M4_CLK_AUTOBLOCK(1));
|
||||
|
||||
/* use XTAL_OSC as clock source for PLL0USB */
|
||||
CGU_PLL0USB_CTRL = CGU_PLL0USB_CTRL_PD(1)
|
||||
| CGU_PLL0USB_CTRL_AUTOBLOCK(1)
|
||||
| CGU_PLL0USB_CTRL_CLK_SEL(CGU_SRC_XTAL);
|
||||
while (CGU_PLL0USB_STAT & CGU_PLL0USB_STAT_LOCK_MASK);
|
||||
|
||||
/* configure PLL0USB to produce 480 MHz clock from 12 MHz XTAL_OSC */
|
||||
/* Values from User Manual v1.4 Table 94, for 12MHz oscillator. */
|
||||
CGU_PLL0USB_MDIV = 0x06167FFA;
|
||||
CGU_PLL0USB_NP_DIV = 0x00302062;
|
||||
CGU_PLL0USB_CTRL |= (CGU_PLL0USB_CTRL_PD(1)
|
||||
| CGU_PLL0USB_CTRL_DIRECTI(1)
|
||||
| CGU_PLL0USB_CTRL_DIRECTO(1)
|
||||
| CGU_PLL0USB_CTRL_CLKEN(1));
|
||||
|
||||
/* power on PLL0USB and wait until stable */
|
||||
CGU_PLL0USB_CTRL &= ~CGU_PLL0USB_CTRL_PD_MASK;
|
||||
while (!(CGU_PLL0USB_STAT & CGU_PLL0USB_STAT_LOCK_MASK));
|
||||
|
||||
/* use PLL0USB as clock source for USB0 */
|
||||
CGU_BASE_USB0_CLK = CGU_BASE_USB0_CLK_AUTOBLOCK(1)
|
||||
| CGU_BASE_USB0_CLK_CLK_SEL(CGU_SRC_PLL0USB);
|
||||
|
||||
/* Switch peripheral clock over to use PLL1 (204MHz) */
|
||||
CGU_BASE_PERIPH_CLK = CGU_BASE_PERIPH_CLK_AUTOBLOCK(1)
|
||||
| CGU_BASE_PERIPH_CLK_CLK_SEL(CGU_SRC_PLL1);
|
||||
|
||||
/* Switch APB1 clock over to use PLL1 (204MHz) */
|
||||
CGU_BASE_APB1_CLK = CGU_BASE_APB1_CLK_AUTOBLOCK(1)
|
||||
| CGU_BASE_APB1_CLK_CLK_SEL(CGU_SRC_PLL1);
|
||||
|
||||
/* Switch APB3 clock over to use PLL1 (204MHz) */
|
||||
CGU_BASE_APB3_CLK = CGU_BASE_APB3_CLK_AUTOBLOCK(1)
|
||||
| CGU_BASE_APB3_CLK_CLK_SEL(CGU_SRC_PLL1);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Configure PLL1 to low speed (48MHz).
|
||||
Note: PLL1 clock is used by M4/M0 core, Peripheral, APB1.
|
||||
This function shall be called after cpu_clock_init().
|
||||
This function is mainly used to lower power consumption.
|
||||
*/
|
||||
void cpu_clock_pll1_low_speed(void)
|
||||
{
|
||||
uint32_t pll_reg;
|
||||
|
||||
/* Configure PLL1 Clock (48MHz) */
|
||||
/* Integer mode:
|
||||
FCLKOUT = M*(FCLKIN/N)
|
||||
FCCO = 2*P*FCLKOUT = 2*P*M*(FCLKIN/N)
|
||||
*/
|
||||
pll_reg = CGU_PLL1_CTRL;
|
||||
/* Clear PLL1 bits */
|
||||
pll_reg &= ~( CGU_PLL1_CTRL_CLK_SEL_MASK | CGU_PLL1_CTRL_PD_MASK | CGU_PLL1_CTRL_FBSEL_MASK | /* CLK SEL, PowerDown , FBSEL */
|
||||
CGU_PLL1_CTRL_BYPASS_MASK | /* BYPASS */
|
||||
CGU_PLL1_CTRL_DIRECT_MASK | /* DIRECT */
|
||||
CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */
|
||||
/* Set PLL1 up to 12MHz * 4 = 48MHz. */
|
||||
pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_XTAL)
|
||||
| CGU_PLL1_CTRL_PSEL(0)
|
||||
| CGU_PLL1_CTRL_NSEL(0)
|
||||
| CGU_PLL1_CTRL_MSEL(3)
|
||||
| CGU_PLL1_CTRL_FBSEL(1)
|
||||
| CGU_PLL1_CTRL_DIRECT(1);
|
||||
CGU_PLL1_CTRL = pll_reg;
|
||||
/* wait until stable */
|
||||
while (!(CGU_PLL1_STAT & CGU_PLL1_STAT_LOCK_MASK));
|
||||
|
||||
/* Wait a delay after switch to new frequency with Direct mode */
|
||||
delay(WAIT_CPU_CLOCK_INIT_DELAY);
|
||||
}
|
||||
|
||||
/*
|
||||
Configure PLL1 (Main MCU Clock) to max speed (204MHz).
|
||||
Note: PLL1 clock is used by M4/M0 core, Peripheral, APB1.
|
||||
This function shall be called after cpu_clock_init().
|
||||
*/
|
||||
void cpu_clock_pll1_max_speed(void)
|
||||
{
|
||||
uint32_t pll_reg;
|
||||
|
||||
/* Configure PLL1 to Intermediate Clock (between 90 MHz and 110 MHz) */
|
||||
/* Integer mode:
|
||||
FCLKOUT = M*(FCLKIN/N)
|
||||
FCCO = 2*P*FCLKOUT = 2*P*M*(FCLKIN/N)
|
||||
*/
|
||||
pll_reg = CGU_PLL1_CTRL;
|
||||
/* Clear PLL1 bits */
|
||||
pll_reg &= ~( CGU_PLL1_CTRL_CLK_SEL_MASK | CGU_PLL1_CTRL_PD_MASK | CGU_PLL1_CTRL_FBSEL_MASK | /* CLK SEL, PowerDown , FBSEL */
|
||||
CGU_PLL1_CTRL_BYPASS_MASK | /* BYPASS */
|
||||
CGU_PLL1_CTRL_DIRECT_MASK | /* DIRECT */
|
||||
CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */
|
||||
/* Set PLL1 up to 12MHz * 8 = 96MHz. */
|
||||
pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_XTAL)
|
||||
| CGU_PLL1_CTRL_PSEL(0)
|
||||
| CGU_PLL1_CTRL_NSEL(0)
|
||||
| CGU_PLL1_CTRL_MSEL(7)
|
||||
| CGU_PLL1_CTRL_FBSEL(1);
|
||||
CGU_PLL1_CTRL = pll_reg;
|
||||
/* wait until stable */
|
||||
while (!(CGU_PLL1_STAT & CGU_PLL1_STAT_LOCK_MASK));
|
||||
|
||||
/* Wait before to switch to max speed */
|
||||
delay(WAIT_CPU_CLOCK_INIT_DELAY);
|
||||
|
||||
/* Configure PLL1 Max Speed */
|
||||
/* Direct mode: FCLKOUT = FCCO = M*(FCLKIN/N) */
|
||||
pll_reg = CGU_PLL1_CTRL;
|
||||
/* Clear PLL1 bits */
|
||||
pll_reg &= ~( CGU_PLL1_CTRL_CLK_SEL_MASK | CGU_PLL1_CTRL_PD_MASK | CGU_PLL1_CTRL_FBSEL_MASK | /* CLK SEL, PowerDown , FBSEL */
|
||||
CGU_PLL1_CTRL_BYPASS_MASK | /* BYPASS */
|
||||
CGU_PLL1_CTRL_DIRECT_MASK | /* DIRECT */
|
||||
CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */
|
||||
/* Set PLL1 up to 12MHz * 17 = 204MHz. */
|
||||
pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_XTAL)
|
||||
| CGU_PLL1_CTRL_PSEL(0)
|
||||
| CGU_PLL1_CTRL_NSEL(0)
|
||||
| CGU_PLL1_CTRL_MSEL(16)
|
||||
| CGU_PLL1_CTRL_FBSEL(1)
|
||||
| CGU_PLL1_CTRL_DIRECT(1);
|
||||
CGU_PLL1_CTRL = pll_reg;
|
||||
/* wait until stable */
|
||||
while (!(CGU_PLL1_STAT & CGU_PLL1_STAT_LOCK_MASK));
|
||||
|
||||
}
|
||||
|
||||
void ssp1_init(void)
|
||||
{
|
||||
/*
|
||||
* Configure CS_AD pin to keep the MAX5864 SPI disabled while we use the
|
||||
* SPI bus for the MAX2837. FIXME: this should probably be somewhere else.
|
||||
*/
|
||||
scu_pinmux(SCU_AD_CS, SCU_GPIO_FAST);
|
||||
GPIO_SET(PORT_AD_CS) = PIN_AD_CS;
|
||||
GPIO_DIR(PORT_AD_CS) |= PIN_AD_CS;
|
||||
|
||||
scu_pinmux(SCU_XCVR_CS, SCU_GPIO_FAST);
|
||||
GPIO_SET(PORT_XCVR_CS) = PIN_XCVR_CS;
|
||||
GPIO_DIR(PORT_XCVR_CS) |= PIN_XCVR_CS;
|
||||
|
||||
/* Configure SSP1 Peripheral (to be moved later in SSP driver) */
|
||||
scu_pinmux(SCU_SSP1_MISO, (SCU_SSP_IO | SCU_CONF_FUNCTION5));
|
||||
scu_pinmux(SCU_SSP1_MOSI, (SCU_SSP_IO | SCU_CONF_FUNCTION5));
|
||||
scu_pinmux(SCU_SSP1_SCK, (SCU_SSP_IO | SCU_CONF_FUNCTION1));
|
||||
}
|
||||
|
||||
void ssp1_set_mode_max2837(void)
|
||||
{
|
||||
/* FIXME speed up once everything is working reliably */
|
||||
/*
|
||||
// Freq About 0.0498MHz / 49.8KHz => Freq = PCLK / (CPSDVSR * [SCR+1]) with PCLK=PLL1=204MHz
|
||||
const uint8_t serial_clock_rate = 32;
|
||||
const uint8_t clock_prescale_rate = 128;
|
||||
*/
|
||||
// Freq About 4.857MHz => Freq = PCLK / (CPSDVSR * [SCR+1]) with PCLK=PLL1=204MHz
|
||||
const uint8_t serial_clock_rate = 21;
|
||||
const uint8_t clock_prescale_rate = 2;
|
||||
|
||||
ssp_init(SSP1_NUM,
|
||||
SSP_DATA_16BITS,
|
||||
SSP_FRAME_SPI,
|
||||
SSP_CPOL_0_CPHA_0,
|
||||
serial_clock_rate,
|
||||
clock_prescale_rate,
|
||||
SSP_MODE_NORMAL,
|
||||
SSP_MASTER,
|
||||
SSP_SLAVE_OUT_ENABLE);
|
||||
}
|
||||
|
||||
void ssp1_set_mode_max5864(void)
|
||||
{
|
||||
/* FIXME speed up once everything is working reliably */
|
||||
/*
|
||||
// Freq About 0.0498MHz / 49.8KHz => Freq = PCLK / (CPSDVSR * [SCR+1]) with PCLK=PLL1=204MHz
|
||||
const uint8_t serial_clock_rate = 32;
|
||||
const uint8_t clock_prescale_rate = 128;
|
||||
*/
|
||||
// Freq About 4.857MHz => Freq = PCLK / (CPSDVSR * [SCR+1]) with PCLK=PLL1=204MHz
|
||||
const uint8_t serial_clock_rate = 21;
|
||||
const uint8_t clock_prescale_rate = 2;
|
||||
|
||||
ssp_init(SSP1_NUM,
|
||||
SSP_DATA_8BITS,
|
||||
SSP_FRAME_SPI,
|
||||
SSP_CPOL_0_CPHA_0,
|
||||
serial_clock_rate,
|
||||
clock_prescale_rate,
|
||||
SSP_MODE_NORMAL,
|
||||
SSP_MASTER,
|
||||
SSP_SLAVE_OUT_ENABLE);
|
||||
}
|
||||
|
||||
void pin_setup(void) {
|
||||
/* Release CPLD JTAG pins */
|
||||
scu_pinmux(SCU_PINMUX_CPLD_TDO, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION4);
|
||||
scu_pinmux(SCU_PINMUX_CPLD_TCK, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_PINMUX_CPLD_TMS, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_PINMUX_CPLD_TDI, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0);
|
||||
|
||||
GPIO_DIR(PORT_CPLD_TDO) &= ~PIN_CPLD_TDO;
|
||||
GPIO_DIR(PORT_CPLD_TCK) &= ~PIN_CPLD_TCK;
|
||||
GPIO_DIR(PORT_CPLD_TMS) &= ~PIN_CPLD_TMS;
|
||||
GPIO_DIR(PORT_CPLD_TDI) &= ~PIN_CPLD_TDI;
|
||||
|
||||
/* Configure SCU Pin Mux as GPIO */
|
||||
scu_pinmux(SCU_PINMUX_LED1, SCU_GPIO_NOPULL);
|
||||
scu_pinmux(SCU_PINMUX_LED2, SCU_GPIO_NOPULL);
|
||||
scu_pinmux(SCU_PINMUX_LED3, SCU_GPIO_NOPULL);
|
||||
|
||||
scu_pinmux(SCU_PINMUX_EN1V8, SCU_GPIO_NOPULL);
|
||||
|
||||
/* Configure USB indicators */
|
||||
#if (defined JELLYBEAN || defined JAWBREAKER)
|
||||
scu_pinmux(SCU_PINMUX_USB_LED0, SCU_CONF_FUNCTION3);
|
||||
scu_pinmux(SCU_PINMUX_USB_LED1, SCU_CONF_FUNCTION3);
|
||||
#endif
|
||||
|
||||
/* Configure all GPIO as Input (safe state) */
|
||||
GPIO0_DIR = 0;
|
||||
GPIO1_DIR = 0;
|
||||
GPIO2_DIR = 0;
|
||||
GPIO3_DIR = 0;
|
||||
GPIO4_DIR = 0;
|
||||
GPIO5_DIR = 0;
|
||||
GPIO6_DIR = 0;
|
||||
GPIO7_DIR = 0;
|
||||
|
||||
/* Configure GPIO2[1/2/8] (P4_1/2 P6_12) as output. */
|
||||
GPIO2_DIR |= (PIN_LED1 | PIN_LED2 | PIN_LED3);
|
||||
|
||||
/* GPIO3[6] on P6_10 as output. */
|
||||
GPIO3_DIR |= PIN_EN1V8;
|
||||
|
||||
rf_path_pin_setup();
|
||||
|
||||
/* Configure SSP1 Peripheral (to be moved later in SSP driver) */
|
||||
scu_pinmux(SCU_SSP1_MISO, (SCU_SSP_IO | SCU_CONF_FUNCTION5));
|
||||
scu_pinmux(SCU_SSP1_MOSI, (SCU_SSP_IO | SCU_CONF_FUNCTION5));
|
||||
scu_pinmux(SCU_SSP1_SCK, (SCU_SSP_IO | SCU_CONF_FUNCTION1));
|
||||
scu_pinmux(SCU_SSP1_SSEL, (SCU_SSP_IO | SCU_CONF_FUNCTION1));
|
||||
|
||||
/* Configure external clock in */
|
||||
scu_pinmux(SCU_PINMUX_GP_CLKIN, SCU_CLK_IN | SCU_CONF_FUNCTION1);
|
||||
|
||||
sgpio_configure_pin_functions();
|
||||
}
|
||||
|
||||
void enable_1v8_power(void) {
|
||||
gpio_set(PORT_EN1V8, PIN_EN1V8);
|
||||
}
|
||||
|
||||
void disable_1v8_power(void) {
|
||||
gpio_clear(PORT_EN1V8, PIN_EN1V8);
|
||||
}
|
||||
|
||||
#ifdef HACKRF_ONE
|
||||
void enable_rf_power(void) {
|
||||
gpio_clear(PORT_NO_VAA_ENABLE, PIN_NO_VAA_ENABLE);
|
||||
}
|
||||
|
||||
void disable_rf_power(void) {
|
||||
gpio_set(PORT_NO_VAA_ENABLE, PIN_NO_VAA_ENABLE);
|
||||
}
|
||||
#endif
|
||||
@ -0,0 +1,380 @@
|
||||
/*
|
||||
* Copyright 2012 Michael Ossmann <mike@ossmann.com>
|
||||
* Copyright 2012 Benjamin Vernoux <titanmkd@gmail.com>
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __HACKRF_CORE_H
|
||||
#define __HACKRF_CORE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/* hardware identification number */
|
||||
#define BOARD_ID_JELLYBEAN 0
|
||||
#define BOARD_ID_JAWBREAKER 1
|
||||
#define BOARD_ID_HACKRF_ONE 2
|
||||
|
||||
#ifdef JELLYBEAN
|
||||
#define BOARD_ID BOARD_ID_JELLYBEAN
|
||||
#endif
|
||||
|
||||
#ifdef JAWBREAKER
|
||||
#define BOARD_ID BOARD_ID_JAWBREAKER
|
||||
#endif
|
||||
|
||||
#ifdef HACKRF_ONE
|
||||
#define BOARD_ID BOARD_ID_HACKRF_ONE
|
||||
#endif
|
||||
|
||||
/*
|
||||
* SCU PinMux
|
||||
*/
|
||||
|
||||
/* GPIO Output PinMux */
|
||||
#define SCU_PINMUX_LED1 (P4_1) /* GPIO2[1] on P4_1 */
|
||||
#define SCU_PINMUX_LED2 (P4_2) /* GPIO2[2] on P4_2 */
|
||||
#define SCU_PINMUX_LED3 (P6_12) /* GPIO2[8] on P6_12 */
|
||||
|
||||
#define SCU_PINMUX_EN1V8 (P6_10) /* GPIO3[6] on P6_10 */
|
||||
|
||||
/* GPIO Input PinMux */
|
||||
#define SCU_PINMUX_BOOT0 (P1_1) /* GPIO0[8] on P1_1 */
|
||||
#define SCU_PINMUX_BOOT1 (P1_2) /* GPIO0[9] on P1_2 */
|
||||
#define SCU_PINMUX_BOOT2 (P2_8) /* GPIO5[7] on P2_8 */
|
||||
#define SCU_PINMUX_BOOT3 (P2_9) /* GPIO1[10] on P2_9 */
|
||||
|
||||
/* USB peripheral */
|
||||
#if (defined JELLYBEAN || defined JAWBREAKER)
|
||||
#define SCU_PINMUX_USB_LED0 (P6_8)
|
||||
#define SCU_PINMUX_USB_LED1 (P6_7)
|
||||
#endif
|
||||
|
||||
/* SSP1 Peripheral PinMux */
|
||||
#define SCU_SSP1_MISO (P1_3) /* P1_3 */
|
||||
#define SCU_SSP1_MOSI (P1_4) /* P1_4 */
|
||||
#define SCU_SSP1_SCK (P1_19) /* P1_19 */
|
||||
#define SCU_SSP1_SSEL (P1_20) /* P1_20 */
|
||||
|
||||
/* CPLD JTAG interface */
|
||||
#define SCU_PINMUX_CPLD_TDO (P9_5) /* GPIO5[18] */
|
||||
#define SCU_PINMUX_CPLD_TCK (P6_1) /* GPIO3[ 0] */
|
||||
#ifdef HACKRF_ONE
|
||||
#define SCU_PINMUX_CPLD_TMS (P6_5) /* GPIO3[ 4] */
|
||||
#define SCU_PINMUX_CPLD_TDI (P6_2) /* GPIO3[ 1] */
|
||||
#else
|
||||
#define SCU_PINMUX_CPLD_TMS (P6_2) /* GPIO3[ 1] */
|
||||
#define SCU_PINMUX_CPLD_TDI (P6_5) /* GPIO3[ 4] */
|
||||
#endif
|
||||
|
||||
/* CPLD SGPIO interface */
|
||||
#define SCU_PINMUX_SGPIO0 (P0_0)
|
||||
#define SCU_PINMUX_SGPIO1 (P0_1)
|
||||
#define SCU_PINMUX_SGPIO2 (P1_15)
|
||||
#define SCU_PINMUX_SGPIO3 (P1_16)
|
||||
#define SCU_PINMUX_SGPIO4 (P6_3)
|
||||
#define SCU_PINMUX_SGPIO5 (P6_6)
|
||||
#define SCU_PINMUX_SGPIO6 (P2_2)
|
||||
#define SCU_PINMUX_SGPIO7 (P1_0)
|
||||
#ifdef JELLYBEAN
|
||||
#define SCU_PINMUX_SGPIO8 (P1_12)
|
||||
#endif
|
||||
#if (defined JAWBREAKER || defined HACKRF_ONE)
|
||||
#define SCU_PINMUX_SGPIO8 (P9_6)
|
||||
#endif
|
||||
#define SCU_PINMUX_SGPIO9 (P4_3)
|
||||
#define SCU_PINMUX_SGPIO10 (P1_14)
|
||||
#define SCU_PINMUX_SGPIO11 (P1_17)
|
||||
#define SCU_PINMUX_SGPIO12 (P1_18)
|
||||
#define SCU_PINMUX_SGPIO13 (P4_8)
|
||||
#define SCU_PINMUX_SGPIO14 (P4_9)
|
||||
#define SCU_PINMUX_SGPIO15 (P4_10)
|
||||
|
||||
/* MAX2837 GPIO (XCVR_CTL) PinMux */
|
||||
#ifdef JELLYBEAN
|
||||
#define SCU_XCVR_RXHP (P4_0) /* GPIO2[0] on P4_0 */
|
||||
#define SCU_XCVR_B1 (P5_0) /* GPIO2[9] on P5_0 */
|
||||
#define SCU_XCVR_B2 (P5_1) /* GPIO2[10] on P5_1 */
|
||||
#define SCU_XCVR_B3 (P5_2) /* GPIO2[11] on P5_2 */
|
||||
#define SCU_XCVR_B4 (P5_3) /* GPIO2[12] on P5_3 */
|
||||
#define SCU_XCVR_B5 (P5_4) /* GPIO2[13] on P5_4 */
|
||||
#define SCU_XCVR_B6 (P5_5) /* GPIO2[14] on P5_5 */
|
||||
#define SCU_XCVR_B7 (P5_6) /* GPIO2[15] on P5_6 */
|
||||
#endif
|
||||
#define SCU_XCVR_ENABLE (P4_6) /* GPIO2[6] on P4_6 */
|
||||
#define SCU_XCVR_RXENABLE (P4_5) /* GPIO2[5] on P4_5 */
|
||||
#define SCU_XCVR_TXENABLE (P4_4) /* GPIO2[4] on P4_4 */
|
||||
#define SCU_XCVR_CS (P1_20) /* GPIO0[15] on P1_20 */
|
||||
|
||||
/* MAX5864 SPI chip select (AD_CS) GPIO PinMux */
|
||||
#define SCU_AD_CS (P5_7) /* GPIO2[7] on P5_7 */
|
||||
|
||||
/* RFFC5071 GPIO serial interface PinMux */
|
||||
#ifdef JELLYBEAN
|
||||
#define SCU_MIXER_ENX (P7_0) /* GPIO3[8] on P7_0 */
|
||||
#define SCU_MIXER_SCLK (P7_1) /* GPIO3[9] on P7_1 */
|
||||
#define SCU_MIXER_SDATA (P7_2) /* GPIO3[10] on P7_2 */
|
||||
#define SCU_MIXER_RESETX (P7_3) /* GPIO3[11] on P7_3 */
|
||||
#endif
|
||||
#if (defined JAWBREAKER || defined HACKRF_ONE)
|
||||
#define SCU_MIXER_ENX (P5_4) /* GPIO2[13] on P5_4 */
|
||||
#define SCU_MIXER_SCLK (P2_6) /* GPIO5[6] on P2_6 */
|
||||
#define SCU_MIXER_SDATA (P6_4) /* GPIO3[3] on P6_4 */
|
||||
#define SCU_MIXER_RESETX (P5_5) /* GPIO2[14] on P5_5 */
|
||||
#endif
|
||||
|
||||
/* RF LDO control */
|
||||
#ifdef JAWBREAKER
|
||||
#define SCU_RF_LDO_ENABLE (P5_0) /* GPIO2[9] on P5_0 */
|
||||
#endif
|
||||
|
||||
/* RF supply (VAA) control */
|
||||
#ifdef HACKRF_ONE
|
||||
#define SCU_NO_VAA_ENABLE (P5_0) /* GPIO2[9] on P5_0 */
|
||||
#endif
|
||||
|
||||
/* SPI flash */
|
||||
#define SCU_SSP0_MISO (P3_6)
|
||||
#define SCU_SSP0_MOSI (P3_7)
|
||||
#define SCU_SSP0_SCK (P3_3)
|
||||
#define SCU_SSP0_SSEL (P3_8) /* GPIO5[11] on P3_8 */
|
||||
#define SCU_FLASH_HOLD (P3_4) /* GPIO1[14] on P3_4 */
|
||||
#define SCU_FLASH_WP (P3_5) /* GPIO1[15] on P3_5 */
|
||||
|
||||
/* RF switch control */
|
||||
#ifdef HACKRF_ONE
|
||||
#define SCU_HP (P4_0) /* GPIO2[0] on P4_0 */
|
||||
#define SCU_LP (P5_1) /* GPIO2[10] on P5_1 */
|
||||
#define SCU_TX_MIX_BP (P5_2) /* GPIO2[11] on P5_2 */
|
||||
#define SCU_NO_MIX_BYPASS (P1_7) /* GPIO1[0] on P1_7 */
|
||||
#define SCU_RX_MIX_BP (P5_3) /* GPIO2[12] on P5_3 */
|
||||
#define SCU_TX_AMP (P5_6) /* GPIO2[15] on P5_6 */
|
||||
#define SCU_TX (P6_7) /* GPIO5[15] on P6_7 */
|
||||
#define SCU_MIX_BYPASS (P6_8) /* GPIO5[16] on P6_8 */
|
||||
#define SCU_RX (P2_5) /* GPIO5[5] on P2_5 */
|
||||
#define SCU_NO_TX_AMP_PWR (P6_9) /* GPIO3[5] on P6_9 */
|
||||
#define SCU_AMP_BYPASS (P2_10) /* GPIO0[14] on P2_10 */
|
||||
#define SCU_RX_AMP (P2_11) /* GPIO1[11] on P2_11 */
|
||||
#define SCU_NO_RX_AMP_PWR (P2_12) /* GPIO1[12] on P2_12 */
|
||||
#endif
|
||||
|
||||
/* TODO add other Pins */
|
||||
#define SCU_PINMUX_GPIO3_8 (P7_0) /* GPIO3[8] */
|
||||
#define SCU_PINMUX_GPIO3_9 (P7_1) /* GPIO3[9] */
|
||||
#define SCU_PINMUX_GPIO3_10 (P7_2) /* GPIO3[10] */
|
||||
#define SCU_PINMUX_GPIO3_11 (P7_3) /* GPIO3[11] */
|
||||
#define SCU_PINMUX_GPIO3_12 (P7_4) /* GPIO3[12] */
|
||||
#define SCU_PINMUX_GPIO3_13 (P7_5) /* GPIO3[13] */
|
||||
#define SCU_PINMUX_GPIO3_14 (P7_6) /* GPIO3[14] */
|
||||
#define SCU_PINMUX_GPIO3_15 (P7_7) /* GPIO3[15] */
|
||||
|
||||
#define SCU_PINMUX_SD_POW (P1_5) /* GPIO1[8] */
|
||||
#define SCU_PINMUX_SD_CMD (P1_6) /* GPIO1[9] */
|
||||
#define SCU_PINMUX_SD_VOLT0 (P1_8) /* GPIO1[1] */
|
||||
#define SCU_PINMUX_SD_DAT0 (P1_9) /* GPIO1[2] */
|
||||
#define SCU_PINMUX_SD_DAT1 (P1_10) /* GPIO1[3] */
|
||||
#define SCU_PINMUX_SD_DAT2 (P1_11) /* GPIO1[4] */
|
||||
#define SCU_PINMUX_SD_DAT3 (P1_12) /* GPIO1[5] */
|
||||
#define SCU_PINMUX_SD_CD (P1_13) /* GPIO1[6] */
|
||||
|
||||
#define SCU_PINMUX_U0_TXD (P2_0) /* GPIO5[0] */
|
||||
#define SCU_PINMUX_U0_RXD (P2_1) /* GPIO5[1] */
|
||||
|
||||
#define SCU_PINMUX_ISP (P2_7) /* GPIO0[7] */
|
||||
|
||||
#define SCU_PINMUX_GP_CLKIN (P4_7)
|
||||
|
||||
/*
|
||||
* GPIO Pins
|
||||
*/
|
||||
|
||||
/* GPIO Output */
|
||||
#define PIN_LED1 (BIT1) /* GPIO2[1] on P4_1 */
|
||||
#define PIN_LED2 (BIT2) /* GPIO2[2] on P4_2 */
|
||||
#define PIN_LED3 (BIT8) /* GPIO2[8] on P6_12 */
|
||||
#define PORT_LED1_3 (GPIO2) /* PORT for LED1, 2 & 3 */
|
||||
|
||||
#define PIN_EN1V8 (BIT6) /* GPIO3[6] on P6_10 */
|
||||
#define PORT_EN1V8 (GPIO3)
|
||||
|
||||
#define PIN_XCVR_CS (BIT15) /* GPIO0[15] on P1_20 */
|
||||
#define PORT_XCVR_CS (GPIO0) /* PORT for CS */
|
||||
#define PIN_XCVR_ENABLE (BIT6) /* GPIO2[6] on P4_6 */
|
||||
#define PIN_XCVR_RXENABLE (BIT5) /* GPIO2[5] on P4_5 */
|
||||
#define PIN_XCVR_TXENABLE (BIT4) /* GPIO2[4] on P4_4 */
|
||||
#define PORT_XCVR_ENABLE (GPIO2) /* PORT for ENABLE, TXENABLE, RXENABLE */
|
||||
#ifdef JELLYBEAN
|
||||
#define PIN_XCVR_RXHP (BIT0) /* GPIO2[0] on P4_0 */
|
||||
#define PORT_XCVR_RXHP (GPIO2)
|
||||
#define PIN_XCVR_B1 (BIT9) /* GPIO2[9] on P5_0 */
|
||||
#define PIN_XCVR_B2 (BIT10) /* GPIO2[10] on P5_1 */
|
||||
#define PIN_XCVR_B3 (BIT11) /* GPIO2[11] on P5_2 */
|
||||
#define PIN_XCVR_B4 (BIT12) /* GPIO2[12] on P5_3 */
|
||||
#define PIN_XCVR_B5 (BIT13) /* GPIO2[13] on P5_4 */
|
||||
#define PIN_XCVR_B6 (BIT14) /* GPIO2[14] on P5_5 */
|
||||
#define PIN_XCVR_B7 (BIT15) /* GPIO2[15] on P5_6 */
|
||||
#define PORT_XCVR_B (GPIO2)
|
||||
#endif
|
||||
|
||||
#define PIN_AD_CS (BIT7) /* GPIO2[7] on P5_7 */
|
||||
#define PORT_AD_CS (GPIO2) /* PORT for AD_CS */
|
||||
|
||||
#ifdef JELLYBEAN
|
||||
#define PIN_MIXER_ENX (BIT8) /* GPIO3[8] on P7_0 */
|
||||
#define PORT_MIXER_ENX (GPIO3)
|
||||
#define PIN_MIXER_SCLK (BIT9) /* GPIO3[9] on P7_1 */
|
||||
#define PORT_MIXER_SCLK (GPIO3)
|
||||
#define PIN_MIXER_SDATA (BIT10) /* GPIO3[10] on P7_2 */
|
||||
#define PORT_MIXER_SDATA (GPIO3)
|
||||
#define PIN_MIXER_RESETX (BIT11) /* GPIO3[11] on P7_3 */
|
||||
#define PORT_MIXER_RESETX (GPIO3)
|
||||
#endif
|
||||
#if (defined JAWBREAKER || defined HACKRF_ONE)
|
||||
#define PIN_MIXER_ENX (BIT13) /* GPIO2[13] on P5_4 */
|
||||
#define PORT_MIXER_ENX (GPIO2)
|
||||
#define PIN_MIXER_SCLK (BIT6) /* GPIO5[6] on P2_6 */
|
||||
#define PORT_MIXER_SCLK (GPIO5)
|
||||
#define PIN_MIXER_SDATA (BIT3) /* GPIO3[3] on P6_4 */
|
||||
#define PORT_MIXER_SDATA (GPIO3)
|
||||
#define PIN_MIXER_RESETX (BIT14) /* GPIO2[14] on P5_5 */
|
||||
#define PORT_MIXER_RESETX (GPIO2)
|
||||
#endif
|
||||
|
||||
#ifdef JAWBREAKER
|
||||
#define PIN_RF_LDO_ENABLE (BIT9) /* GPIO2[9] on P5_0 */
|
||||
#define PORT_RF_LDO_ENABLE (GPIO2) /* PORT for RF_LDO_ENABLE */
|
||||
#endif
|
||||
|
||||
#ifdef HACKRF_ONE
|
||||
#define PIN_NO_VAA_ENABLE (BIT9) /* GPIO2[9] on P5_0 */
|
||||
#define PORT_NO_VAA_ENABLE (GPIO2) /* PORT for NO_VAA_ENABLE */
|
||||
#endif
|
||||
|
||||
#define PIN_FLASH_HOLD (BIT14) /* GPIO1[14] on P3_4 */
|
||||
#define PIN_FLASH_WP (BIT15) /* GPIO1[15] on P3_5 */
|
||||
#define PORT_FLASH (GPIO1)
|
||||
#define PIN_SSP0_SSEL (BIT11) /* GPIO5[11] on P3_8 */
|
||||
#define PORT_SSP0_SSEL (GPIO5)
|
||||
|
||||
/* RF switch control */
|
||||
#ifdef HACKRF_ONE
|
||||
#define PIN_HP (GPIOPIN0) /* GPIO2[0] on P4_0 */
|
||||
#define PORT_HP (GPIO2)
|
||||
#define PIN_LP (GPIOPIN10) /* GPIO2[10] on P5_1 */
|
||||
#define PORT_LP (GPIO2)
|
||||
#define PIN_TX_MIX_BP (GPIOPIN11) /* GPIO2[11] on P5_2 */
|
||||
#define PORT_TX_MIX_BP (GPIO2)
|
||||
#define PIN_NO_MIX_BYPASS (GPIOPIN0) /* GPIO1[0] on P1_7 */
|
||||
#define PORT_NO_MIX_BYPASS (GPIO1)
|
||||
#define PIN_RX_MIX_BP (GPIOPIN12) /* GPIO2[12] on P5_3 */
|
||||
#define PORT_RX_MIX_BP (GPIO2)
|
||||
#define PIN_TX_AMP (GPIOPIN15) /* GPIO2[15] on P5_6 */
|
||||
#define PORT_TX_AMP (GPIO2)
|
||||
#define PIN_TX (GPIOPIN15) /* GPIO5[15] on P6_7 */
|
||||
#define PORT_TX (GPIO5)
|
||||
#define PIN_MIX_BYPASS (GPIOPIN16) /* GPIO5[16] on P6_8 */
|
||||
#define PORT_MIX_BYPASS (GPIO5)
|
||||
#define PIN_RX (GPIOPIN5) /* GPIO5[5] on P2_5 */
|
||||
#define PORT_RX (GPIO5)
|
||||
#define PIN_NO_TX_AMP_PWR (GPIOPIN5) /* GPIO3[5] on P6_9 */
|
||||
#define PORT_NO_TX_AMP_PWR (GPIO3)
|
||||
#define PIN_AMP_BYPASS (GPIOPIN14) /* GPIO0[14] on P2_10 */
|
||||
#define PORT_AMP_BYPASS (GPIO0)
|
||||
#define PIN_RX_AMP (GPIOPIN11) /* GPIO1[11] on P2_11 */
|
||||
#define PORT_RX_AMP (GPIO1)
|
||||
#define PIN_NO_RX_AMP_PWR (GPIOPIN12) /* GPIO1[12] on P2_12 */
|
||||
#define PORT_NO_RX_AMP_PWR (GPIO1)
|
||||
#endif
|
||||
|
||||
/* GPIO Input */
|
||||
#define PIN_BOOT0 (BIT8) /* GPIO0[8] on P1_1 */
|
||||
#define PIN_BOOT1 (BIT9) /* GPIO0[9] on P1_2 */
|
||||
#define PIN_BOOT2 (BIT7) /* GPIO5[7] on P2_8 */
|
||||
#define PIN_BOOT3 (BIT10) /* GPIO1[10] on P2_9 */
|
||||
|
||||
/* CPLD JTAG interface GPIO pins */
|
||||
#define PIN_CPLD_TDO (GPIOPIN18)
|
||||
#define PORT_CPLD_TDO (GPIO5)
|
||||
#define PIN_CPLD_TCK (GPIOPIN0)
|
||||
#define PORT_CPLD_TCK (GPIO3)
|
||||
#ifdef HACKRF_ONE
|
||||
#define PIN_CPLD_TMS (GPIOPIN4)
|
||||
#define PORT_CPLD_TMS (GPIO3)
|
||||
#define PIN_CPLD_TDI (GPIOPIN1)
|
||||
#define PORT_CPLD_TDI (GPIO3)
|
||||
#else
|
||||
#define PIN_CPLD_TMS (GPIOPIN1)
|
||||
#define PORT_CPLD_TMS (GPIO3)
|
||||
#define PIN_CPLD_TDI (GPIOPIN4)
|
||||
#define PORT_CPLD_TDI (GPIO3)
|
||||
#endif
|
||||
|
||||
/* Read GPIO Pin */
|
||||
#define GPIO_STATE(port, pin) ((GPIO_PIN(port) & (pin)) == (pin))
|
||||
#define BOOT0_STATE GPIO_STATE(GPIO0, PIN_BOOT0)
|
||||
#define BOOT1_STATE GPIO_STATE(GPIO0, PIN_BOOT1)
|
||||
#define BOOT2_STATE GPIO_STATE(GPIO5, PIN_BOOT2)
|
||||
#define BOOT3_STATE GPIO_STATE(GPIO1, PIN_BOOT3)
|
||||
#define MIXER_SDATA_STATE GPIO_STATE(PORT_MIXER_SDATA, PIN_MIXER_SDATA)
|
||||
#define CPLD_TDO_STATE GPIO_STATE(PORT_CPLD_TDO, PIN_CPLD_TDO)
|
||||
|
||||
/* TODO add other Pins */
|
||||
|
||||
typedef enum {
|
||||
TRANSCEIVER_MODE_OFF = 0,
|
||||
TRANSCEIVER_MODE_RX = 1,
|
||||
TRANSCEIVER_MODE_TX = 2,
|
||||
TRANSCEIVER_MODE_SS = 3,
|
||||
TRANSCEIVER_MODE_CPLD_UPDATE = 4
|
||||
} transceiver_mode_t;
|
||||
|
||||
void delay(uint32_t duration);
|
||||
|
||||
void cpu_clock_init(void);
|
||||
void cpu_clock_pll1_low_speed(void);
|
||||
void cpu_clock_pll1_max_speed(void);
|
||||
void ssp1_init(void);
|
||||
void ssp1_set_mode_max2837(void);
|
||||
void ssp1_set_mode_max5864(void);
|
||||
|
||||
void pin_setup(void);
|
||||
|
||||
void enable_1v8_power(void);
|
||||
void disable_1v8_power(void);
|
||||
|
||||
bool sample_rate_frac_set(uint32_t rate_num, uint32_t rate_denom);
|
||||
bool sample_rate_set(const uint32_t sampling_rate_hz);
|
||||
bool baseband_filter_bandwidth_set(const uint32_t bandwidth_hz);
|
||||
|
||||
#ifdef HACKRF_ONE
|
||||
void enable_rf_power(void);
|
||||
void disable_rf_power(void);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __HACKRF_CORE_H */
|
||||
@ -0,0 +1,23 @@
|
||||
# Copyright 2013 Jared Boone <jared@sharebrained.com>
|
||||
#
|
||||
# This file is part of HackRF.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
|
||||
.data
|
||||
.section .m0_bin, "ax"
|
||||
|
||||
.incbin "${PROJECT_NAME}_m0.bin"
|
||||
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Copyright 2013 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
int main() {
|
||||
while(1) {
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,507 @@
|
||||
/*
|
||||
* 'gcc -DTEST -DDEBUG -O2 -o test max2837.c' prints out what test
|
||||
* program would do if it had a real spi library
|
||||
*
|
||||
* 'gcc -DTEST -DBUS_PIRATE -O2 -o test max2837.c' prints out bus
|
||||
* pirate commands to do the same thing.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include "max2837.h"
|
||||
#include "max2837_regs.def" // private register def macros
|
||||
|
||||
#if (defined DEBUG || defined BUS_PIRATE)
|
||||
#include <stdio.h>
|
||||
#define LOG printf
|
||||
#else
|
||||
#define LOG(x,...)
|
||||
#include <libopencm3/lpc43xx/ssp.h>
|
||||
#include <libopencm3/lpc43xx/scu.h>
|
||||
#include <libopencm3/lpc43xx/gpio.h>
|
||||
#include "hackrf_core.h"
|
||||
#endif
|
||||
|
||||
/* Default register values. */
|
||||
static uint16_t max2837_regs_default[MAX2837_NUM_REGS] = {
|
||||
0x150, /* 0 */
|
||||
0x002, /* 1 */
|
||||
0x1f4, /* 2 */
|
||||
0x1b9, /* 3 */
|
||||
0x00a, /* 4 */
|
||||
0x080, /* 5 */
|
||||
0x006, /* 6 */
|
||||
0x000, /* 7 */
|
||||
0x080, /* 8 */
|
||||
0x018, /* 9 */
|
||||
0x058, /* 10 */
|
||||
0x016, /* 11 */
|
||||
0x24f, /* 12 */
|
||||
0x150, /* 13 */
|
||||
0x1c5, /* 14 */
|
||||
0x081, /* 15 */
|
||||
0x01c, /* 16 */
|
||||
0x155, /* 17 */
|
||||
0x155, /* 18 */
|
||||
0x153, /* 19 */
|
||||
0x241, /* 20 */
|
||||
/*
|
||||
* Charge Pump Common Mode Enable bit (0) of register 21 must be set or TX
|
||||
* does not work. Page 1 of the SPI doc says not to set it (0x02c), but
|
||||
* page 21 says it should be set by default (0x02d).
|
||||
*/
|
||||
0x02d, /* 21 */
|
||||
0x1a9, /* 22 */
|
||||
0x24f, /* 23 */
|
||||
0x180, /* 24 */
|
||||
0x100, /* 25 */
|
||||
0x3ca, /* 26 */
|
||||
0x3e3, /* 27 */
|
||||
0x0c0, /* 28 */
|
||||
0x3f0, /* 29 */
|
||||
0x080, /* 30 */
|
||||
0x000 }; /* 31 */
|
||||
|
||||
uint16_t max2837_regs[MAX2837_NUM_REGS];
|
||||
|
||||
/* Mark all regsisters dirty so all will be written at init. */
|
||||
uint32_t max2837_regs_dirty = 0xffffffff;
|
||||
|
||||
/* Set up all registers according to defaults specified in docs. */
|
||||
void max2837_init(void)
|
||||
{
|
||||
LOG("# max2837_init\n");
|
||||
memcpy(max2837_regs, max2837_regs_default, sizeof(max2837_regs));
|
||||
max2837_regs_dirty = 0xffffffff;
|
||||
|
||||
/* Write default register values to chip. */
|
||||
max2837_regs_commit();
|
||||
}
|
||||
|
||||
/*
|
||||
* Set up pins for GPIO and SPI control, configure SSP peripheral for SPI, and
|
||||
* set our own default register configuration.
|
||||
*/
|
||||
void max2837_setup(void)
|
||||
{
|
||||
LOG("# max2837_setup\n");
|
||||
#if !defined TEST
|
||||
/* Configure XCVR_CTL GPIO pins. */
|
||||
#ifdef JELLYBEAN
|
||||
scu_pinmux(SCU_XCVR_RXHP, SCU_GPIO_FAST);
|
||||
scu_pinmux(SCU_XCVR_B1, SCU_GPIO_FAST);
|
||||
scu_pinmux(SCU_XCVR_B2, SCU_GPIO_FAST);
|
||||
scu_pinmux(SCU_XCVR_B3, SCU_GPIO_FAST);
|
||||
scu_pinmux(SCU_XCVR_B4, SCU_GPIO_FAST);
|
||||
scu_pinmux(SCU_XCVR_B5, SCU_GPIO_FAST);
|
||||
scu_pinmux(SCU_XCVR_B6, SCU_GPIO_FAST);
|
||||
scu_pinmux(SCU_XCVR_B7, SCU_GPIO_FAST);
|
||||
#endif
|
||||
scu_pinmux(SCU_XCVR_ENABLE, SCU_GPIO_FAST);
|
||||
scu_pinmux(SCU_XCVR_RXENABLE, SCU_GPIO_FAST);
|
||||
scu_pinmux(SCU_XCVR_TXENABLE, SCU_GPIO_FAST);
|
||||
|
||||
/* Set GPIO pins as outputs. */
|
||||
GPIO2_DIR |= (PIN_XCVR_ENABLE | PIN_XCVR_RXENABLE | PIN_XCVR_TXENABLE);
|
||||
#ifdef JELLYBEAN
|
||||
GPIO_DIR(PORT_XCVR_RXHP) |= PIN_XCVR_RXHP;
|
||||
GPIO_DIR(PORT_XCVR_B) |=
|
||||
PIN_XCVR_B1
|
||||
| PIN_XCVR_B2
|
||||
| PIN_XCVR_B3
|
||||
| PIN_XCVR_B4
|
||||
| PIN_XCVR_B5
|
||||
| PIN_XCVR_B6
|
||||
| PIN_XCVR_B7
|
||||
;
|
||||
#endif
|
||||
|
||||
max2837_mode_shutdown();
|
||||
#ifdef JELLYBEAN
|
||||
gpio_set(PORT_XCVR_RXHP, PIN_XCVR_RXHP);
|
||||
gpio_set(PORT_XCVR_B,
|
||||
PIN_XCVR_B1
|
||||
| PIN_XCVR_B2
|
||||
| PIN_XCVR_B3
|
||||
| PIN_XCVR_B4
|
||||
| PIN_XCVR_B5
|
||||
| PIN_XCVR_B6
|
||||
| PIN_XCVR_B7
|
||||
);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
max2837_init();
|
||||
LOG("# max2837_init done\n");
|
||||
|
||||
/* Use SPI control instead of B1-B7 pins for gain settings. */
|
||||
set_MAX2837_TXVGA_GAIN_SPI_EN(1);
|
||||
set_MAX2837_TXVGA_GAIN_MSB_SPI_EN(1);
|
||||
//set_MAX2837_TXVGA_GAIN(0x3f); /* maximum attenuation */
|
||||
set_MAX2837_TXVGA_GAIN(0x00); /* minimum attenuation */
|
||||
set_MAX2837_VGAMUX_enable(1);
|
||||
set_MAX2837_VGA_EN(1);
|
||||
set_MAX2837_HPC_RXGAIN_EN(0);
|
||||
set_MAX2837_HPC_STOP(MAX2837_STOP_1K);
|
||||
set_MAX2837_LNAgain_SPI_EN(1);
|
||||
set_MAX2837_LNAgain(MAX2837_LNAgain_MAX); /* maximum gain */
|
||||
set_MAX2837_VGAgain_SPI_EN(1);
|
||||
set_MAX2837_VGA(0x18); /* reasonable gain for noisy 2.4GHz environment */
|
||||
|
||||
/* maximum rx output common-mode voltage */
|
||||
set_MAX2837_BUFF_VCM(MAX2837_BUFF_VCM_1_25);
|
||||
|
||||
/* configure baseband filter for 8 MHz TX */
|
||||
set_MAX2837_LPF_EN(1);
|
||||
set_MAX2837_ModeCtrl(MAX2837_ModeCtrl_RxLPF);
|
||||
set_MAX2837_FT(MAX2837_FT_5M);
|
||||
|
||||
max2837_regs_commit();
|
||||
}
|
||||
|
||||
/* SPI register read. */
|
||||
uint16_t max2837_spi_read(uint8_t r) {
|
||||
gpio_clear(PORT_XCVR_CS, PIN_XCVR_CS);
|
||||
const uint16_t value = ssp_transfer(SSP1_NUM, (uint16_t)((1 << 15) | (r << 10)));
|
||||
gpio_set(PORT_XCVR_CS, PIN_XCVR_CS);
|
||||
return value & 0x3ff;
|
||||
}
|
||||
|
||||
/* SPI register write */
|
||||
void max2837_spi_write(uint8_t r, uint16_t v) {
|
||||
|
||||
#ifdef BUS_PIRATE
|
||||
LOG("{0x%02x 0x%02x]\n", 0x00 | ((uint16_t)r<<2) | ((v>>8) & 0x3),
|
||||
v & 0xff);
|
||||
#elif DEBUG
|
||||
LOG("0x%03x -> reg%d\n", v, r);
|
||||
#else
|
||||
gpio_clear(PORT_XCVR_CS, PIN_XCVR_CS);
|
||||
ssp_transfer(SSP1_NUM, (uint16_t)((r << 10) | (v & 0x3ff)));
|
||||
gpio_set(PORT_XCVR_CS, PIN_XCVR_CS);
|
||||
#endif
|
||||
}
|
||||
|
||||
uint16_t max2837_reg_read(uint8_t r)
|
||||
{
|
||||
if ((max2837_regs_dirty >> r) & 0x1) {
|
||||
max2837_regs[r] = max2837_spi_read(r);
|
||||
};
|
||||
return max2837_regs[r];
|
||||
}
|
||||
|
||||
void max2837_reg_write(uint8_t r, uint16_t v)
|
||||
{
|
||||
max2837_regs[r] = v;
|
||||
max2837_spi_write(r, v);
|
||||
MAX2837_REG_SET_CLEAN(r);
|
||||
}
|
||||
|
||||
/* This functions should not be needed, and might be confusing. DELETE. */
|
||||
void max2837_regs_read(void)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
static inline void max2837_reg_commit(uint8_t r)
|
||||
{
|
||||
max2837_reg_write(r,max2837_regs[r]);
|
||||
}
|
||||
|
||||
void max2837_regs_commit(void)
|
||||
{
|
||||
int r;
|
||||
for(r = 0; r < MAX2837_NUM_REGS; r++) {
|
||||
if ((max2837_regs_dirty >> r) & 0x1) {
|
||||
max2837_reg_commit(r);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void max2837_mode_shutdown(void) {
|
||||
/* All circuit blocks are powered down, except the 4-wire serial bus
|
||||
* and its internal programmable registers.
|
||||
*/
|
||||
gpio_clear(PORT_XCVR_ENABLE,
|
||||
(PIN_XCVR_ENABLE | PIN_XCVR_RXENABLE | PIN_XCVR_TXENABLE));
|
||||
}
|
||||
|
||||
void max2837_mode_standby(void) {
|
||||
/* Used to enable the frequency synthesizer block while the rest of the
|
||||
* device is powered down. In this mode, PLL, VCO, and LO generator
|
||||
* are on, so that Tx or Rx modes can be quickly enabled from this mode.
|
||||
* These and other blocks can be selectively enabled in this mode.
|
||||
*/
|
||||
gpio_clear(PORT_XCVR_ENABLE, (PIN_XCVR_RXENABLE | PIN_XCVR_TXENABLE));
|
||||
gpio_set(PORT_XCVR_ENABLE, PIN_XCVR_ENABLE);
|
||||
}
|
||||
|
||||
void max2837_mode_tx(void) {
|
||||
/* All Tx circuit blocks are powered on. The external PA is powered on
|
||||
* after a programmable delay using the on-chip PA bias DAC. The slow-
|
||||
* charging Rx circuits are in a precharged “idle-off” state for fast
|
||||
* Tx-to-Rx turnaround time.
|
||||
*/
|
||||
gpio_clear(PORT_XCVR_ENABLE, PIN_XCVR_RXENABLE);
|
||||
gpio_set(PORT_XCVR_ENABLE,
|
||||
(PIN_XCVR_ENABLE | PIN_XCVR_TXENABLE));
|
||||
}
|
||||
|
||||
void max2837_mode_rx(void) {
|
||||
/* All Rx circuit blocks are powered on and active. Antenna signal is
|
||||
* applied; RF is downconverted, filtered, and buffered at Rx BB I and Q
|
||||
* outputs. The slow- charging Tx circuits are in a precharged “idle-off”
|
||||
* state for fast Rx-to-Tx turnaround time.
|
||||
*/
|
||||
gpio_clear(PORT_XCVR_ENABLE, PIN_XCVR_TXENABLE);
|
||||
gpio_set(PORT_XCVR_ENABLE,
|
||||
(PIN_XCVR_ENABLE | PIN_XCVR_RXENABLE));
|
||||
}
|
||||
|
||||
max2837_mode_t max2837_mode(void) {
|
||||
if( gpio_get(PORT_XCVR_ENABLE, PIN_XCVR_ENABLE) ) {
|
||||
if( gpio_get(PORT_XCVR_ENABLE, PIN_XCVR_TXENABLE) ) {
|
||||
return MAX2837_MODE_TX;
|
||||
} else if( gpio_get(PORT_XCVR_ENABLE, PIN_XCVR_RXENABLE) ) {
|
||||
return MAX2837_MODE_RX;
|
||||
} else {
|
||||
return MAX2837_MODE_STANDBY;
|
||||
}
|
||||
} else {
|
||||
return MAX2837_MODE_SHUTDOWN;
|
||||
}
|
||||
}
|
||||
|
||||
void max2837_set_mode(const max2837_mode_t new_mode) {
|
||||
switch(new_mode) {
|
||||
case MAX2837_MODE_SHUTDOWN:
|
||||
max2837_mode_shutdown();
|
||||
break;
|
||||
|
||||
case MAX2837_MODE_STANDBY:
|
||||
max2837_mode_standby();
|
||||
break;
|
||||
|
||||
case MAX2837_MODE_TX:
|
||||
max2837_mode_tx();
|
||||
break;
|
||||
|
||||
case MAX2837_MODE_RX:
|
||||
max2837_mode_rx();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void max2837_start(void)
|
||||
{
|
||||
LOG("# max2837_start\n");
|
||||
set_MAX2837_EN_SPI(1);
|
||||
max2837_regs_commit();
|
||||
#if !defined TEST
|
||||
max2837_mode_standby();
|
||||
#endif
|
||||
}
|
||||
|
||||
void max2837_tx(void)
|
||||
{
|
||||
LOG("# max2837_tx\n");
|
||||
#if !defined TEST
|
||||
|
||||
set_MAX2837_ModeCtrl(MAX2837_ModeCtrl_TxLPF);
|
||||
max2837_regs_commit();
|
||||
max2837_mode_tx();
|
||||
#endif
|
||||
}
|
||||
|
||||
void max2837_rx(void)
|
||||
{
|
||||
LOG("# max2837_rx\n");
|
||||
|
||||
set_MAX2837_ModeCtrl(MAX2837_ModeCtrl_RxLPF);
|
||||
max2837_regs_commit();
|
||||
|
||||
#if !defined TEST
|
||||
max2837_mode_rx();
|
||||
#endif
|
||||
}
|
||||
|
||||
void max2837_stop(void)
|
||||
{
|
||||
LOG("# max2837_stop\n");
|
||||
set_MAX2837_EN_SPI(0);
|
||||
max2837_regs_commit();
|
||||
#if !defined TEST
|
||||
max2837_mode_shutdown();
|
||||
#endif
|
||||
}
|
||||
|
||||
void max2837_set_frequency(uint32_t freq)
|
||||
{
|
||||
uint8_t band;
|
||||
uint8_t lna_band;
|
||||
uint32_t div_frac;
|
||||
uint32_t div_int;
|
||||
uint32_t div_rem;
|
||||
uint32_t div_cmp;
|
||||
int i;
|
||||
|
||||
/* Select band. Allow tuning outside specified bands. */
|
||||
if (freq < 2400000000U) {
|
||||
band = MAX2837_LOGEN_BSW_2_3;
|
||||
lna_band = MAX2837_LNAband_2_4;
|
||||
}
|
||||
else if (freq < 2500000000U) {
|
||||
band = MAX2837_LOGEN_BSW_2_4;
|
||||
lna_band = MAX2837_LNAband_2_4;
|
||||
}
|
||||
else if (freq < 2600000000U) {
|
||||
band = MAX2837_LOGEN_BSW_2_5;
|
||||
lna_band = MAX2837_LNAband_2_6;
|
||||
}
|
||||
else {
|
||||
band = MAX2837_LOGEN_BSW_2_6;
|
||||
lna_band = MAX2837_LNAband_2_6;
|
||||
}
|
||||
|
||||
LOG("# max2837_set_frequency %ld, band %d, lna band %d\n",
|
||||
freq, band, lna_band);
|
||||
|
||||
/* ASSUME 40MHz PLL. Ratio = F*(4/3)/40,000,000 = F/30,000,000 */
|
||||
div_int = freq / 30000000;
|
||||
div_rem = freq % 30000000;
|
||||
div_frac = 0;
|
||||
div_cmp = 30000000;
|
||||
for( i = 0; i < 20; i++) {
|
||||
div_frac <<= 1;
|
||||
div_cmp >>= 1;
|
||||
if (div_rem > div_cmp) {
|
||||
div_frac |= 0x1;
|
||||
div_rem -= div_cmp;
|
||||
}
|
||||
}
|
||||
LOG("# int %ld, frac %ld\n", div_int, div_frac);
|
||||
|
||||
/* Band settings */
|
||||
set_MAX2837_LOGEN_BSW(band);
|
||||
set_MAX2837_LNAband(lna_band);
|
||||
|
||||
/* Write order matters here, so commit INT and FRAC_HI before
|
||||
* committing FRAC_LO, which is the trigger for VCO
|
||||
* auto-select. TODO - it's cleaner this way, but it would be
|
||||
* faster to explicitly commit the registers explicitly so the
|
||||
* dirty bits aren't scanned twice. */
|
||||
set_MAX2837_SYN_INT(div_int);
|
||||
set_MAX2837_SYN_FRAC_HI((div_frac >> 10) & 0x3ff);
|
||||
max2837_regs_commit();
|
||||
set_MAX2837_SYN_FRAC_LO(div_frac & 0x3ff);
|
||||
max2837_regs_commit();
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
uint32_t bandwidth_hz;
|
||||
uint32_t ft;
|
||||
} max2837_ft_t;
|
||||
|
||||
static const max2837_ft_t max2837_ft[] = {
|
||||
{ 1750000, MAX2837_FT_1_75M },
|
||||
{ 2500000, MAX2837_FT_2_5M },
|
||||
{ 3500000, MAX2837_FT_3_5M },
|
||||
{ 5000000, MAX2837_FT_5M },
|
||||
{ 5500000, MAX2837_FT_5_5M },
|
||||
{ 6000000, MAX2837_FT_6M },
|
||||
{ 7000000, MAX2837_FT_7M },
|
||||
{ 8000000, MAX2837_FT_8M },
|
||||
{ 9000000, MAX2837_FT_9M },
|
||||
{ 10000000, MAX2837_FT_10M },
|
||||
{ 12000000, MAX2837_FT_12M },
|
||||
{ 14000000, MAX2837_FT_14M },
|
||||
{ 15000000, MAX2837_FT_15M },
|
||||
{ 20000000, MAX2837_FT_20M },
|
||||
{ 24000000, MAX2837_FT_24M },
|
||||
{ 28000000, MAX2837_FT_28M },
|
||||
{ 0, 0 },
|
||||
};
|
||||
|
||||
bool max2837_set_lpf_bandwidth(const uint32_t bandwidth_hz) {
|
||||
const max2837_ft_t* p = max2837_ft;
|
||||
while( p->bandwidth_hz != 0 ) {
|
||||
if( p->bandwidth_hz >= bandwidth_hz ) {
|
||||
break;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
|
||||
if( p->bandwidth_hz != 0 ) {
|
||||
set_MAX2837_FT(p->ft);
|
||||
max2837_regs_commit();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool max2837_set_lna_gain(const uint32_t gain_db) {
|
||||
uint16_t val;
|
||||
switch(gain_db){
|
||||
case 40:
|
||||
val = MAX2837_LNAgain_MAX;
|
||||
break;
|
||||
case 32:
|
||||
val = MAX2837_LNAgain_M8;
|
||||
break;
|
||||
case 24:
|
||||
val = MAX2837_LNAgain_M16;
|
||||
break;
|
||||
case 16:
|
||||
val = MAX2837_LNAgain_M24;
|
||||
break;
|
||||
case 8:
|
||||
val = MAX2837_LNAgain_M32;
|
||||
break;
|
||||
case 0:
|
||||
val = MAX2837_LNAgain_M40;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
set_MAX2837_LNAgain(val);
|
||||
max2837_reg_commit(1);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool max2837_set_vga_gain(const uint32_t gain_db) {
|
||||
if( (gain_db & 0x1) || gain_db > 62)/* 0b11111*2 */
|
||||
return false;
|
||||
|
||||
set_MAX2837_VGA( 31-(gain_db >> 1) );
|
||||
max2837_reg_commit(5);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool max2837_set_txvga_gain(const uint32_t gain_db) {
|
||||
uint16_t val=0;
|
||||
if(gain_db <16){
|
||||
val = 31-gain_db;
|
||||
val |= (1 << 5); // bit6: 16db
|
||||
} else{
|
||||
val = 31-(gain_db-16);
|
||||
}
|
||||
|
||||
set_MAX2837_TXVGA_GAIN(val);
|
||||
max2837_reg_commit(29);
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef TEST
|
||||
int main(int ac, char **av)
|
||||
{
|
||||
max2837_setup();
|
||||
max2837_set_frequency(2441000000);
|
||||
max2837_start();
|
||||
max2837_tx();
|
||||
max2837_stop();
|
||||
}
|
||||
#endif //TEST
|
||||
@ -0,0 +1,70 @@
|
||||
#ifndef __MAX2837_H
|
||||
#define __MAX2837_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/* TODO - make this a private header for max2837.c only, make new max2837.h */
|
||||
|
||||
/* 32 registers, each containing 10 bits of data. */
|
||||
#define MAX2837_NUM_REGS 32
|
||||
#define MAX2837_DATA_REGS_MAX_VALUE 1024
|
||||
|
||||
/* TODO - these externs will be local to max2837.c ... don't define here? */
|
||||
extern uint16_t max2837_regs[MAX2837_NUM_REGS];
|
||||
extern uint32_t max2837_regs_dirty;
|
||||
|
||||
#define MAX2837_REG_SET_CLEAN(r) max2837_regs_dirty &= ~(1UL<<r)
|
||||
#define MAX2837_REG_SET_DIRTY(r) max2837_regs_dirty |= (1UL<<r)
|
||||
|
||||
/* Initialize chip. */
|
||||
extern void max2837_init(void);
|
||||
extern void max2837_setup(void);
|
||||
|
||||
/* Read a register via SPI. Save a copy to memory and return
|
||||
* value. Mark clean. */
|
||||
extern uint16_t max2837_reg_read(uint8_t r);
|
||||
|
||||
/* Write value to register via SPI and save a copy to memory. Mark
|
||||
* clean. */
|
||||
extern void max2837_reg_write(uint8_t r, uint16_t v);
|
||||
|
||||
/* Read all registers from chip and copy to memory. Mark all clean. */
|
||||
extern void max2837_regs_read(void);
|
||||
|
||||
/* Write all dirty registers via SPI from memory. Mark all clean. Some
|
||||
* operations require registers to be written in a certain order. Use
|
||||
* provided routines for those operations. */
|
||||
extern void max2837_regs_commit(void);
|
||||
|
||||
typedef enum {
|
||||
MAX2837_MODE_SHUTDOWN,
|
||||
MAX2837_MODE_STANDBY,
|
||||
MAX2837_MODE_TX,
|
||||
MAX2837_MODE_RX
|
||||
} max2837_mode_t;
|
||||
|
||||
void max2837_mode_shutdown(void);
|
||||
void max2837_mode_standby(void);
|
||||
void max2837_mode_tx(void);
|
||||
void max2837_mode_rx(void);
|
||||
|
||||
max2837_mode_t max2837_mode(void);
|
||||
void max2837_set_mode(const max2837_mode_t new_mode);
|
||||
|
||||
/* Turn on/off all chip functions. Does not control oscillator and CLKOUT */
|
||||
extern void max2837_start(void);
|
||||
extern void max2837_stop(void);
|
||||
|
||||
/* Set frequency in Hz. Frequency setting is a multi-step function
|
||||
* where order of register writes matters. */
|
||||
extern void max2837_set_frequency(uint32_t freq);
|
||||
bool max2837_set_lpf_bandwidth(const uint32_t bandwidth_hz);
|
||||
bool max2837_set_lna_gain(const uint32_t gain_db);
|
||||
bool max2837_set_vga_gain(const uint32_t gain_db);
|
||||
bool max2837_set_txvga_gain(const uint32_t gain_db);
|
||||
|
||||
extern void max2837_tx(void);
|
||||
extern void max2837_rx(void);
|
||||
|
||||
#endif // __MAX2837_H
|
||||
@ -0,0 +1,405 @@
|
||||
/* -*- mode: c -*- */
|
||||
|
||||
#ifndef __MAX2837_REGS_DEF
|
||||
#define __MAX2837_REGS_DEF
|
||||
|
||||
/* Generate static inline accessors that operate on the global
|
||||
* regs. Done this way to (1) allow defs to be scraped out and used
|
||||
* elsewhere, e.g. in scripts, (2) to avoid dealing with endian
|
||||
* (structs). This may be used in firmware, or on host predefined
|
||||
* register loads. */
|
||||
|
||||
/* On set_, register is always set dirty, even if nothing
|
||||
* changed. This makes sure that write that have side effects,
|
||||
* e.g. frequency setting, are not skipped. */
|
||||
|
||||
/* n=name, r=regnum, o=offset (bits from LSB), l=length (bits) */
|
||||
#define __MREG__(n,r,o,l) \
|
||||
static inline uint16_t get_##n(void) { \
|
||||
return (max2837_regs[r] >> (o-l+1)) & ((1<<l)-1); \
|
||||
} \
|
||||
static inline void set_##n(uint16_t v) { \
|
||||
max2837_regs[r] &= ~(((1<<l)-1)<<(o-l+1)); \
|
||||
max2837_regs[r] |= ((v&((1<<l)-1))<<(o-l+1)); \
|
||||
MAX2837_REG_SET_DIRTY(r); \
|
||||
}
|
||||
|
||||
/* REG 0 */
|
||||
__MREG__(MAX2837_LNA_EN, 0,0,1)
|
||||
__MREG__(MAX2837_Mixer_EN, 0,1,1)
|
||||
__MREG__(MAX2837_RxLO_EN, 0,2,1)
|
||||
__MREG__(MAX2837_Lbias, 0,4,2)
|
||||
#define MAX2837_Lbias_LOWEST 0
|
||||
#define MAX2837_Lbias_NOMINAL 2
|
||||
#define MAX2837_Lbias_HIGHEST 3
|
||||
__MREG__(MAX2837_Mbias, 0,6,2)
|
||||
#define MAX2837_Mbias_LOWEST 0
|
||||
#define MAX2837_Mbias_NOMINAL 2
|
||||
#define MAX2837_Mbias_HIGHEST 3
|
||||
__MREG__(MAX2837_buf, 0,8,2)
|
||||
#define MAX2837_buf_LOWEST 0
|
||||
#define MAX2837_buf_NOMINAL 2
|
||||
#define MAX2837_buf_HIGHEST 3
|
||||
__MREG__(MAX2837_LNAband, 0,9,1)
|
||||
#define MAX2837_LNAband_2_4 0 // 2.3-2.5 GHz
|
||||
#define MAX2837_LNAband_2_6 1 // 2.5-2.7 GHz
|
||||
|
||||
/* REG 1 */
|
||||
__MREG__(MAX2837_LNAtune, 1,0,1)
|
||||
#define MAX2837_LNAtune_NOMINAL 0
|
||||
#define MAX2837_LNAtune_DOWN 1
|
||||
__MREG__(MAX2837_LNAde_Q,1,1,1)
|
||||
#define MAX2837_LNAde_Q_NOMINAL 0
|
||||
#define MAX2837_LNAde_Q_2DB 1
|
||||
__MREG__(MAX2837_LNAgain,1,4,3)
|
||||
#define MAX2837_LNAgain_MAX 0b000 // Pad in 8dB steps, bits reversed
|
||||
#define MAX2837_LNAgain_M8 0b100
|
||||
#define MAX2837_LNAgain_M16 0b010
|
||||
#define MAX2837_LNAgain_M24 0b110
|
||||
#define MAX2837_LNAgain_M32 0b011
|
||||
#define MAX2837_LNAgain_M40 0b111
|
||||
__MREG__(MAX2837_iqerr_trim,1,9,5)
|
||||
// 0b00000 = +4.0 degree phase error
|
||||
// 0b01111 = 0.0
|
||||
// 0b11111 = -4.0
|
||||
|
||||
/* REG 2 */
|
||||
__MREG__(MAX2837_LPF_EN,2,0,1)
|
||||
__MREG__(MAX2837_TxBB_EN,2,1,1)
|
||||
__MREG__(MAX2837_ModeCtrl,2,3,2)
|
||||
#define MAX2837_ModeCtrl_RxCalibration 0
|
||||
#define MAX2837_ModeCtrl_RxLPF 1
|
||||
#define MAX2837_ModeCtrl_TxLPF 2
|
||||
#define MAX2837_ModeCtrl_LPFTrim 3
|
||||
__MREG__(MAX2837_FT,2,7,4)
|
||||
#define MAX2837_FT_1_75M 0
|
||||
#define MAX2837_FT_2_5M 1
|
||||
#define MAX2837_FT_3_5M 2
|
||||
#define MAX2837_FT_5M 3
|
||||
#define MAX2837_FT_5_5M 4
|
||||
#define MAX2837_FT_6M 5
|
||||
#define MAX2837_FT_7M 6
|
||||
#define MAX2837_FT_8M 7
|
||||
#define MAX2837_FT_9M 8
|
||||
#define MAX2837_FT_10M 9
|
||||
#define MAX2837_FT_12M 10
|
||||
#define MAX2837_FT_14M 11
|
||||
#define MAX2837_FT_15M 12
|
||||
#define MAX2837_FT_20M 13
|
||||
#define MAX2837_FT_24M 14
|
||||
#define MAX2837_FT_28M 15
|
||||
__MREG__(MAX2837_dF,2,9,2)
|
||||
#define MAX2837_dF_M10 0b00 // -10%
|
||||
#define MAX2837_dF_NOMINAL 0b01
|
||||
#define MAX2837_dF_10 0b11 // +10%
|
||||
|
||||
/* REG 3 */
|
||||
__MREG__(MAX2837_PT_SPI,3,3,4) // slowest=1111 fastest=0000 nom=1001
|
||||
__MREG__(MAX2837_Bqd,3,6,3) // MSB doubles bias current, lower 2 25% each
|
||||
__MREG__(MAX2837_TxRPCM,3,9,3) // 000=1.00V, 0.05V steps, 111 not allowed
|
||||
|
||||
/* REG 4 */
|
||||
__MREG__(MAX2837_RP,4,1,2) // 20% steps, 00=lowest, 11=highest
|
||||
__MREG__(MAX2837_TxBuff,4,3,2) // 25% steps, 00=lowest, 11=highest
|
||||
__MREG__(MAX2837_VGA_EN,4,4,1)
|
||||
__MREG__(MAX2837_VGAMUX_enable,4,5,1)
|
||||
__MREG__(MAX2837_BUFF_Curr,4,7,2) // 250uA + 125uA steps
|
||||
__MREG__(MAX2837_BUFF_VCM,4,9,2) // VGA common mode
|
||||
#define MAX2837_BUFF_VCM_0_9 0 // 0.9V
|
||||
#define MAX2837_BUFF_VCM_1_0 1 // 1.0V
|
||||
#define MAX2837_BUFF_VCM_1_1 2 // 1.1V
|
||||
#define MAX2837_BUFF_VCM_1_25 3 // 1.25V
|
||||
|
||||
/* REG 5 */
|
||||
__MREG__(MAX2837_VGA,5,4,5) // max=00000, attenuation in 2dB steps
|
||||
__MREG__(MAX2837_sel_In1_In2,5,5,1)
|
||||
#define MAX2837_sel_In1_In2_RXVGA 0
|
||||
#define MAX2837_sel_In1_In2_TXAM 1
|
||||
__MREG__(MAX2837_turbo15n20,5,6,1)
|
||||
__MREG__(MAX2837_VGA_Curr,5,8,2) // 01=default, 00=-33%, 10=+33%, 11=+67%
|
||||
__MREG__(MAX2837_fuse_arm,5,9,1)
|
||||
|
||||
/* REG 6 */
|
||||
__MREG__(MAX2837_RSSI_EN,6,6,1) // enable RSSI
|
||||
__MREG__(MAX2837_RSSI_MUX,6,7,1)
|
||||
#define MAX2837_RSSI_MUX_RSSI 0
|
||||
#define MAX2837_RSSI_MUX_TEMP 1
|
||||
__MREG__(MAX2837_RSSI_MODE,6,8,1) // set to override RXHP pin
|
||||
__MREG__(MAX2837_LPF_MODE_SEL,6,9,1) // set to enable mode in reg 2 ModeCtrl
|
||||
|
||||
/* REG 7 is R/O */
|
||||
// D4:0 ts_adc (temp sensor)
|
||||
// D9:5 zeros or test outputs
|
||||
|
||||
/* REG 8 */
|
||||
__MREG__(MAX2837_LNAgain_SPI_EN,8,0,1) // set to override pin control of LNA
|
||||
__MREG__(MAX2837_VGAgain_SPI_EN,8,1,1) // set to override pin control of VGA
|
||||
__MREG__(MAX2837_EN_Bias_Trim,8,2,1) // route bias current to bondpad
|
||||
__MREG__(MAX2837_BIAS_TRIM_SPI,8,7,5) // down=00000, up=11111, nom=10000
|
||||
__MREG__(MAX2837_BIAS_TRIM_CNTRL,8,8,1) // enable BIAS_TRIM_SPI value
|
||||
__MREG__(MAX2837_RX_IQERR_SPI_EN,8,9,1) // ???
|
||||
|
||||
/* REG 9 */
|
||||
__MREG__(MAX2837_ts_adc_trigger,9,0,1) // temp sensor trigger (one shot)
|
||||
__MREG__(MAX2837_ts_en,9,1,1) // temp sensor enable (before trigger)
|
||||
__MREG__(MAX2837_LPFtrim_SPI_EN,9,2,1)
|
||||
__MREG__(MAX2837_DOUT_DRVH,9,3,1)
|
||||
#define MAX2837_DOUT_DRVH_1X 0
|
||||
#define MAX2837_DOUT_DRVH_4X 1
|
||||
__MREG__(MAX2837_DOUT_PU,9,4,1) // set to enable CMOS PU (default), else OD
|
||||
__MREG__(MAX2837_DOUT_SEL,9,7,3)
|
||||
#define MAX2837_DOUT_SEL_SPI 0 // default, SPI comm
|
||||
#define MAX2837_DOUT_SEL_PLL_LOCK_DETECT 1
|
||||
#define MAX2837_DOUT_SEL_VAS_TEST_OUT 2
|
||||
#define MAX2837_DOUT_SEL_HPFSM_TEST_OUT 3
|
||||
#define MAX2837_DOUT_SEL_LOGEN_TRIM_OUT 4
|
||||
#define MAX2837_DOUT_SEL_RX_FUSE_GASKET 5
|
||||
#define MAX2837_DOUT_SEL_TX_FUSE_GASKET 6
|
||||
#define MAX2837_DOUT_SEL_ZERO 7
|
||||
__MREG__(MAX2837_fuse_sh,9,8,1) // ???
|
||||
__MREG__(MAX2837_fuse_burn_gkt,9,9,1) // enable (don't)
|
||||
|
||||
/* REG 10 */
|
||||
__MREG__(MAX2837_TXCAL_GAIN,10,2,2) // 00=default, steps of +10dB
|
||||
__MREG__(MAX2837_TXCAL_V2I_FILT,10,5,3) // 000=+12%, 111=-16%, 011=default
|
||||
__MREG__(MAX2837_TX_BIAS_ADJ,10,7,2) // 00=-10%, 01=default, 10=+10%, 11=+20%
|
||||
|
||||
/* REG 11 */
|
||||
__MREG__(MAX2837_AMD_SPI_EN,11,0,1) // enable AM detector
|
||||
__MREG__(MAX2837_TXMXR_V2I_GAIN,11,4,4) // 0000=max, steps of -0.5dB
|
||||
|
||||
/* REG 12 */
|
||||
__MREG__(MAX2837_HPC_10M,12,1,2) // steps of 0.4uS (0.0-1.2)
|
||||
__MREG__(MAX2837_HPC_10M_GAIN,12,3,2) // steps of 0.4uS (0.0-1.2)
|
||||
__MREG__(MAX2837_HPC_600K,12,6,3) // steps of 0.8uS (0.0-4.8), 7=stay 1
|
||||
__MREG__(MAX2837_HPC_600K_GAIN,12,9,3) // steps of 0.8uS (0.0-4.8), 7=stay 1
|
||||
|
||||
/* REG 13 */
|
||||
__MREG__(MAX2837_HPC_100K,13,1,2) // steps of 3.2uS (0.0-9.6)
|
||||
__MREG__(MAX2837_HPC_100K_GAIN,13,3,2) // steps of 3.2uS (0.0-9.6)
|
||||
__MREG__(MAX2837_HPC_30K,13,5,2) // steps of 3.2uS (0.0-9.6)
|
||||
__MREG__(MAX2837_HPC_30K_GAIN,13,7,2) // steps of 3.2uS (0.0-9.6)
|
||||
__MREG__(MAX2837_HPC_1K,13,9,2) // steps of 3.2uS (0.0-9.6)
|
||||
|
||||
/* REG 14 */
|
||||
__MREG__(MAX2837_HPC_1K_GAIN,14,1,2) // steps of 3.2uS (0.0-9.6)
|
||||
__MREG__(MAX2837_HPC_DELAY,14,3,2) // steps of 0.2uS (0.0-0.6)
|
||||
__MREG__(MAX2837_HPC_STOP,14,5,2)
|
||||
#define MAX2837_STOP_100 0
|
||||
#define MAX2837_STOP_1K 1
|
||||
#define MAX2837_STOP_30K 2
|
||||
#define MAX2837_STOP_100K 3
|
||||
__MREG__(MAX2837_HPC_STOP_M2,14,7,2)
|
||||
#define MAX2837_STOP_M2_1K 0
|
||||
#define MAX2837_STOP_M2_30K 1
|
||||
#define MAX2837_STOP_M2_100K 2
|
||||
#define MAX2837_STOP_M2_600K 3
|
||||
__MREG__(MAX2837_HPC_RXGAIN_EN,14,8,1) // RXVGA HPFSM re-triggered by B7 & B6
|
||||
__MREG__(MAX2837_HPC_MODE,14,9,1) // use RXHP
|
||||
|
||||
/* REG 15 */
|
||||
__MREG__(MAX2837_HPC_DIVH,15,0,1)
|
||||
#define MAX2837_HPC_DIVH_20M 0
|
||||
#define MAX2837_HPC_DIVH_40M 1
|
||||
__MREG__(MAX2837_HPC_TST,15,5,5) // filter test modes ... see doc
|
||||
__MREG__(MAX2837_HPC_SEQ_BYP,15,6,1) // set to bypass programmed sequence
|
||||
__MREG__(MAX2837_DOUT_CSB_SEL,15,7,1) // set to tri state DOUT when CSB high
|
||||
|
||||
/* REG 16 */
|
||||
__MREG__(MAX2837_EN_SPI,16,0,1) // enable overall chip
|
||||
__MREG__(MAX2837_CAL_SPI,16,1,1) // enable calibration mode
|
||||
__MREG__(MAX2837_LOGEN_SPI_EN,16,2,1) // ???
|
||||
__MREG__(MAX2837_SYN_SPI_EN,16,3,1) // enable synthesizer
|
||||
__MREG__(MAX2837_VAS_SPI_EN,16,4,1) // enable VCO autoselect
|
||||
__MREG__(MAX2837_PADRV_SPI_EN,16,5,1) // enable power amp
|
||||
__MREG__(MAX2837_PADAC_SPI_EN,16,6,1) // enable power amp bias DAC always
|
||||
__MREG__(MAX2837_PADAC_TX_EN,16,7,1) // enable power amp bias only if TX pin
|
||||
__MREG__(MAX2837_TXMX_SPI_EN,16,8,1) // enable TX mixer
|
||||
__MREG__(MAX2837_TXLO_SPI_EN,16,9,1) // enable TX LO
|
||||
|
||||
/* REG 17 */
|
||||
__MREG__(MAX2837_SYN_FRAC_LO,17,9,10)
|
||||
|
||||
/* REG 18 */
|
||||
__MREG__(MAX2837_SYN_FRAC_HI,18,9,10)
|
||||
|
||||
/* REG 19 */
|
||||
__MREG__(MAX2837_SYN_INT,19,7,8)
|
||||
__MREG__(MAX2837_LOGEN_BSW,19,9,2)
|
||||
#define MAX2837_LOGEN_BSW_2_3 0 // 2300 - <2400 MHz
|
||||
#define MAX2837_LOGEN_BSW_2_4 1 // 2400 - <2500 MHz
|
||||
#define MAX2837_LOGEN_BSW_2_5 2 // 2500 - <2600 MHz
|
||||
#define MAX2837_LOGEN_BSW_2_6 3 // 2600 - <2700 MHz
|
||||
|
||||
/* REG 20 */
|
||||
__MREG__(MAX2837_SYN_MODE,20,0,1)
|
||||
#define MAX2837_SYN_MODE_INTEGER 0
|
||||
#define MAX2837_SYN_MODE_FRACTIONAL 1
|
||||
__MREG__(MAX2837_SYN_REF_DIV,20,2,2)
|
||||
#define MAX2837_SYN_REF_DIV_1 0
|
||||
#define MAX2837_SYN_REF_DIV_2 1
|
||||
#define MAX2837_SYN_REF_DIV_4 2
|
||||
#define MAX2837_SYN_REF_DIV_8 3
|
||||
__MREG__(MAX2837_SYN_CURRENT_,20,4,2)
|
||||
#define MAX2837_SYN_CURRENT_3_2_DIFF 0 // 3.2mA differential
|
||||
#define MAX2837_SYN_CURRENT_1_6_DIFF 1 // 1.6mA differential
|
||||
#define MAX2837_SYN_CURRENT_1_6_SINGLE 2 // 1.6mA single-ended
|
||||
#define MAX2837_SYN_CURRENT_0_8_SINGLE 3 // 0.8mA single-ended
|
||||
__MREG__(MAX2837_SYN_CLOCKOUT_DRIVE,20,5,1)
|
||||
#define MAX2837_SYN_CLOCKOUT_DRIVE_1X 0
|
||||
#define MAX2837_SYN_CLOCKOUT_DRIVE_4X 1
|
||||
__MREG__(MAX2837_SYN_TURBO_EN,20,6,1) // ???
|
||||
__MREG__(MAX2837_SYN_BIAS_SPI,20,7,1) // Use trim value below
|
||||
__MREG__(MAX2837_SYN_BIAS_TRIM,20,9,2) // 00=max 10=default 11=min
|
||||
|
||||
/* REG 21 */
|
||||
__MREG__(MAX2837_SYN_CP_COMMON_MODE_EN,21,0,1)
|
||||
__MREG__(MAX2837_SYN_PRESCALER_BIAS_BOOST,21,1,1) // 0=default 1=+20%
|
||||
__MREG__(MAX2837_SYN_CP_BETA_EN,21,2,1)
|
||||
__MREG__(MAX2837_SYN_SD_CLOCK_SEL,21,3,1)
|
||||
#define MAX2837_SYN_SD_CLOCK_PFD 0 // from PFD reset
|
||||
#define MAX2837_SYN_SD_CLOCK_PRE 1 // from prescaler
|
||||
__MREG__(MAX2837_SYN_CP_PULSE_WIDTH_ADJ,21,4,1) // 0=default 1=-20%
|
||||
__MREG__(MAX2837_SYN_CP_LIN_CUR,21,6,2) // +3% per step
|
||||
__MREG__(MAX2837_SYN_TEST_OUT,21,9,3) // high bit locks CP in test mode
|
||||
#define MAX2837_SYN_TEST_LOCK_DETECT 0b000
|
||||
#define MAX2837_SYN_TEST_SD 0b001
|
||||
#define MAX2837_SYN_TEST_REF_DIV 0b010
|
||||
#define MAX2837_SYN_TEST_MAIN_DIV 0b011
|
||||
#define MAX2837_SYN_TEST_CP_LO_Z_LOCK_DETECT 0b100
|
||||
#define MAX2837_SYN_TEST_CP_SOURCE_SD 0b101
|
||||
#define MAX2837_SYN_TEST_CP_SINK_REF_DIV 0b110
|
||||
#define MAX2837_SYN_TEST_CP_HI_Z_MAIN_DIV 0b111
|
||||
|
||||
/* REG 22 */
|
||||
__MREG__(MAX2837_VAS_EN,22,0,1) // select VCO subband by VAS, vs. reg
|
||||
__MREG__(MAX2837_VAS_RELOCK_SEL,22,1,1)
|
||||
#define MAX2837_VAS_RELOCK_SELECTED 0
|
||||
#define MAX2837_VAS_RELOCK_PRESENT 1
|
||||
__MREG__(MAX2837_VAS_DIV,22,4,3)
|
||||
#define MAX2837_VAS_CLK_DIV_8 0
|
||||
#define MAX2837_VAS_CLK_DIV_9 1
|
||||
#define MAX2837_VAS_CLK_DIV_10 2
|
||||
#define MAX2837_VAS_CLK_DIV_11 3
|
||||
#define MAX2837_VAS_CLK_DIV_12 4
|
||||
#define MAX2837_VAS_CLK_DIV_13 5
|
||||
#define MAX2837_VAS_CLK_DIV_14 6
|
||||
#define MAX2837_VAS_CLK_DIV_2 7
|
||||
__MREG__(MAX2837_VAS_DLY,22,6,2) // Delay = Txtal * VAS_DIV * VAS_DLY * 7
|
||||
#define MAX2837_VAS_DLY_16
|
||||
#define MAX2837_VAS_DLY_32
|
||||
#define MAX2837_VAS_DLY_64
|
||||
#define MAX2837_VAS_DLY_128
|
||||
__MREG__(MAX2837_VAS_TRIG_EN,22,7,1)
|
||||
__MREG__(MAX2837_VAS_ADE,22,8,1)
|
||||
__MREG__(MAX2837_VAS_ADL_SPI,22,9,1)
|
||||
|
||||
/* REG 23 */
|
||||
__MREG__(MAX2837_VAS_SPI,23,4,5) // subband selection default is center (15)
|
||||
__MREG__(MAX2837_XTAL_BIAS,23,6,2)
|
||||
#define MAX2837_XTAL_BIAS_240_20 0 // 240uA for 20MHz
|
||||
#define MAX2837_XTAL_BIAS_420_20 1
|
||||
#define MAX2837_XTAL_BIAS_600_40 2
|
||||
#define MAX2837_XTAL_BIAS_780_40 3
|
||||
__MREG__(MAX2837_XTAL_E2C_BIAS,23,7,1)
|
||||
#define MAX2837_XTAL_E2C_BIAS_360 0 // uA
|
||||
#define MAX2837_XTAL_E2C_BIAS_540 1
|
||||
__MREG__(MAX2837_VAS_SE,23,8,1)
|
||||
#define MAX2837_VAS_SE_DIFF 0
|
||||
#define MAX2837_VAS_SE_SINGLE 1
|
||||
__MREG__(MAX2837_VCO_SPI_EN,23,9,1) // set to override mode
|
||||
|
||||
/* REG 24 */
|
||||
__MREG__(MAX2837_XTAL_TUNE,24,6,7) // 0=max 127=min freq
|
||||
__MREG__(MAX2837_CLKOUT_PIN_EN,24,7,1)
|
||||
__MREG__(MAX2837_CLKOUT_DIV,24,8,1)
|
||||
#define MAX2837_CLKOUT_DIV_1 0
|
||||
#define MAX2837_CLKOUT_DIV_2 1
|
||||
__MREG__(MAX2837_XTAL_CORE_EN,24,9,1) // set to override mode
|
||||
|
||||
/* REG 25 */
|
||||
__MREG__(MAX2837_VCO_BIAS_SPI_EN,25,0,1) // enable override of vco bias trim
|
||||
__MREG__(MAX2837_VCO_BIAS,25,4,4) // 0b1000 nominal
|
||||
__MREG__(MAX2837_VCO_CMEN,25,5,1) // enable Miller capacitor
|
||||
__MREG__(MAX2837_VCO_PDET_TST,25,7,2) // peak detector test output select
|
||||
#define MAX2837_VCO_PDET_TST_NORMAL 0
|
||||
#define MAX2837_VCO_PDET_TST_PDOUT 1 // peak detector output
|
||||
#define MAX2837_VCO_PDET_TST_PDREF 2 // peak detector reference
|
||||
#define MAX2837_VCO_PDET_TST_TEMP 3 // VCO temperature sensor
|
||||
__MREG__(MAX2837_VCO_BUF_BIAS,25,9,2) // VCO buffer bias
|
||||
#define MAX2837_VCO_BUF_BIAS_800uA 0
|
||||
#define MAX2837_VCO_BUF_BIAS_1200uA 1 // default
|
||||
#define MAX2837_VCO_BUF_BIAS_1600uA 2
|
||||
#define MAX2837_VCO_BUF_BIAS_2000uA 3
|
||||
|
||||
/* REG 26 */
|
||||
__MREG__(MAX2837_LOGEN_BIAS1,26,1,2) // LOGEN emitter follower bias
|
||||
#define MAX2837_LOGEN_BIAS1_400u 0
|
||||
#define MAX2837_LOGEN_BIAS1_600u 1
|
||||
#define MAX2837_LOGEN_BIAS1_800u 2
|
||||
#define MAX2837_LOGEN_BIAS1_1000u 3
|
||||
__MREG__(MAX2837_LOGEN_BIAS2,26,2,1) // LOGEN RX/TX Gm bias
|
||||
#define MAX2837_LOGEN_BIAS2_DEFAULT 0 // default
|
||||
#define MAX2837_LOGEN_BIAS2_PLUS25 1 // +25%
|
||||
__MREG__(MAX2837_LOGEN_2GM,26,3,1) //
|
||||
__MREG__(MAX2837_LOGEN_TRIM1,26,4,1) // mixer tank trim enable
|
||||
__MREG__(MAX2837_LOGEN_TRIM2,26,5,1) // bandpass filter trim enable
|
||||
__MREG__(MAX2837_VAS_TST,26,9,4) // DOUT test signal select
|
||||
#define MAX2837_VAS_TST_VCO_BSW0 0 // VAS band select output (5 bits)
|
||||
#define MAX2837_VAS_TST_VCO_BSW1 1
|
||||
#define MAX2837_VAS_TST_VCO_BSW2 2
|
||||
#define MAX2837_VAS_TST_VCO_BSW3 3
|
||||
#define MAX2837_VAS_TST_VCO_BSW4 4
|
||||
#define MAX2837_VAS_TST_Vtune_ADC0 5 // VCO Vtune ADC output (3 bits)
|
||||
#define MAX2837_VAS_TST_Vtune_ADC1 6
|
||||
#define MAX2837_VAS_TST_Vtune_ADC2 7
|
||||
#define MAX2837_VAS_TST_VASA 8 // VAS accomplish (success)
|
||||
#define MAX2837_VAS_TST_VASE 9 // VAS end (success or gave up)
|
||||
#define MAX2837_VAS_TST_ZERO 15 // default
|
||||
|
||||
/* REG 27 */
|
||||
__MREG__(MAX2837_PADRV_BIAS,27,2,3) // PA driver bias (0-7), default 3
|
||||
__MREG__(MAX2837_PADRV_DOWN_SPI_EN,27,3,1) // PA drv down process select enable
|
||||
__MREG__(MAX2837_PADRV_DOWN,27,4,1) // PA driver down select
|
||||
#define MAX2837_PADRV_DOWN_DOWN 0
|
||||
#define MAX2837_PADRV_DOWN_UP 1 // default
|
||||
__MREG__(MAX2837_PADAC_IV,27,5,1) // PA DAC I/V output select
|
||||
#define MAX2837_PADAC_IV_VOLTAGE 0
|
||||
#define MAX2837_PADAC_IV_CURRENT 1 // default
|
||||
__MREG__(MAX2837_PADAC_VMODE,27,6,1) // set logic 0 or 1 for PADAC_IV out
|
||||
__MREG__(MAX2837_PADAC_DIV,27,7,1) // PA DAC clock divide ratio
|
||||
#define MAX2837_PADAC_DIV_20MHz 0
|
||||
#define MAX2837_PADAC_DIV_40MHz 1
|
||||
__MREG__(MAX2837_TXGATE_EN,27,8,1) // set to relock when TXOOL=1 or LD=0
|
||||
__MREG__(MAX2837_TXDCCORR_EN,27,9,1) // TX DC offset correction enable
|
||||
|
||||
/* REG 28 */
|
||||
__MREG__(MAX2837_PADAC_BIAS,28,5,6) // PADAC output current control, 5uA step
|
||||
__MREG__(MAX2837_PADAC_DLY,28,9,4) // PADAC turn-on delay control
|
||||
// 0,1 are both 0us
|
||||
// then 0.5us steps to 7.0us
|
||||
|
||||
/* REG 29 */
|
||||
__MREG__(MAX2837_TXVGA_GAIN_SPI_EN,29,0,1) // Enable SPI control of TXVGA gain
|
||||
__MREG__(MAX2837_TXVGA_GAIN_MSB_SPI_EN,29,1,1)
|
||||
__MREG__(MAX2837_TX_DCCORR_SPI_EN,29,2,1)
|
||||
__MREG__(MAX2837_FUSE_ARM,29,3,1) // Fuse burn enable
|
||||
__MREG__(MAX2837_TXVGA_GAIN,29,9,6) // 0 = min atten, 63 = max atten
|
||||
|
||||
/* REG 30 */
|
||||
__MREG__(MAX2837_TXLO_IQ,30,4,5)
|
||||
__MREG__(MAX2837_TXLO_IQ_SPI_EN,30,5,1)
|
||||
__MREG__(MAX2837_TXLO_BUFF_BIAS,30,7,2)
|
||||
#define MAX2837_TXLO_BUFF_BIAS_1_0mA 0
|
||||
#define MAX2837_TXLO_BUFF_BIAS_1_5mA 1
|
||||
#define MAX2837_TXLO_BUFF_BIAS_2_0mA 2 // default
|
||||
#define MAX2837_TXLO_BUFF_BIAS_2_5mA 3
|
||||
__MREG__(MAX2837_FUSE_GKT,30,8,1)
|
||||
__MREG__(MAX2837_FUSE_RTH,30,9,1)
|
||||
|
||||
/* REG 31 */
|
||||
// 0 -> 992/0uA correction, 15 -> 0/992uA correction ... if TX_DCCORR_SPI_EN
|
||||
__MREG__(MAX2837_TX_DCCORR_I,31,4,5)
|
||||
__MREG__(MAX2837_TX_DCCORR_Q,31,9,5)
|
||||
|
||||
#endif // __MAX2837_REGS_DEF
|
||||
@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <libopencm3/lpc43xx/gpio.h>
|
||||
#include <libopencm3/lpc43xx/ssp.h>
|
||||
|
||||
#include "hackrf_core.h"
|
||||
#include "max5864.h"
|
||||
|
||||
void max5864_spi_write(uint_fast8_t value) {
|
||||
gpio_clear(PORT_AD_CS, PIN_AD_CS);
|
||||
ssp_transfer(SSP1_NUM, value);
|
||||
gpio_set(PORT_AD_CS, PIN_AD_CS);
|
||||
}
|
||||
|
||||
/* Set MAX5864 operation mode to "Shutdown":
|
||||
* REF: off
|
||||
* CLK: off
|
||||
* ADCs: off (bus is tri-stated)
|
||||
* DACs: off (set input bus to zero or OVdd)
|
||||
*/
|
||||
void max5864_shutdown()
|
||||
{
|
||||
max5864_spi_write(0x00);
|
||||
}
|
||||
|
||||
/* Set MAX5864 operation mode to "Standby":
|
||||
* REF: on
|
||||
* CLK: off?
|
||||
* ADCs: off (bus is tri-stated)
|
||||
* DACs: off (set input bus to zero or OVdd)
|
||||
*/
|
||||
void max5864_standby()
|
||||
{
|
||||
max5864_spi_write(0x05);
|
||||
}
|
||||
|
||||
/* Set MAX5864 operation mode to "Idle":
|
||||
* REF: on
|
||||
* CLK: on
|
||||
* ADCs: off (bus is tri-stated)
|
||||
* DACs: off (set input bus to zero or OVdd)
|
||||
*/
|
||||
void max5864_idle()
|
||||
{
|
||||
max5864_spi_write(0x01);
|
||||
}
|
||||
|
||||
/* Set MAX5864 operation mode to "Rx":
|
||||
* REF: on
|
||||
* CLK: on
|
||||
* ADCs: on
|
||||
* DACs: off (set input bus to zero or OVdd)
|
||||
*/
|
||||
void max5864_rx()
|
||||
{
|
||||
max5864_spi_write(0x02);
|
||||
}
|
||||
|
||||
/* Set MAX5864 operation mode to "Tx":
|
||||
* REF: on
|
||||
* CLK: on
|
||||
* ADCs: off (bus is tri-stated)
|
||||
* DACs: on
|
||||
*/
|
||||
void max5864_tx()
|
||||
{
|
||||
max5864_spi_write(0x03);
|
||||
}
|
||||
|
||||
/* Set MAX5864 operation mode to "Xcvr":
|
||||
* REF: on
|
||||
* CLK: on
|
||||
* ADCs: on
|
||||
* DACs: on
|
||||
*/
|
||||
void max5864_xcvr()
|
||||
{
|
||||
max5864_spi_write(0x04);
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright 2012 Jared Boone <jared@sharebrained.com>
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __MAX5864_H
|
||||
#define __MAX5864_H
|
||||
|
||||
void max5864_shutdown();
|
||||
void max5864_standby();
|
||||
void max5864_idle();
|
||||
void max5864_rx();
|
||||
void max5864_tx();
|
||||
void max5864_xcvr();
|
||||
|
||||
#endif // __MAX5864_H
|
||||
@ -0,0 +1,335 @@
|
||||
/*
|
||||
* Copyright 2012 Jared Boone
|
||||
* Copyright 2013 Benjamin Vernoux
|
||||
*
|
||||
* This file is part of HackRF.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 51 Franklin Street,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "rf_path.h"
|
||||
|
||||
#include <libopencm3/lpc43xx/gpio.h>
|
||||
#include <libopencm3/lpc43xx/scu.h>
|
||||
|
||||
#include <hackrf_core.h>
|
||||
|
||||
#include <rffc5071.h>
|
||||
#include <max2837.h>
|
||||
#include <max5864.h>
|
||||
#include <sgpio.h>
|
||||
|
||||
#if (defined JAWBREAKER || defined HACKRF_ONE)
|
||||
/*
|
||||
* RF switches on Jawbreaker are controlled by General Purpose Outputs (GPO) on
|
||||
* the RFFC5072.
|
||||
*
|
||||
* On HackRF One, the same signals are controlled by GPIO on the LPC.
|
||||
* SWITCHCTRL_NO_TX_AMP_PWR and SWITCHCTRL_NO_RX_AMP_PWR are not normally used
|
||||
* on HackRF One as the amplifier power is instead controlled only by
|
||||
* SWITCHCTRL_AMP_BYPASS.
|
||||
*/
|
||||
#define SWITCHCTRL_NO_TX_AMP_PWR (1 << 0) /* GPO1 turn off TX amp power */
|
||||
#define SWITCHCTRL_AMP_BYPASS (1 << 1) /* GPO2 bypass amp section */
|
||||
#define SWITCHCTRL_TX (1 << 2) /* GPO3 1 for TX mode, 0 for RX mode */
|
||||
#define SWITCHCTRL_MIX_BYPASS (1 << 3) /* GPO4 bypass RFFC5072 mixer section */
|
||||
#define SWITCHCTRL_HP (1 << 4) /* GPO5 1 for high-pass, 0 for low-pass */
|
||||
#define SWITCHCTRL_NO_RX_AMP_PWR (1 << 5) /* GPO6 turn off RX amp power */
|
||||
|
||||
/*
|
||||
GPO6 GPO5 GPO4 GPO3 GPO2 GPO1
|
||||
!RXAMP HP MIXBP TX AMPBP !TXAMP Mix mode Amp mode
|
||||
1 X 1 1 1 1 TX bypass Bypass
|
||||
1 X 1 1 0 0 TX bypass TX amplified
|
||||
1 1 0 1 1 1 TX high Bypass
|
||||
1 1 0 1 0 0 TX high TX amplified
|
||||
1 0 0 1 1 1 TX low Bypass
|
||||
1 0 0 1 0 0 TX low TX amplified
|
||||
1 X 1 0 1 1 RX bypass Bypass
|
||||
0 X 1 0 0 1 RX bypass RX amplified
|
||||
1 1 0 0 1 1 RX high Bypass
|
||||
0 1 0 0 0 1 RX high RX amplified
|
||||
1 0 0 0 1 1 RX low Bypass
|
||||
0 0 0 0 0 1 RX low RX amplified
|
||||
*/
|
||||
|
||||
/*
|
||||
* Safe (initial) switch settings turn off both amplifiers and enable both amp
|
||||
* bypass and mixer bypass.
|
||||
*/
|
||||
#define SWITCHCTRL_SAFE (SWITCHCTRL_NO_TX_AMP_PWR | SWITCHCTRL_AMP_BYPASS | SWITCHCTRL_TX | SWITCHCTRL_MIX_BYPASS | SWITCHCTRL_HP | SWITCHCTRL_NO_RX_AMP_PWR)
|
||||
#endif
|
||||
|
||||
uint8_t switchctrl = SWITCHCTRL_SAFE;
|
||||
|
||||
/*
|
||||
* Antenna port power on HackRF One is controlled by GPO1 on the RFFC5072.
|
||||
* This is the only thing we use RFFC5072 GPO for on HackRF One. The value of
|
||||
* SWITCHCTRL_NO_ANT_PWR does not correspond to the GPO1 bit in the gpo
|
||||
* register.
|
||||
*/
|
||||
#define SWITCHCTRL_ANT_PWR (1 << 6) /* turn on antenna port power */
|
||||
|
||||
#ifdef HACKRF_ONE
|
||||
static void switchctrl_set_hackrf_one(uint8_t ctrl) {
|
||||
if (ctrl & SWITCHCTRL_TX) {
|
||||
gpio_set(PORT_TX, PIN_TX);
|
||||
gpio_clear(PORT_RX, PIN_RX);
|
||||
} else {
|
||||
gpio_clear(PORT_TX, PIN_TX);
|
||||
gpio_set(PORT_RX, PIN_RX);
|
||||
}
|
||||
|
||||
if (ctrl & SWITCHCTRL_MIX_BYPASS) {
|
||||
gpio_set(PORT_MIX_BYPASS, PIN_MIX_BYPASS);
|
||||
gpio_clear(PORT_NO_MIX_BYPASS, PIN_NO_MIX_BYPASS);
|
||||
if (ctrl & SWITCHCTRL_TX) {
|
||||
gpio_set(PORT_TX_MIX_BP, PIN_TX_MIX_BP);
|
||||
gpio_clear(PORT_RX_MIX_BP, PIN_RX_MIX_BP);
|
||||
} else {
|
||||
gpio_clear(PORT_TX_MIX_BP, PIN_TX_MIX_BP);
|
||||
gpio_set(PORT_RX_MIX_BP, PIN_RX_MIX_BP);
|
||||
}
|
||||
} else {
|
||||
gpio_clear(PORT_MIX_BYPASS, PIN_MIX_BYPASS);
|
||||
gpio_set(PORT_NO_MIX_BYPASS, PIN_NO_MIX_BYPASS);
|
||||
gpio_clear(PORT_TX_MIX_BP, PIN_TX_MIX_BP);
|
||||
gpio_clear(PORT_RX_MIX_BP, PIN_RX_MIX_BP);
|
||||
}
|
||||
|
||||
if (ctrl & SWITCHCTRL_HP) {
|
||||
gpio_set(PORT_HP, PIN_HP);
|
||||
gpio_clear(PORT_LP, PIN_LP);
|
||||
} else {
|
||||
gpio_clear(PORT_HP, PIN_HP);
|
||||
gpio_set(PORT_LP, PIN_LP);
|
||||
}
|
||||
|
||||
if (ctrl & SWITCHCTRL_AMP_BYPASS) {
|
||||
gpio_set(PORT_AMP_BYPASS, PIN_AMP_BYPASS);
|
||||
gpio_clear(PORT_TX_AMP, PIN_TX_AMP);
|
||||
gpio_set(PORT_NO_TX_AMP_PWR, PIN_NO_TX_AMP_PWR);
|
||||
gpio_clear(PORT_RX_AMP, PIN_RX_AMP);
|
||||
gpio_set(PORT_NO_RX_AMP_PWR, PIN_NO_RX_AMP_PWR);
|
||||
} else if (ctrl & SWITCHCTRL_TX) {
|
||||
gpio_clear(PORT_AMP_BYPASS, PIN_AMP_BYPASS);
|
||||
gpio_set(PORT_TX_AMP, PIN_TX_AMP);
|
||||
gpio_clear(PORT_NO_TX_AMP_PWR, PIN_NO_TX_AMP_PWR);
|
||||
gpio_clear(PORT_RX_AMP, PIN_RX_AMP);
|
||||
gpio_set(PORT_NO_RX_AMP_PWR, PIN_NO_RX_AMP_PWR);
|
||||
} else {
|
||||
gpio_clear(PORT_AMP_BYPASS, PIN_AMP_BYPASS);
|
||||
gpio_clear(PORT_TX_AMP, PIN_TX_AMP);
|
||||
gpio_set(PORT_NO_TX_AMP_PWR, PIN_NO_TX_AMP_PWR);
|
||||
gpio_set(PORT_RX_AMP, PIN_RX_AMP);
|
||||
gpio_clear(PORT_NO_RX_AMP_PWR, PIN_NO_RX_AMP_PWR);
|
||||
}
|
||||
|
||||
/*
|
||||
* These normally shouldn't be set post-Jawbreaker, but they can be
|
||||
* used to explicitly turn off power to the amplifiers while AMP_BYPASS
|
||||
* is unset:
|
||||
*/
|
||||
if (ctrl & SWITCHCTRL_NO_TX_AMP_PWR)
|
||||
gpio_set(PORT_NO_TX_AMP_PWR, PIN_NO_TX_AMP_PWR);
|
||||
if (ctrl & SWITCHCTRL_NO_RX_AMP_PWR)
|
||||
gpio_set(PORT_NO_RX_AMP_PWR, PIN_NO_RX_AMP_PWR);
|
||||
|
||||
if (ctrl & SWITCHCTRL_ANT_PWR) {
|
||||
rffc5071_set_gpo(0x00); /* turn on antenna power by clearing GPO1 */
|
||||
} else {
|
||||
rffc5071_set_gpo(0x01); /* turn off antenna power by setting GPO1 */
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void switchctrl_set(const uint8_t gpo) {
|
||||
#ifdef JAWBREAKER
|
||||
rffc5071_set_gpo(gpo);
|
||||
#elif HACKRF_ONE
|
||||
switchctrl_set_hackrf_one(gpo);
|
||||
#else
|
||||
(void)gpo;
|
||||
#endif
|
||||
}
|
||||
|
||||
void rf_path_pin_setup() {
|
||||
#ifdef HACKRF_ONE
|
||||
/* Configure RF switch control signals */
|
||||
scu_pinmux(SCU_HP, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_LP, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_TX_MIX_BP, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_NO_MIX_BYPASS, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_RX_MIX_BP, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_TX_AMP, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_TX, SCU_GPIO_FAST | SCU_CONF_FUNCTION4);
|
||||
scu_pinmux(SCU_MIX_BYPASS, SCU_GPIO_FAST | SCU_CONF_FUNCTION4);
|
||||
scu_pinmux(SCU_RX, SCU_GPIO_FAST | SCU_CONF_FUNCTION4);
|
||||
scu_pinmux(SCU_NO_TX_AMP_PWR, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_AMP_BYPASS, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_RX_AMP, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
scu_pinmux(SCU_NO_RX_AMP_PWR, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
|
||||
/* Configure RF power supply (VAA) switch */
|
||||
scu_pinmux(SCU_NO_VAA_ENABLE, SCU_GPIO_FAST | SCU_CONF_FUNCTION0);
|
||||
|
||||
/* Configure RF switch control signals as outputs */
|
||||
GPIO0_DIR |= PIN_AMP_BYPASS;
|
||||
GPIO1_DIR |= (PIN_NO_MIX_BYPASS | PIN_RX_AMP | PIN_NO_RX_AMP_PWR);
|
||||
GPIO2_DIR |= (PIN_HP | PIN_LP | PIN_TX_MIX_BP | PIN_RX_MIX_BP | PIN_TX_AMP);
|
||||
GPIO3_DIR |= PIN_NO_TX_AMP_PWR;
|
||||
GPIO5_DIR |= (PIN_TX | PIN_MIX_BYPASS | PIN_RX);
|
||||
|
||||
/*
|
||||
* Safe (initial) switch settings turn off both amplifiers and antenna port
|
||||
* power and enable both amp bypass and mixer bypass.
|
||||
*/
|
||||
switchctrl_set(SWITCHCTRL_AMP_BYPASS | SWITCHCTRL_MIX_BYPASS);
|
||||
|
||||
/* Configure RF power supply (VAA) switch control signal as output */
|
||||
GPIO_DIR(PORT_NO_VAA_ENABLE) |= PIN_NO_VAA_ENABLE;
|
||||
|
||||
/* Safe state: start with VAA turned off: */
|
||||
disable_rf_power();
|
||||
#endif
|
||||
}
|
||||
|
||||
void rf_path_init(void) {
|
||||
ssp1_set_mode_max5864();
|
||||
max5864_shutdown();
|
||||
|
||||
ssp1_set_mode_max2837();
|
||||
max2837_setup();
|
||||
max2837_start();
|
||||
|
||||
rffc5071_setup();
|
||||
switchctrl_set(switchctrl);
|
||||
}
|
||||
|
||||
void rf_path_set_direction(const rf_path_direction_t direction) {
|
||||
/* Turn off TX and RX amplifiers, then enable based on direction and bypass state. */
|
||||
switchctrl |= SWITCHCTRL_NO_TX_AMP_PWR | SWITCHCTRL_NO_RX_AMP_PWR;
|
||||
switch(direction) {
|
||||
case RF_PATH_DIRECTION_TX:
|
||||
switchctrl |= SWITCHCTRL_TX;
|
||||
if( (switchctrl & SWITCHCTRL_AMP_BYPASS) == 0 ) {
|
||||
/* TX amplifier is in path, be sure to enable TX amplifier. */
|
||||
switchctrl &= ~SWITCHCTRL_NO_TX_AMP_PWR;
|
||||
}
|
||||
rffc5071_tx();
|
||||
if( switchctrl & SWITCHCTRL_MIX_BYPASS ) {
|
||||
rffc5071_disable();
|
||||
} else {
|
||||
rffc5071_enable();
|
||||
}
|
||||
ssp1_set_mode_max5864();
|
||||
max5864_tx();
|
||||
ssp1_set_mode_max2837();
|
||||
max2837_tx();
|
||||
sgpio_configure(SGPIO_DIRECTION_TX);
|
||||
break;
|
||||
|
||||
case RF_PATH_DIRECTION_RX:
|
||||
switchctrl &= ~SWITCHCTRL_TX;
|
||||
if( (switchctrl & SWITCHCTRL_AMP_BYPASS) == 0 ) {
|
||||
/* RX amplifier is in path, be sure to enable RX amplifier. */
|
||||
switchctrl &= ~SWITCHCTRL_NO_RX_AMP_PWR;
|
||||
}
|
||||
rffc5071_rx();
|
||||
if( switchctrl & SWITCHCTRL_MIX_BYPASS ) {
|
||||
rffc5071_disable();
|
||||
} else {
|
||||
rffc5071_enable();
|
||||
}
|
||||
ssp1_set_mode_max5864();
|
||||
max5864_rx();
|
||||
ssp1_set_mode_max2837();
|
||||
max2837_rx();
|
||||
sgpio_configure(SGPIO_DIRECTION_RX);
|
||||
break;
|
||||
|
||||
case RF_PATH_DIRECTION_OFF:
|
||||
default:
|
||||
#ifdef HACKRF_ONE
|
||||
rf_path_set_antenna(0);
|
||||
#endif
|
||||
rf_path_set_lna(0);
|
||||
/* Set RF path to receive direction when "off" */
|
||||
switchctrl &= ~SWITCHCTRL_TX;
|
||||
rffc5071_disable();
|
||||
ssp1_set_mode_max5864();
|
||||
max5864_standby();
|
||||
ssp1_set_mode_max2837();
|
||||
max2837_set_mode(MAX2837_MODE_STANDBY);
|
||||
sgpio_configure(SGPIO_DIRECTION_RX);
|
||||
break;
|
||||
}
|
||||
|
||||
switchctrl_set(switchctrl);
|
||||
}
|
||||
|
||||
void rf_path_set_filter(const rf_path_filter_t filter) {
|
||||
switch(filter) {
|
||||
default:
|
||||
case RF_PATH_FILTER_BYPASS:
|
||||
switchctrl |= SWITCHCTRL_MIX_BYPASS;
|
||||
rffc5071_disable();
|
||||
break;
|
||||
|
||||
case RF_PATH_FILTER_LOW_PASS:
|
||||
switchctrl &= ~(SWITCHCTRL_HP | SWITCHCTRL_MIX_BYPASS);
|
||||
rffc5071_enable();
|
||||
break;
|
||||
|
||||
case RF_PATH_FILTER_HIGH_PASS:
|
||||
switchctrl &= ~SWITCHCTRL_MIX_BYPASS;
|
||||
switchctrl |= SWITCHCTRL_HP;
|
||||
rffc5071_enable();
|
||||
break;
|
||||
}
|
||||
|
||||
switchctrl_set(switchctrl);
|
||||
}
|
||||
|
||||
void rf_path_set_lna(const uint_fast8_t enable) {
|
||||
if( enable ) {
|
||||
if( switchctrl & SWITCHCTRL_TX ) {
|
||||
/* AMP_BYPASS=0, NO_RX_AMP_PWR=1, NO_TX_AMP_PWR=0 */
|
||||
switchctrl |= SWITCHCTRL_NO_RX_AMP_PWR;
|
||||
switchctrl &= ~(SWITCHCTRL_AMP_BYPASS | SWITCHCTRL_NO_TX_AMP_PWR);
|
||||
} else {
|
||||
/* AMP_BYPASS=0, NO_RX_AMP_PWR=0, NO_TX_AMP_PWR=1 */
|
||||
switchctrl |= SWITCHCTRL_NO_TX_AMP_PWR;
|
||||
switchctrl &= ~(SWITCHCTRL_AMP_BYPASS | SWITCHCTRL_NO_RX_AMP_PWR);
|
||||
}
|
||||
} else {
|
||||
/* AMP_BYPASS=1, NO_RX_AMP_PWR=1, NO_TX_AMP_PWR=1 */
|
||||
switchctrl |= SWITCHCTRL_AMP_BYPASS | SWITCHCTRL_NO_TX_AMP_PWR | SWITCHCTRL_NO_RX_AMP_PWR;
|
||||
}
|
||||
|
||||
switchctrl_set(switchctrl);
|
||||
}
|
||||
|
||||
/* antenna port power control */
|
||||
void rf_path_set_antenna(const uint_fast8_t enable) {
|
||||
if (enable) {
|
||||
switchctrl |= SWITCHCTRL_ANT_PWR;
|
||||
} else {
|
||||
switchctrl &= ~(SWITCHCTRL_ANT_PWR);
|
||||
}
|
||||
|
||||
switchctrl_set(switchctrl);
|
||||
}
|
||||