By Per Magnusson, SA5BYZ
This is the third part in the article series about the FoxScope 2m ARDF receiver.
The processor board contains (surprise) the processor, the audio codec, the LiPo charging circuit, voltage regulators and various external interfaces.
The following files are available for download:
- Schematics PDF
- Assembly drawing PDF
- Layout PDF
- Layout as gerbers
- Pick-and-place file
- Normal BOM (Bill of materials)
- BOM adapted for JLCPCB
Link to a zip-file with the files:
Software
The software is available in the following Github repo:
https://github.com/per-magnusson/FoxScope2m
The software can be compiled in the Arduino environment with the Teensyduino extension. The processor is the Teensy MicroMod and the software is uploaded via USB. A number of libraries are required. If you do not have them installed already, the error messages should guide you to what needs to be installed.
Processor
The processor is a Teensy MicroMod, made by Sparkfun. This is a module (a small PCB) which contains a 600 MHz ARM Cortex-M7 (IMXRT1062) processor, 16 MB of flash, and 1024 kB of RAM. It plugs into a 75-pin M.2 connector. Using a module like this instead of the processor directly has some advantages. Primarily that it simplifies layout and allows usage of only four layers, whereas six or eight would have been necessary if the BGA package of the processor were to be put directly on the PCB. It also reduces the component count. A drawback is that the layout of the module is not ideal from an EMC perspective and it probably radiates more EMI than what would be possible with a good custom layout and board stackup.
The IMXRT1062 is mighty powerful in terms of processing power and only a fraction of its processing capability is currently utilized in this receiver. So there is plenty of room to add more sophisticated signal processing if that is desired.
The schematics with the connections to the processor module is shown below.

A supply voltage of 3.1 V is used instead of the more common 3.3 V as this is within the allowed range of the processer and has the benefits of:
- Reducing the power consumption slightly
- Allowing the supply voltage to be stable down to a lower battery voltage
The processor has a real-time-clock, which is always powered. This allows the receiver to keep time and know which fox should be transmitting. The PROG# button rarely needs to be pushed, but is good to have if the processor gets stuck, e.g. as a result of software bugs. This button is not externally accessible, so disassembly is required if it is to be pushed.
USB _N and USB_P are of course the USB signals through which the processor can be programmed. It is also useful for debugging.
The I2S signals comprise a standard bus (not to be confused with I2C) for digital audio. It connects to the audio codec, so digital audio samples are sent from and to the codec via this interface.
The main I2C bus (I2C.SCL and I2C.SDA) connects to the codec and the Si5351 local oscillator. There is also a separate I2C bus talking to the LCD.
VBAT_MON is an analog input to the processor that allows the battery voltage to be sensed.
The rest of the signals connect to buttons, the rotary encoder and various control inputs of other circuitry.
Audio codec
The schematics of the audio codec circuitry is shown below.

The codec is an AK4619, which has dual 24-bit stereo audio channels, i.e. four ADCs and four DACs. Here we only use one stereo channel, so half of the analog inputs and outputs are unused. It is capable of sampling at 192 kHz, but it is currently being used at only 44.1 kHz. Maybe the software could be rewritten to take advantage of the higher sampling rate, which might potentially provide benefits like improved suppression of undesired signals that may otherwise be aliased into the received band. The load on the processor would naturally increase with a higher sampling rate, but it is most likely more than powerful enough to handle it.
IF_I/IF_Q are the IF signals from the RF board. The inputs are configured in the “pseudo-differential” mode where the P-pin is fed with the (AC-coupled) signal while the N-pin receives an (AC-coupled) ground reference. This provides the noise immunity of differential signals, without having to go through the trouble of creating differential IF signals on the RF board. A minor drawback of pseudo-differential to true differential signals is about 2 dB of reduced signal-to-noise ratio (according to the codec datasheet), but the combined gain of the RF and IF amplifiers is sufficient to make the input referred noise of the codec irrelevant from a systems perspective.
The I2S bus transports the digital audio samples to and from the processor. The analog audio outputs are amplified by an LM4808 to drive the headphone amplifiers. This amplifier might not even be necessary as the headphones require so little power. For safety, the outputs of the LM4808 are limited by 100-ohm series resistors and clipping diodes to prevent hearing damage in extreme cases. The maximum volume is still more than enough despite this limiting.
The software could send different audio to the left and right channels if one could come up with some use for that, but currently, the same audio is sent to both channels.
The codec is powered by its own LDO to minimize the noise on its power rail. Like for the processor, 3.1 V is used instead of the more common 3.3 V, as this is still within the allowable range of the codec and allows sufficient drop over the LDO to provide good noise rejection down to lower battery voltages.

Connector to RF Board
As mentioned, when describing the RF board, the processor board connects to it via a small 32-pin board-to-board connector, P2:

This is the only component on the bottom side of the processor board and as described in the article about the RF board, it is very difficult to solder manually.
LCD Connector
The alphanumeric LCD has an I2C interface and is mounted on a separate board. It connects to the processor board via a miniature pin-header with 1.27 mm pin spacing:

Front Panel Connector
The front panel with its buttons, encoder and LEDs are connected via a 0.5 mm pitch FPC connector:

None of these signals need to be fast, so to prevent EMI they can therefore be low-pass filtered (with 1 nF capacitors) before they leave the shielding neighborhood of the ground plane of the PCB. Whether this is really necessary has not been thoroughly evaluated.
Connector to USB/Headphone Board
An identical FPC connector (but with a different pinout) is used for the interface to the board with the USB- and headphone connectors and power switch.

USB_SPARE is not used. HP_DETECT# can be used to detect whether headphones are plugged in (but is currently ignored by the software). PROG# is the programming button/signal to the processor to bring it into programming mode. It might be easier to access a button on the USB board than in the main board and future versions could make the button available externally. LEFT_HP and RIGHT_HP are the signals to the headphones. USB_N/P are of course the USB data lines while VUSB is the power from the USB connector, used to charge the LiPo battery. SIG_GEN is unused in this receiver (but it is used in an 80 m receiver with the same USB board). +3V1 is made available in this interface, but is not really needed currently. The receiver powers on when POWER_SW# is pulled low by the power switch.
Having a power switch rather than using the plugging-in of the headphones as the signal to enable power to the receiver may be a bit unconventional for ARDF receivers. There may however be a relatively simple way of changing to headphone-controlled power if that should be desired: Leave R39 and R15 unpopulated and solder a wire between HP_DETECT# and POWER_SW# (C13 to C15). I think this should work, but I have not tested it. The scheme is illustrated in the figures below:


Power Circuitry
The schematic below show the battery charging circuit and a few other power related components.

An MCP73833, U2, is used as the LiPo charging controller. The charging current is set by R22. 2.2 kohms gives about 450 mA, which is low enough to not cause overheating in U2 and within the allowed range of the USB 2 standard. The LiPo battery has a capacity of 1500 mAh, so it takes a little more than 3 hours to charge if it is completely empty (which it should never be).
P1 is the battery connector. U3 provides the low-current supply to the real-time clock. This regulator received power as long as the battery is present and reasonably charged. It consumes about 14 µA of quiescent current, so much less than the maximum current the RTC may draw (250 µA). In practice, the RTC seems to draw significantly less than its worst-case maximum, so for me, the battery has not lost very much of its charge after a few months of being turned off. It should probably be able to keep the RTC running for more than a year without needing a recharge.
The PMOS Q1 connects the battery to the +3V8 rail that powers the rest of the receiver. Q1 is turned on when POWER_SW# is pulled low, which is normally handled by the power switch (or the headphones if the modification described previously is implemented).
R19 is a series resistor for the front panel power LED. The voltage divider R17/R20 allows the processor to measure the battery voltage.
U1 is the LDO that creates +3V1 to power the processor and some other circuitry. It is shown in the figure below together with most of the decoupling capacitors.

It is stable with output capacitances between 0.7 and 10 µF, so one has to be a little careful with adding too many high-value decoupling capacitors. This is the reason mostly 100 nF is used rather than e.g. 1 µF.
The PCB
The processor board, like the RF board, had four layers. It is 79 x 52 mm in size. All components, except for the connector P2, are on the top side. See assembly drawings below.


Signal routing is limited to the top and bottom layers, while the internal layers are used for ground and power planes.




The assembled board (with the processor module fitted) looks like this:


Like with the RF board, I let JLCPCB assembled the top side while I left P2 on the bottom to do myself. This was equally difficult as for J2 on the RF boards and in hindsight I should have let JLC solder also the bottom.
Board Manufacturing Details
This board uses the same layer stackup as the RF board, i.e., the 0.8 mm thick JLC04081H-7628. To comply with the EU RoHS directive, lead-free HASL should be selected as the surface plating (ENIG would also work, but is much more expensive).