通过我们的六通道数字音量控制器,体验新的音频质量和便利性。该控制器配备集成电子音量控制电路,旨在提供完美的音质和轻松的控制。
A
A
硬件概览
它是如何工作的?
EVC Click基于Princeton Technology的PT2258,这是一款六通道电子音量控制器。该IC包含六个数字控制音频衰减器,可以在0dB到-79dB之间衰减信号。每个通道可以通过I2C接口发送的两字节命令单独控制。尽管是数字控制,PT2258内的声音信号仍保持在模拟域中。PT2258提供非常清晰且无失真的声音。PT2258的信噪比(SNR)为105dB(任意输入为1V RMS),总谐波失真(THD)仅为0.005%(任意输入为200mV RMS)。随着输入信号的增加,THD会变差:2.8V RMS导致1%的THD。最大输入信号应保持在2.8V以下,否则输出端可能会出现过多的可闻失真。Click板™配备两排标准2.54mm(100 mil)针头。每排有六个引脚,使输入和输出可以轻松与现有多通道设备接口。此Click板™应连接在信号路径上,
无论是在放大器本身之前,还是在其他声音处理设备(如均衡器、延迟、房间校正等)之前或之后。这样,可以确保Click板™的最佳音频信号电平。每对输入/输出通过一个内部衰减器运行,提供高达-79dB的衰减,以1dB为步长。尽管这看起来是一个非常高的衰减值,但与高增益值的放大器一起使用时,即使在完全衰减后,仍可能听到声音。因此,PT2258具有静音功能,可以完全切断音频输出。要设置特定电平的衰减,必须通过I2C接口连续发送两个字节。有每个通道的-1dB步进命令和-10dB步进命令。为了在特定通道上实现所需的衰减,应连续发送两个命令:一个用于-10 dB衰减,另一个用于-1 dB衰减。这些命令可以以任何顺序发送。然而,发送单个命令或在两个衰减命令之间添加静音命令可能会导致不可预测的结
果。此Click板™由兼容mikroSDK的功能库支持,大大加速了软件开发,通过简化软件开发过程。Click板™的I2C从地址可以使用两个SMD跳线设置,这些跳线在I2C ADD标签下分组。第一个SMD跳线标记为C1,第二个跳线标记为C2。这些跳线用于配置位CODE1和CODE2,允许选择几个不同的I2C地址。这些跳线可以独立移动到任一位置,以选择所需的从地址。有关配置I2C从地址的更多信息,请参阅PT2258数据手册。Click板™使用I2C接口进行通信。通过简单地将标记为VCC COMM的SMD跳线切换到所需位置,它可以与3.3V和5V的微控制器(MCU)接口。然而,PT2258本身仍然需要5V运行,因为它需要5V到9V之间的电源电压。
功能概述
开发板
Nucleo 32开发板搭载STM32F031K6 MCU,提供了一种经济且灵活的平台,适用于使用32引脚封装的STM32微控制器进行实验。该开发板具有Arduino™ Nano连接性,便于通过专用扩展板进行功能扩展,并且支持mbed,使其能够无缝集成在线资源。板载集成
ST-LINK/V2-1调试器/编程器,支持通过USB重新枚举,提供三种接口:虚拟串口(Virtual Com port)、大容量存储和调试端口。该开发板的电源供应灵活,可通过USB VBUS或外部电源供电。此外,还配备了三个LED指示灯(LD1用于USB通信,LD2用于电源
指示,LD3为用户可控LED)和一个复位按钮。STM32 Nucleo-32开发板支持多种集成开发环境(IDEs),如IAR™、Keil®和基于GCC的IDE(如AC6 SW4STM32),使其成为开发人员的多功能工具。

微控制器概述
MCU卡片 / MCU

建筑
ARM Cortex-M0
MCU 内存 (KB)
32
硅供应商
STMicroelectronics
引脚数
32
RAM (字节)
4096
你完善了我!
配件
Click Shield for Nucleo-32是扩展您的开发板功能的理想选择,专为STM32 Nucleo-32引脚布局设计。Click Shield for Nucleo-32提供了两个mikroBUS™插座,可以添加来自我们不断增长的Click板™系列中的任何功能。从传感器和WiFi收发器到电机控制和音频放大器,我们应有尽有。Click Shield for Nucleo-32与STM32 Nucleo-32开发板兼容,为用户提供了一种经济且灵活的方式,使用任何STM32微控制器快速创建原型,并尝试各种性能、功耗和功能的组合。STM32 Nucleo-32开发板无需任何独立的探针,因为它集成了ST-LINK/V2-1调试器/编程器,并随附STM32全面的软件HAL库和各种打包的软件示例。这个开发平台为用户提供了一种简便且通用的方式,将STM32 Nucleo-32兼容开发板与他们喜欢的Click板™结合,应用于即将开展的项目中。
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
软件支持
库描述
该库包含EVC Click驱动程序的 API。
关键功能:
evc_set_volume_part- 设置所选通道的音量,使用两个变量。evc_set_volume_full- 设置所选通道的音量,使用一个音量变量。evc_mute- 静音和取消静音功能。
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* \file
* \brief EVC Click example
*
* # Description
* This application allows manipulation of 6 channel volume control
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initialization driver init, default configuration and sets first volume.
*
* ## Application Task
* emulates user input and exectuyrd functions based on set of valid commands.
*
* *note:*
* Additional Functions :
*
* void test_change ( ) - Emulates user input to change parameters.
* void mute( ) - Mute nad
* void play ( ) - Start new settings of the cahnnel
* uint8_t get_current_channel ( ) - Return current channel.
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "evc.h"
// ------------------------------------------------------------------ VARIABLES
static evc_t evc;
static log_t logger;
// ------------------------------------------------------- ADDITIONAL FUNCTIONS
uint8_t get_current_channel ( uint8_t ch )
{
if ( ch == 1 )
{
return EVC_CHANNEL_1;
}
if ( ch == 2 )
{
return EVC_CHANNEL_2;
}
if ( ch == 3 )
{
return EVC_CHANNEL_3;
}
if ( ch == 4 )
{
return EVC_CHANNEL_4;
}
if ( ch == 5 )
{
return EVC_CHANNEL_5;
}
if ( ch == 6 )
{
return EVC_CHANNEL_6;
}
return EVC_CHANNEL_1;
}
void play ( evc_t *ctx )
{
uint8_t current_channel;
if ( ( ctx->play_flag == 1 ) && ( ctx->mute_flag != 1 ) )
{
current_channel = get_current_channel( ctx->channel );
evc_set_volume_full( ctx, current_channel, ctx->volume );
log_printf( &logger, " Channel [ %d ] -- Volume [ %d ] \r\n", ctx->channel, ctx->volume );
ctx->play_flag = 0;
}
}
void mute( evc_t *ctx )
{
/* Mute and Unmute */
if ( ctx->mute_flag == 0 )
{
ctx->mute_flag = 1;
evc_mute( ctx, EVC_ALL_CHANNEL_MUTE );
log_printf( &logger, " All channels MUTE !!!\r\n" );
}
else
{
ctx->mute_flag = 0;
evc_mute( ctx, EVC_ALL_CHANNEL_UNMUTE );
log_printf( &logger, " All channels UNMUTE !!!\r\n" );
}
}
void test_change ( evc_t *ctx )
{
ctx->channel++;
if( ctx->channel > 6 )
{
ctx->channel = 6;
}
ctx->volume--;
if( ctx->volume < -79 )
{
ctx->volume = -79;
mute( ctx );
}
ctx->play_flag = 1;
Delay_ms ( 750 );
}
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
evc_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.
evc_cfg_setup( &cfg );
EVC_MAP_MIKROBUS( cfg, MIKROBUS_1 );
evc_init( &evc, &cfg );
evc_default_cfg( &evc );
log_printf( &logger, " \\-/-\\-/ START EQUALIZER \\-/-\\-/ ");
}
void application_task ( void )
{
// Task implementation.
test_change( &evc );
play( &evc );
}
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
额外支持
资源
类别:放大器

































