AudioMUX Click-Platine
AudioMUX Click-Platine
Overview
Das AudioMUX Click Board™ Board ™ ist ein Sound Processing Click Board™ mit digitalen Bedienelementen, basierend auf dem TDA7468D IC. Damit kann einer von vier Audio-Eingangskanälen ausgewählt, dessen Frequenzgang und Lautstärke angepasst und an den Ausgang gesendet werden. Auf diesem IC ist auch ein BASS ALC-Abschnitt implementiert, der den Bass auch bei höheren Lautstärkeeinstellungen unter Kontrolle hält. Unabhängige Lautstärkeregelung für LINKS und RECHTS, vollständige Kontrolle über die I2C-Schnittstelle, ein vollständiger Satz vertikaler 3,5-mm-Buchsenanschlüsse auf der Platine. All diese Funktionen machen dieses Click Board™ zu einer sehr guten Lösung für die Entwicklung aller Arten von Audioanwendungen.
Das AudioMUX Click Board™ wird von einer mikroSDK-kompatiblen Bibliothek unterstützt, die Funktionen enthält, die die Softwareentwicklung vereinfachen. Dieses Click Board™ wird als vollständig getestetes Produkt geliefert und ist bereit für den Einsatz auf einem System, das mit der mikroBUS-Buchse ausgestattet ist.
Featuring a set of 3.5mm vertical jack connectors onboard, it allows a simple connection to an existing audio chain. Because of its very good sound characteristics, including 0.01% of total harmonic distortion (THD), signal to noise ratio (SNR) of 100dB, 84dB of maximum attenuation, and more, the AudioMUX Click Board™ represents an ideal solution for developing and building audio applications that can be used for various HiFi systems, home stereo components, computer speakers with selectable input, and many other similar audio applications that require a digitally controlled input selection and audio processing.
How Does The AudioMUX Click Board™ Work?
The AudioMUX Click Board™ is based on the TDA7468D IC 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 AudioMUX 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. The AudioMUX 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.
SPECIFICATIONS
Type | Signal Processing |
Applications | It can be used in various HiFi systems, home stereo components, computer speakers with selectable input, and many other similar audio applications that require a digitally controlled input selection and audio processing. |
On-board modules | TDA7468D IC from STMicroelectronics, a two-band digitally controlled high-quality audio processor with BASS ALC feature and the input selector |
Key Features | High quality audio output, integrated four-channel input selector with tone controls, each connector is a high-quality vertically mounted 3.5mm standard stereo jack, good frequency response, low THD and SNR, it can be directly implemented into the existing stereo system, etc. |
Interface | I2C |
Compatibility | mikroBUS |
Click board size | L (57.15 x 25.4 mm) |
Input Voltage | 3.3V or 5V |
Pinout Diagram
This table shows how the pinout of the AudioMUX Click Board™ corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).
Notes | Pin | Pin | Notes | ||||
---|---|---|---|---|---|---|---|
NC | 1 | AN | PWM | 16 | NC | ||
NC | 2 | RST | INT | 15 | NC | ||
NC | 3 | CS | RX | 14 | NC | ||
NC | 4 | SCK | TX | 13 | NC | ||
NC | 5 | MISO | SCL | 12 | SCL | I2C Clock | |
NC | 6 | MOSI | SDA | 11 | SDA | I2C Data | |
Power Supply | 3V3 | 7 | 3.3V | 5V | 10 | 5V | Power Supply |
Ground | GND | 8 | GND | GND | 9 | GND | Ground |
ONBOARD SETTINGS AND INDICATORS
Label | Name | Default | Description |
---|---|---|---|
LD1 | PWR | - | Power LED indicator |
JP1 | VCC SEL | Right | Power supply input selection: left position VIN connector, right position 5V from the mikroBUS™ |
JP2 | I/O SEL | Left | Logic level voltage selection: left position 3.3V, right position 5V |
J1 | J1 | Populated | Jumper between the analog and digital GND |
J2 | J2 | Populated | Jumper in series with the mikroBUS™ 5V power supply rail |
Software Support
We provide a library for the AudioMUX Click Board™ on our LibStock page, as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
Library Description
Library offers a choice to perform a control of the AudioMUX Click Board™. The control consists of input control, output control, gain control, volume control, treble and bass control... The device also can work in Bass ALC Mode by using this library. For more details check the documentation.
Key Functions
T_AUDIOMUX_RETVAL audiomux_writeSingleByte( uint8_t regAddr, uint8_t dataIn )
- The function writes one-byte data to the register.T_AUDIOMUX_RETVAL audiomux_selectInput( uint8_t inputSel, uint8_t muteIn, uint8_t micGain, uint8_t micState )
- The function performs an input selection and control.T_AUDIOMUX_RETVAL audiomux_setVolume( uint8_t volume1, uint8_t volume2, uint8_t sideSel )
- The function performs a left or right volume control.T_AUDIOMUX_RETVAL audiomux_setTrebleBass( uint8_t treble, uint8_t bass )
- The function performs a control of the treble and bass for EQ section.
Example Description
The application is composed of the three sections :
- System Initialization - Initializes peripherals and pins.
- Application Initialization - Initializes I2C interface.
- Application Task - (code snippet) - Initializes AudioMUX device to work with the desired configurations and shows a message on UART when playing is started. Device initialization will be performed only once and after that AudioMUX will work with the same desired configurations.
void applicationTask() { if (initCheck == 0) { audiomux_selectInput( _AUDIOMUX_IN1_EN, _AUDIOMUX_MUTE_INPUT_OFF, _AUDIOMUX_MIC_GAIN_14DB, _AUDIOMUX_MIC_OFF ); audiomux_setInputGain( _AUDIOMUX_IN_GAIN_2DB ); audiomux_writeSingleByte( _AUDIOMUX_SURROUND_ADDR, _AUDIOMUX_MIX_0 ); audiomux_setVolume( _AUDIOMUX_VOL1_6DB_NEG, _AUDIOMUX_VOL2_0DB, _AUDIOMUX_VOLUME_LEFT_ADDR ); audiomux_setVolume( _AUDIOMUX_VOL1_6DB_NEG, _AUDIOMUX_VOL2_0DB, _AUDIOMUX_VOLUME_RIGHT_ADDR ); audiomux_setTrebleBass( _AUDIOMUX_TRE_BASS_4DB_NEG, _AUDIOMUX_TRE_BASS_14DB ); audiomux_writeSingleByte( _AUDIOMUX_BASS_ALC_ADDR, _AUDIOMUX_MODE2_ADAPTIVE ); audiomux_muteOuput( _AUDIOMUX_MUTE_OUTPUT_OFF ); initCheck = 1; mikrobus_logWrite( "Playing", _LOG_TEXT ); Delay_ms( 1000 ); } if (messCnt < 5) { mikrobus_logWrite( ". ", _LOG_TEXT ); Delay_ms( 4000 ); messCnt++; } }
The full application code, and ready to use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
I2C
UART
Additional Notes and Information
Depending on the development board you are using, you may need a USB UART click, USB UART 2 click or RS232 click to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.
Software Support
We provide a library for the AudioMUX Click Board™ on our LibStock page, as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
Library Description
Library offers a choice to perform a control of the AudioMUX Click Board™. The control consists of input control, output control, gain control, volume control, treble and bass control... The device also can work in Bass ALC Mode by using this library. For more details check the documentation.
Key Functions
T_AUDIOMUX_RETVAL audiomux_writeSingleByte( uint8_t regAddr, uint8_t dataIn )
- The function writes one-byte data to the register.T_AUDIOMUX_RETVAL audiomux_selectInput( uint8_t inputSel, uint8_t muteIn, uint8_t micGain, uint8_t micState )
- The function performs an input selection and control.T_AUDIOMUX_RETVAL audiomux_setVolume( uint8_t volume1, uint8_t volume2, uint8_t sideSel )
- The function performs a left or right volume control.T_AUDIOMUX_RETVAL audiomux_setTrebleBass( uint8_t treble, uint8_t bass )
- The function performs a control of the treble and bass for EQ section.
Example Description
The application is composed of the three sections :
- System Initialization - Initializes peripherals and pins.
- Application Initialization - Initializes I2C interface.
- Application Task - (code snippet) - Initializes AudioMUX device to work with the desired configurations and shows a message on UART when playing is started. Device initialization will be performed only once and after that AudioMUX will work with the same desired configurations.
void applicationTask() { if (initCheck == 0) { audiomux_selectInput( _AUDIOMUX_IN1_EN, _AUDIOMUX_MUTE_INPUT_OFF, _AUDIOMUX_MIC_GAIN_14DB, _AUDIOMUX_MIC_OFF ); audiomux_setInputGain( _AUDIOMUX_IN_GAIN_2DB ); audiomux_writeSingleByte( _AUDIOMUX_SURROUND_ADDR, _AUDIOMUX_MIX_0 ); audiomux_setVolume( _AUDIOMUX_VOL1_6DB_NEG, _AUDIOMUX_VOL2_0DB, _AUDIOMUX_VOLUME_LEFT_ADDR ); audiomux_setVolume( _AUDIOMUX_VOL1_6DB_NEG, _AUDIOMUX_VOL2_0DB, _AUDIOMUX_VOLUME_RIGHT_ADDR ); audiomux_setTrebleBass( _AUDIOMUX_TRE_BASS_4DB_NEG, _AUDIOMUX_TRE_BASS_14DB ); audiomux_writeSingleByte( _AUDIOMUX_BASS_ALC_ADDR, _AUDIOMUX_MODE2_ADAPTIVE ); audiomux_muteOuput( _AUDIOMUX_MUTE_OUTPUT_OFF ); initCheck = 1; mikrobus_logWrite( "Playing", _LOG_TEXT ); Delay_ms( 1000 ); } if (messCnt < 5) { mikrobus_logWrite( ". ", _LOG_TEXT ); Delay_ms( 4000 ); messCnt++; } }
The full application code, and ready to use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
I2C
UART
Additional Notes and Information
Depending on the development board you are using, you may need a USB UART click, USB UART 2 click or RS232 click to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.
Frequently Asked Questions
Have a Question?
Be the first to ask a question about this.