Intermediate
30 min

Unlock the potential of your audio sources with TDA7468 combined with PIC32MZ2048EFM100

Your sonic symphony conductor: AudioMUX – choose, shape, and enjoy!

AudioMUX Click with Curiosity PIC32 MZ EF

Published Oct 21, 2023

Click board™

AudioMUX Click

Dev Board

Curiosity PIC32 MZ EF

Compiler

NECTO Studio

MCU

PIC32MZ2048EFM100

Our AudioMUX is the ultimate solution for audio enthusiasts and professionals, allowing you to seamlessly choose between four inputs, shape their frequencies, and control volume, ensuring a tailored sound experience

A

A

Hardware Overview

How does it work?

AudioMUX Click is based on the TDA7468 from STMicroelectronics, which is a two-band digitally controlled high-quality audio processor with BASS ALC feature and a four-channel input selector. This integrated audio processor is quite popular, and it can be found in several brands of HiFi and home stereo systems. Despite its simplicity, it offers a full set of options required for a realization of the four-channel audio multiplexer with volume, balance, and tone controls. The TDA7468D IC is digitally controlled over the I2C interface; however, the internal sections are purely analog circuits, with a separate analog GND reference. There are four input channels which can be selected over the I2C interface. The IC accepts up to 2.5V peak to peak at its inputs. The impedance of the input terminals is 50 kΩ, and each input is decoupled by a 440nF capacitor. There are not many registers in this IC, which makes the firmware development very easy. Each channel is routed to a vertically mounted 3.5mm jack, which allows the Click board™ to be easily interfaced to an existing audio chain. Some registers have a single function, while others are used to control more functions. The datasheet of the TDA7468D clearly explains each register and its functions. After the input is selected by setting the specific bits in the INPUT SELECT register, the audio signal is routed to the first gain stage. It is possible to adjust the gain of the input signal up to +14dB, in 2dB steps. This is very useful when the amplitude of the input signal needs to be adjusted (gain staging). The signal is then fed to the first (pre-EQ) volume control section which is able to attenuate the signal down to -63dB, in 1dB steps. If the signal is too high, a clipping might occur when the equalization is applied in the next section. Therefore, lowering the volume in this section will allow more headroom for the equalizer (EQ) section. The volume in this section is determined by the first 6 bits of the volume control register,

referred to as the VOLUME 1 bitfield. The last 4 bits are related to the post EQ volume section and are referred to as the VOLUME 2 bitfield. Both volume sections feature independent volume control registers (VOLUME LEFT and VOLUME RIGHT), allowing balance function to be implemented. The EQ sections can adjust bass and treble frequencies in the range from -14dB to +14dB, in 2dB steps. The frequency response of these sections is determined by external RC elements. The Click board™ has these values optimally selected for the best performance. The low-frequency range is processed by a T type bandpass filter with its center frequency at around 32Hz, while the high-frequency range is processed by a high pass filter with the -3dB attenuation point at about 3kHz. A single register is used to control the entire EQ section (TREBLE & BASS register). After the sound is processed by the EQ section, there is an output stage, which allows attenuation of -24dB in 8dB steps. This post-EQ stage allows the volume to be fine-tuned and adjusted to the input stage of an audio amplifier. The volume of this section is controlled by the VOLUME 2 bitfield, in two independent registers, one for each channel (VOLUME LEFT and VOLUME RIGHT) The BASS ALC is basically a compressor, applied to the low-frequency range. It is a very useful feature, keeping the low-frequency content even when the volume is set to a high value. The low-frequency band will be dynamically attenuated when the programmed threshold value is exceeded, after the programmed attack time. The BASS ALC is automatically turned off when the EQ is set to attenuate low frequencies, as there is no point to use it in that case. There are also some additional settings for the BASS ALC function. For the complete list of features, please refer to the datasheet of the TDA7468D. The BASS ALC function is controlled by bits in the BASS ALC

register. The output of the TDA7468D IC can be enabled or disabled by a single control bit of the OUTPUT register. When building audio applications in a purely digital surround, special care should be taken to isolate the audio signal path as much as possible, in order to avoid any noise at the output. This Click board™ is equipped with two 0 Ω resistors (jumpers) at strategic positions. These jumpers are labeled as J1 and J2. They can be replaced either with resistors or with inductors. J1 jumper connects analog and digital GND in a single point. If the reference GND is noisy, using a clean external power supply (PSU), combined with a small resistance value up to 100 Ω in the place of J1, can help in reducing the output noise. The second jumper (J2) can be replaced with a ferrite bead or an inductor, which can help to filter the noise at the positive rail of the power supply. The noise at the output can also be a result of improper gain staging (e.g. all the gains are at their maximum value). The TDA7468D itself is not very noisy, only about 15 µV max. The SMD jumper labeled as VCC SEL is used to select the power supply. If set to 5V, the analog section of the TDA7468D IC will be powered from the mikroBUS™ +5V rail. When the jumper is set to VIN, the analog section of the TDA7468D IC will be power from an external power source, connected to the VIN screw terminal. The external power source voltage should be within the range between 5V and 10V. The logic section of the TDA7468D will always be powered from the mikroBUS™, regardless of the VCC SEL position. However, it is still possible to select the voltage level for the I2C bus, allowing communication with a wide range of different MCUs. This can be done by switching the SMD jumper labeled as I/O SEL to either 3.3V or 5V.

AudioMUX Click hardware overview image

Features overview

Development board

Curiosity PIC32 MZ EF development board is a fully integrated 32-bit development platform featuring the high-performance PIC32MZ EF Series (PIC32MZ2048EFM) that has a 2MB Flash, 512KB RAM, integrated FPU, Crypto accelerator, and excellent connectivity options. It includes an integrated programmer and debugger, requiring no additional hardware. Users can expand

functionality through MIKROE mikroBUS™ Click™ adapter boards, add Ethernet connectivity with the Microchip PHY daughter board, add WiFi connectivity capability using the Microchip expansions boards, and add audio input and output capability with Microchip audio daughter boards. These boards are fully integrated into PIC32’s powerful software framework, MPLAB Harmony,

which provides a flexible and modular interface to application development a rich set of inter-operable software stacks (TCP-IP, USB), and easy-to-use features. The Curiosity PIC32 MZ EF development board offers expansion capabilities making it an excellent choice for a rapid prototyping board in Connectivity, IOT, and general-purpose applications.

Curiosity PIC32MZ EF double side image

Microcontroller Overview

MCU Card / MCU

default

Architecture

PIC32

MCU Memory (KB)

2048

Silicon Vendor

Microchip

Pin count

100

RAM (Bytes)

524288

You complete me!

Accessories

These standard small stereo  earphones offer a high-quality listening experience with their top-notch stereo cable and connector. Designed for universal compatibility, they effortlessly connect to all MIKROE mikromedia and multimedia boards, making them an ideal choice for your electronic projects. With a rated power of 100mW, the earphones provide crisp audio across a broad frequency range from 20Hz to 20kHz. They boast a sensitivity of 100 ± 5dB and an impedance of 32Ω ± 15%, ensuring optimal sound quality. The Φ15mm speaker delivers clear and immersive audio. Cost-effective and versatile, these earphones are perfect for testing your prototype devices, offering an affordable and reliable audio solution to complement your projects.

AudioMUX Click accessories image

Used MCU Pins

mikroBUS™ mapper

NC
NC
AN
NC
NC
RST
NC
NC
CS
NC
NC
SCK
NC
NC
MISO
NC
NC
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
NC
NC
PWM
NC
NC
INT
NC
NC
TX
NC
NC
RX
I2C Clock
RPA14
SCL
I2C Data
RPA15
SDA
Power Supply
5V
5V
Ground
GND
GND
1

Take a closer look

Schematic

AudioMUX Click Schematic schematic

Step by step

Project assembly

Curiosity PIC32MZ EF front image hardware assembly

Start by selecting your development board and Click board™. Begin with the Curiosity PIC32 MZ EF as your development board.

Curiosity PIC32MZ EF front image hardware assembly
GNSS2 Click front image hardware assembly
Prog-cut hardware assembly
GNSS2 Click complete accessories setup image hardware assembly
Curiosity PIC32 MZ EF MB 1 Access - upright/background hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
Necto image step 5 hardware assembly
Necto image step 6 hardware assembly
Curiosity PIC32 MZ EF MCU Step hardware assembly
Necto No Display image step 8 hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Debug Image Necto Step hardware assembly

Track your results in real time

Application Output

After loading the code example, pressing the "DEBUG" button builds and programs it on the selected setup.

Application Output Step 1

After programming is completed, a header with buttons for various actions available in the IDE appears. By clicking the green "PLAY "button, we start reading the results achieved with Click board™.

Application Output Step 3

Upon completion of programming, the Application Output tab is automatically opened, where the achieved result can be read. In case of an inability to perform the Debug function, check if a proper connection between the MCU used by the setup and the CODEGRIP programmer has been established. A detailed explanation of the CODEGRIP-board connection can be found in the CODEGRIP User Manual. Please find it in the RESOURCES section.

Application Output Step 4

Software Support

Library Description

This library contains API for AudioMUX Click driver.

Key functions:

  • audiomux_select_input - This function performs a input selection and control

  • audiomux_set_volume - This function performs a left or right volume control

  • audiomux_set_treble_bass - This function performs a control of the treble and bass for EQ section

Open Source

Code example

This example can be found in NECTO Studio. Feel free to download the code, or you can copy the code below.

/*!
 * \file 
 * \brief AudioMUX Click example
 * 
 * # Description
 * The following demo shows basic click functionality:
 * Initializes AudioMUX device to work with the desired configurations and
 * shows a message on uart when playing is started.
 *
 * The demo application is composed of two sections :
 * 
 * ## Application Init 
 * Initializes click and logger.
 * 
 * ## Application Task  
 * Every 4 seconds shows a message on uart until 5 messages has been
 * shown or device stops playing.
 * 
 * *note:* 
 * Device initialization will be performed only once and after that 
 * AudioMUX will work with the same desired configurations.
 * 
 * \author MikroE Team
 *
 */
// ------------------------------------------------------------------- INCLUDES

#include "board.h"
#include "log.h"
#include "audiomux.h"

// ------------------------------------------------------------------ VARIABLES

static audiomux_t audiomux;
static log_t logger;

uint8_t init_check;
uint8_t mess_cnt;

// ------------------------------------------------------ APPLICATION FUNCTIONS

void application_init ( void )
{
    log_cfg_t log_cfg;
    audiomux_cfg_t cfg;

    /** 
     * Logger initialization.
     * Default baud rate: 115200
     * Default log level: LOG_LEVEL_DEBUG
     * @note If USB_UART_RX and USB_UART_TX 
     * are defined as HAL_PIN_NC, you will 
     * need to define them manually for log to work. 
     * See @b LOG_MAP_USB_UART macro definition for detailed explanation.
     */
    LOG_MAP_USB_UART( log_cfg );
    log_init( &logger, &log_cfg );
    log_info( &logger, "---- Application Init ----" );

    //  Click initialization.

    audiomux_cfg_setup( &cfg );
    AUDIOMUX_MAP_MIKROBUS( cfg, MIKROBUS_1 );
    audiomux_init( &audiomux, &cfg );

    init_check = 0;
    mess_cnt   = 0;

    log_info( &logger, "** AudioMUX initialized **\r\n" );
}

void application_task ( void )
{
    if (init_check == 0)
    {
        audiomux_default_cfg ( &audiomux );
        init_check = 1;

        log_printf( &logger, "Playing from IN1 " );
        Delay_ms( 1000 );
    }

    if (mess_cnt < 5)
    {
        log_printf( &logger, ". " );
        Delay_ms( 4000 );
        mess_cnt++;
    }
}

void main ( void )
{
    application_init( );

    for ( ; ; )
    {
        application_task( );
    }
}

// ------------------------------------------------------------------------ END

Additional Support

Resources

Love this project?

'Buy This Kit' button takes you directly to the shopping cart where you can easily add or remove products.