Tags: FM, Stereo, Radio, Module, Tuner, TEA5767,

FM Stereo Radio Module Tuner TEA5767

  • 19.00 AED
    • Ex Tax:19.00 AED
    • Product Code:
    • Availability: In Stock
    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 ca..

    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 a 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 

    I 2C-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


     Notice the bottom right of the board, close to the two pins of the 32.768 kHz crystal, where the TEA5767’s GND pin is connected:

    BUS MODE pin should be connected to GND whereas W/R and MPXO pin should be left unconnected. I make a simple breakout board out of a small piece of Veroboard from my junk box to be able to plug it into a breadboard for development work.

    Simple interface via I2C

    It is only then that the fun began. The module is using I2C interface, which requires just 2 control lines, SDA for data and SCL for clock. Since most of the sample code I found on the Internet for this TEA5767 module is targeting the Arduino (the PIC seems to be dying among the world of hobbyists thanks to tremendous marketing efforts to promote the Arduino), I will need to adapt it my PIC24FJ64GA002 using my software I2C library. The simplest code to tune the TEA5767 to a particular FM station is as follows:

    #define TEA5767_W 0xC0
    #define TEA5767_R 0xC1

    void tea5767_setFrequency(double frequency)
    {
    unsigned char frequencyH=0;
    unsigned char frequencyL=0;
    unsigned int frequencyB;

    frequencyB=4*(frequency*1000000+225000)/32768;
    frequencyH=frequencyB>>8;
    frequencyL=frequencyB&0XFF;

    i2c_start();
    i2c_write(TEA5767_W);
    i2c_write(frequencyH);
    i2c_write(frequencyL);
    i2c_write(0xB0);
    i2c_write(0x10);
    i2c_write(0x00);

    i2c_stop();

    }

    Here comes a word of caution for those converting I2C code from the Arduino to the PIC. The Arduino is using 7-bit I2C addresses, which is 0x60, as specified in the TEA5767 datasheet, with read/write address determined accordingly. However, the PIC24FJ64GA002 that I am using and most other PICs use 8-bit I2C addresses, which consist of the original 7-bit address and another bit to indicate read/write operation. Therefore, the correct I2C address for the TEA5767 on a PIC is 0xC1 for reading and 0xC0 for writing. I wasted three days debugging this issue.

    With the above code, the TEA5767 is able to tune into my favourite FM station. The output, although very low, sounds good and clear when fed into a suitable amplifier (such as PC audio system) or a crystal earpiece.

    Retrieving data from the TEA5767

    Next comes the challenge of reading data from the TEA5767 to check for signal strength and other relevant information. I used the following code:

    void tea5767_readData(unsigned char* byte1, unsigned char* byte2, unsigned char* byte3, unsigned char* byte4, unsigned char* byte5)
    {
    i2c_start();
    i2c_write(TEA5767_R);
    *byte1 = i2c_rx(1);
    *byte2 = i2c_rx(1);
    *byte3 = i2c_rx(1);
    *byte4 = i2c_rx(1);
    *byte5 = i2c_rx(0);
    i2c_stop();
    }

    However, despite various debugging efforts, the above code simply returned 0xFF for all the bytes. I even checked on an oscilloscope and indeed the SDA line remained high during the read operation. My software I2C library has always been working well with other stuff, including a DS621 temperature sensor, DS1307 RTC and several EEPROMs.

    It was so tempting at this stage to conclude that the TEA5767 module that I received was partially faulty. Who knows, perhaps that is the case for my module which was purchased from Chinese eBay sellers. However, I decided to make one last attempt at it by using the PIC24 hardware I2C modules, instead of bit-banging it via software.

    Using the sample code from here I was quickly able to write codes to read and write a 24C64 EEPROM using the hardware I2C module. The completed I2C helper code can be downloaded here. Surprisingly, when using hardware I2C, the TEA5767 responds properly with the proper status bytes. The signal strength (in percentage) and other information of the currently active FM station can be derived from the data bytes using the following code:

    tea5767_readData(&byte1, &byte2, &byte3, &byte4, &byte5);
    stereo = (byte3&0x80);
    freq = ((((byte1&0x3F)<<8)+byte2)*32768/4-225000)/100000;
    signal_level = (byte4 >> 4) * 100 / 16;

    If the hardware I2C code does not work with your PIC, first try to use the second I2C module instead of the first I2C module. Some PIC24 devices have a silicon bug rendering the first I2C module inoperative. Secondly, if the code is working intermittently, try to add a 82pF capacitor connecting the SDA line to ground for each I2C device on the bus. It was not working for me initially until I realized that it seemed to work with the oscilloscope probe pin connected, and figured that the capacitor is necessary. The reason is apparently due to the parasitic capacitance on a breadboard affecting the rise time/fall time of the I2C clock line, although I have not had time to verify this in details. Finally, don’t forg

    There are no reviews for this product.

    Write a review

    Please login or register to review

    FREE RETURNS

    *for faulty items and in-store drop off for unused items. T&C applies.

    Customer Support

    We really care about you and your order as much as you do. Please contact us without hesitation.

    INTERNATIONAL SHIPPING

    We can ship your order internationally. Please contact us first before proceeding with your order.

    Fast Delivery

    You want your item next day? No problem! We advise contacting us ASAP to insure smooth delivery experience