Intermediate
30 min

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

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

AudioMUX Click with Nucleo 32 with STM32F031K6 MCU

Published Oct 01, 2024

Click board™

AudioMUX Click

Dev. board

Nucleo 32 with STM32F031K6 MCU

Compiler

NECTO Studio

MCU

STM32F031K6

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

Nucleo 32 with STM32F031K6 MCU board provides an affordable and flexible platform for experimenting with STM32 microcontrollers in 32-pin packages. Featuring Arduino™ Nano connectivity, it allows easy expansion with specialized shields, while being mbed-enabled for seamless integration with online resources. The

board includes an on-board ST-LINK/V2-1 debugger/programmer, supporting USB reenumeration with three interfaces: Virtual Com port, mass storage, and debug port. It offers a flexible power supply through either USB VBUS or an external source. Additionally, it includes three LEDs (LD1 for USB communication, LD2 for power,

and LD3 as a user LED) and a reset push button. The STM32 Nucleo-32 board is supported by various Integrated Development Environments (IDEs) such as IAR™, Keil®, and GCC-based IDEs like AC6 SW4STM32, making it a versatile tool for developers.

Nucleo 32 with STM32F031K6 MCU double side image

Microcontroller Overview

MCU Card / MCU

default

Architecture

ARM Cortex-M0

MCU Memory (KB)

32

Silicon Vendor

STMicroelectronics

Pin count

32

RAM (Bytes)

4096

You complete me!

Accessories

Click Shield for Nucleo-32 is the perfect way to expand your development board's functionalities with STM32 Nucleo-32 pinout. The Click Shield for Nucleo-32 provides two mikroBUS™ sockets to add any functionality from our ever-growing range of Click boards™. We are fully stocked with everything, from sensors and WiFi transceivers to motor control and audio amplifiers. The Click Shield for Nucleo-32 is compatible with the STM32 Nucleo-32 board, providing an affordable and flexible way for users to try out new ideas and quickly create prototypes with any STM32 microcontrollers, choosing from the various combinations of performance, power consumption, and features. The STM32 Nucleo-32 boards do not require any separate probe as they integrate the ST-LINK/V2-1 debugger/programmer and come with the STM32 comprehensive software HAL library and various packaged software examples. This development platform provides users with an effortless and common way to combine the STM32 Nucleo-32 footprint compatible board with their favorite Click boards™ in their upcoming projects.

Click Shield for Nucleo-32 accessories 1 image

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
PB6
SCL
I2C Data
PB7
SDA
Power Supply
5V
5V
Ground
GND
GND
1

Take a closer look

Click board™ Schematic

AudioMUX Click Schematic schematic

Step by step

Project assembly

Click Shield for Nucleo-144 front image hardware assembly

Start by selecting your development board and Click board™. Begin with the Nucleo 32 with STM32F031K6 MCU as your development board.

Click Shield for Nucleo-144 front image hardware assembly
Nucleo 144 with STM32L4A6ZG MCU front image hardware assembly
Stepper 22 Click front image hardware assembly
Prog-cut hardware assembly
Stepper 22 Click complete accessories setup image hardware assembly
Board mapper by product8 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
STM32 M4 Clicker HA MCU/Select 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

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

The complete application code and a ready-to-use project are available through the NECTO Studio Package Manager for direct installation in the NECTO Studio. The application code can also be found on the MIKROE GitHub account.

/*!
 * \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 ( 1000 );
        Delay_ms ( 1000 );
        Delay_ms ( 1000 );
        Delay_ms ( 1000 );
        mess_cnt++;
    }
}

int main ( void ) 
{
    /* Do not remove this line or clock might not be set correctly. */
    #ifdef PREINIT_SUPPORTED
    preinit();
    #endif
    
    application_init( );
    
    for ( ; ; ) 
    {
        application_task( );
    }

    return 0;
}

// ------------------------------------------------------------------------ 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.