Home Chipkit Chipkit Max32 and TEA5767 radio example

Chipkit Max32 and TEA5767 radio example

by shedboy71

In this article we will create a simple radio using a TEA5767 module and a Chipkit Max32, the example is written in the Arduino IDE

The TEA5767HN is a single-chip electronically tuned FM stereo radio for low-voltage applications with fully integrated Intermediate Frequency (IF) selectivity and demodulation.

The radio is completely adjustment-free and only requires a minimum of small and low cost external components. The radio can be tuned to the European, US, and Japanese FM bands.

■ High sensitivity due to integrated low-noise RF input amplifier
■ FM mixer for conversion to IF of the US/Europe (87.5 MHz to 108 MHz) and Japanese (76 MHz to 91 MHz) FM band
■ Preset tuning to receive Japanese TV audio up to 108 MHz
■ RF Automatic Gain Control (AGC) circuit
■ LC tuner oscillator operating with low cost fixed chip inductors
■ FM IF selectivity performed internally
■ No external discriminator needed due to fully integrated FM demodulator
■ Crystal reference frequency oscillator; the oscillator operates with a 32.768 kHz clock crystal or with a 13 MHz crystal and with an externally applied 6.5 MHz reference frequency
■ Phase-locked loop (PLL) synthesizer tuning system
■ I2C-bus and 3-wire bus, selectable via pin BUSMODE
■ 7-bit IF counter output via the bus
■ 4-bit level information output via the bus
■ Soft mute
■ Signal dependent mono to stereo blend [Stereo Noise Cancelling (SNC)]
■ Signal dependent High Cut Control (HCC)
■ Soft mute, SNC and HCC can be switched off via the bus
■ Adjustment-free stereo decoder
■ Autonomous search tuning function
■ Standby mode
■ Two software programmable ports
■ Bus enable line to switch the bus input and output lines into 3-state mode

Parts List

Name Link
chipkit Max32 Digilent chipKIT Max32 Microcontroller Board with Mega R3 Headers – 410-202
TEA5767 module TEA5767 FM Stereo Radio Module for Arduino 76-108MHZ With Free Cable Antenna
connecting wire Free shipping Dupont line 120pcs 20cm male to male + male to female and female to female jumper wire


max32 and tea5767

max32 and tea5767


This uses the following library – https://github.com/big12boy/TEA5767

102.8 is a local radio station where I live, you may have to change this

[codesyntax lang=”cpp”]

#include <TEA5767.h>
TEA5767 radio = TEA5767();

float frequency = 102.8; //Enter your own Frequency
long baud = 250000; //Enter your own Baudrate

long lmillis = 0;

void setup() {
  //Setup Serial and I2C
  //Set Frequency to start with

void loop() {
  //Check for User Input
    float frequency = Serial.parseFloat(); //Read Frequency from Serial
    radio.setFrequency(frequency); //Set Frequency
  //Check for time (active every second
  if(lmillis <= millis()){
    lmillis = millis() + 1000; //Read current time and add 1 second
	//Print Stats to Serial Console

void printFrequency(){
  float frequency = radio.getFrequency(); //Get Frequency
  Serial.print("Frequency: ");
  Serial.println(frequency, 2);

void printReady(){
  int rdy = radio.getReady(); //Get State
  Serial.print("Ready: ");

void printStereo(){
  bool stereo = radio.isStereo(); //Get Stereo
  Serial.print("Stereo: ");

void printSignalLevel(){
  short level = radio.getSignalLevel(); //Get Signal Level
  Serial.print("Signal (0-15): ");



You will see the following in the serial monitor and if you have selected a radio station you should hear the station

Frequency: 102.80
Ready: 1
Stereo: 1
Signal (0-15): 11

Frequency: 102.80
Ready: 1
Stereo: 1
Signal (0-15): 11


You may also like

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More