📻 New TinyCLR Project: Full Automotive‑DSP FM Tuner (TEF6686) for SITCore

Hi everyone,

I’d like to share my current TinyCLR project:
a full‑featured automotive DSP FM tuner driver for SITCore, based on the NXP TEF6686.

The TEF6686 is a modern FM DSP tuner used in high‑end car radios.
This driver brings the chip natively into TinyCLR for the first time, enabling professional‑grade FM radio reception directly from .NET code.

Repository:
:backhand_index_pointing_right: https://github.com/Implicate-X/ImplicateX.TinyCLR.Drivers.Tuner.Tef668x

:rocket: Overview

The driver implements the complete TEF6686 DSP pipeline:

  • RF front end

  • IF demodulation

  • Pilot tracking

  • Stereo matrix

  • High‑cut / High‑blend

  • Softmute

  • Multipath management

  • RDS status

  • Audio processing flags

The result is a true TinyCLR FM tuner, technically far beyond typical hobby‑level FM chips like Si47xx, RDA5807, BK1080, or QN8035.

:check_mark: Features

FM Tuning

  • 10 kHz tuning steps

  • stable PLL lock

  • automatic IF correction

  • stereo pilot detection

DSP Status

The driver exposes all relevant DSP parameters:

  • softmute

  • highcut

  • stereo

  • sthiblend

  • softmuteActive

  • highcutActive

  • stereoProcessingActive

  • stHiBlendActive

This allows building a complete audio quality display, similar to automotive receivers.

RDS Status

  • RDS available

  • RDS loss

  • RDS data present

  • RDS synchronization

(Full RDS decoding will be added later.)

Signal Quality

  • stereo available

  • digital radio flag (DAB/DRM)

  • multipath indicators

  • noise floor tracking

TinyCLR‑Optimized

  • pure I²C driver

  • no unsafe operations

  • no external dependencies

  • fully compatible with SITCore boards

:wrench: Architecture

The TEF6686 outputs analog audio directly from its DSP.

In my setup, it is combined with a VS1053B web‑radio decoder using an ADG888 analog switch:

TEF6686 → analog out → ADG888 → vintage tuner audio path
VS1053B → analog out → ADG888 → vintage tuner audio path

A front‑panel BAND button (originally FM/AM) now switches between FM and Web Radio.

:blue_book: Example: Reading FM Status

FM frequency: 91.20 MHz
FM status tuned/raw: 0x03E8
FM status RDS/raw: 0x0200 available=False loss=False
FM status signal/raw: 0x8000
FM status signal: stereoAvailable=True digitalAvailable=False
FM status processing: softmute=0 highcut=378 stereo=847 sthiblend=1000
FM status processing/flags:
softmuteActive=False
highcutActive=True
stereoProcessingActive=True
stHiBlendActive=True

These values indicate:

  • stable stereo pilot

  • active DSP optimization

  • no softmute

  • slight high‑cut adjustment

  • full stereo width

  • RDS synchronization

The TEF6686 operates at automotive‑grade quality, even with a simple whip antenna.

:hammer_and_wrench: Roadmap

  • [ ] Full RDS decoder (PS, RT, PTY, PI, AF)

  • [ ] Stereo width visualizer

  • [ ] Multipath indicator

  • [ ] Automatic station scan

  • [ ] Sample TinyCLR UI (display)

  • [ ] Integration with VS1053B web‑radio module

If anyone is interested in FM/DSP work on TinyCLR or wants to test the driver, feedback is very welcome.
This is an active project and will continue to evolve…

2 Likes