无线麦相关应用
📎 原始文档:https://www.kdocs.cn/l/cltwUF4L6O2y 无线麦相关应用
各系列问题问题整理文档
链接:https://pan.baidu.com/s/1kjhBSPTfegAm3xRpuVv8NA
提取码:fxq3
第一章 功能DEMO及注意点
- 过产测就近连接功能的使用注意 当客户使用130版本1t1SDK需要过产测就近配对功能时,可以按照文档注释来配置配对名,但有一下注意点
#define SPECIFIC_STRING "#@#@#@"//用户可自定义修改该特殊字符不可以低于3个字符
需要注意配对名除去特殊字符后是否完全一致, 默认SDK中,由于配置工具中的蓝牙配对名是:“AC697N” 而程序中的配对名为“WL_MIC_V0”,故而默认的配对名为“AC697N_V0” 而增加了特殊字符后的配对名会使得除掉配对名后的名字与原有名字对应不上,导致匹配不上的问题故可将
#define WL_MIC_PAIR_NAME "WL_MIC_V0"
修改为
#define WL_MIC_PAIR_NAME "WL_MIC"
并且是收发双方都做同步修改 - 使用发送自定义命令的方法 MJW 方式1:调用已有发送命令接口,向RX发送1byte的命令
方式2:调用回调函数的方式,向RX发送多个byte的自定义数据命令(131版本SDK之后的SDK才支持该方式)
1.2.1. 方式1:每次发送 1 byte
1、使用发送命令接口发送一个byte字节
2、①TX端增加发送命令长度为1 ②TX端发送自定义命令接口,
③RX端解析命令,增加解析回调

1.2.2. 方式2:每次发送 n byte
“131版本之后的SDK才支持该方式”
调用回调函数的方式,发送多个数据的方法(不建议携带过多命令数据)
①TX端
增加数据长度和数据回调接口,发送命令的回调里面的数据可以灵活去写,不一定是写死 或者如下图的灵活写法:
②RX接收数据,增加解析回调
注意点:
在141 2T1增加命令字节数大于或等于5byte,需要在RX段增加如下截图修改:如果有需要增加大于4个byte的命令长度,需要同步修改如下位置的大小,默认是55,如需多加5个byte的命令,则需要修改为56,该数值代表RX接收每一包数据的长度限制。
1.2.3. duplex 形态的sdk 包双向的数据收发详情可看下列文档:
1.2.4. 2T1的RX回传命令给TX端,可以查看下列文档中的内容:
2T1的RX回传命令给TX端,可以查看下列文档中的内容:
无线麦SDK用户自定义数据收发接口说明文档.pdf
- 通用版RX端增加mictodac功能(适用1T1/2T1/1TN形态) 功能描述:RX端多开一个mic,mic数据跟TX发送过来的数据做混合处理
【金山文档】 wireless_mic_sdk-v1.4.0_2t1(rx_mic_mixer做法)方法实现
https://kdocs.cn/l/ccDSqGGntlD0
注意:
当使用wireless_mic_sdk-v1.4.1_2t1 增加RX开mic功能时,注意以下文件的变更
- 实现上电之后,固定降噪等级的方法实现 针对某些产品不需要通过按键去控制设置实际需要的降噪等级,而采用固定降噪等级的设计的方法
直接设置初始化降噪节点的参数
- 手机通话打开的是手机麦的问题解决 或者需要耳机标识的修改办法 该问题是怎么引起的?
默认SDK中USB麦录音和微信语音都是开的发射器的mic,但是手机通话却是开的手机本身的mic 要是产品需要通话也使用发射端的mic可做以下修改
解决办法:
在USB配置中,增加speaker class
#define USB_DEVICE_CLASS_CONFIG (MIC_CLASS | SPEAKER_CLASS)
该修改带来的副作用 1、手机插上USB麦之后,会在通知栏出现一个耳机的标识 2、手机声音无法做到外放。
注意:像全民K歌这种K歌软件,单纯使用MIC_CLASS 是无法录音的,需要增加SPEAKER_CLASS 手机才会使用USB mic
6. 增加提示音在1t1、2t1、1tN等系列的SDK中,并且RX在连接上播放提示音后会无声音的问题解决办法 20220209 MJW 130版本的各种形态的SDK,只有wireless_mic_sdk-v1.3.0_duplex SDK有做好的完整的提示音功能,其他1t1、2t1、1tN系列都没有做好的提示音功能,需要用到的时候可以参考wireless_mic_sdk-v1.3.0_duplex的earphone文件夹自行添加
解决办法:
以1t1的TX为例,
相关代码如下文件,可供复制:
【金山文档】 wireless_tone_patch1
https://kdocs.cn/l/ccCMOvc1kmGH
1、在1t1_tx.c中加入如下接口
#include "tone_player.h"
extern void audio_fade_in_fade_out(u8 left_gain, u8 right_gain, u8 fade);
static s32 cur_music_vol = -1;
static s32 cur_mic_vol = -1;
#define EARPHONE_TONE_DEFAULT_VOL 12
static void earphone_tone_play_callback(void *priv)
{
printf("earphone_tone_play_callback\n");
audio_fade_in_fade_out(0, 0, 0);
//这里要加点延时,等声音输出完
os_time_dly(15);
cur_music_vol = -1;
cur_mic_vol = -1;
}
static int earphone_tone_play(const char *list, u8 preemption)
{
while (wl_mic_tone_get_dec_status() == TONE_START) {
os_time_dly(5);
}
wl_mic_tone_play_stop();
int err = wl_mic_tone_play(list, 0, earphone_tone_play_callback, NULL);
if (0 == err) {
audio_fade_in_fade_out(EARPHONE_TONE_DEFAULT_VOL, EARPHONE_TONE_DEFAULT_VOL, 1);
}
return err;
}
2、在void app_main_run(void)接口中加入dac初始化,就可以使用earphone_tone_play接口调用提示音了
if (audio_dac_init_status() == 0) {
app_audio_output_init();
/* app_audio_state_switch(APP_AUDIO_STATE_MUSIC, 15); */
/* app_audio_set_volume(APP_AUDIO_STATE_MUSIC, 15, 0); */
}
earphone_tone_play(TONE_POWER_ON, 1);
3、RX连接上之后无声音问题做如下修改
u8 user_curr_vol = app_audio_get_volume(APP_AUDIO_STATE_MUSIC);
audio_fade_in_fade_out(user_curr_vol, user_curr_vol, 0);
4、wireless_mic_sdk-v1.4.1_2t1 TX端上电不播放开机提示音,仅仅通过按键播放提示音,存在看门狗复位问题,修改如下。(去掉原本的app_audio_output_init,增加adc初始化,
extern struct audio_adc_hdl adc_hdl;
extern struct adc_platform_data adc_data;
audio_adc_init(&adc_hdl, &adc_data);
案例:144 2T1 SDK 关于打断播放的修改:
RX端控制dac输出音量的调节接口 MJW
1、在使用140版本SDK之前的所有SDK版本都可以使用该接口实现音量等级调节(适用于br30 SDK) app_audio_set_volume(APP_AUDIO_STATE_MUSIC, X, 0);(其中X的取值为0-15)
在140 版本的2T1SDK,和duplex SDK上,实现音量等级调节的接口如下:(适用于br28SDK) 模拟音量调节接口:
audio_sound_dac_set_analog_gain(audio->dac1, MAX_ANA_VOL);//设置音量
数字音量调节接口:
audio_sound_dac_set_digital_gain(audio->dac1, 16384);
参考示例:
【金山文档】 140_duplex_SDK_earphone动态调节音量
140_duplex_SDK_earphone动态调节音量.docx
TX端控制MIC音量的调节接口
- TX端控制MIC音量的调节接口
8.1 采用自行改变mic数据音量大小的办法

#define USER_DIGITAL_VOL_MAX 10
u8 user_dig_vol_step = USER_DIGITAL_VOL_MAX;
const u16 user_dig_vol_table[USER_DIGITAL_VOL_MAX + 1] = {
0 , //0
1347, //1
2751, //2
3930, //3
5616, //4
6713, //5
8025, //6
9592, //7
11466,//8
15200,//9
16384 //10改小 15000?
};
//单/双声道数字音量处理
// vol:0~16384(大于16384会把数据放大,有可能出现失真)
int user_audio_digital_vol_run(void *data, u32 len, u32 l_vol,u32 r_vol)
{
s32 valuetemp;
s16 *buf;
buf = data; //数据
len >>= 1; //byte to point //
for (u32 i = 0; i < len; i += 2) {
///left channel
valuetemp = buf[i];
if (valuetemp < 0) {
valuetemp = -valuetemp;
valuetemp = (valuetemp * l_vol) >> 14 ; //除以16384
valuetemp = -valuetemp;
} else {
valuetemp = (valuetemp * l_vol) >> 14 ;
}
if (valuetemp < -32768) {
valuetemp = -32768;
} else if (valuetemp > 32767) {
valuetemp = 32767;
}
buf[i] = (s16)valuetemp;
///right channel
valuetemp = buf[i + 1];
if (valuetemp < 0) {
valuetemp = -valuetemp;
valuetemp = (valuetemp * r_vol) >> 14 ;
valuetemp = -valuetemp;
} else {
valuetemp = (valuetemp * r_vol) >> 14 ;
}
if (valuetemp < -32768) {
valuetemp = -32768;
} else if (valuetemp > 32767) {
valuetemp = 32767;
}
buf[i + 1] = (s16)valuetemp;
}
return 0;
}
user_audio_digital_vol_run(in->data, in->data_len, user_dig_vol_table[user_dig_vol_step], user_dig_vol_table[user_dig_vol_step]);
增加按键切换音量表:
case KEY_USER_SET_DIG_VOL_UP:
printf("KEY_USER_SET_DIG_VOL_UP\n");
user_dig_vol_step++;
if(user_dig_vol_step>=USER_DIGITAL_VOL_MAX){
user_dig_vol_step = USER_DIGITAL_VOL_MAX;
}
break;
case KEY_USER_SET_DIG_VOL_DOWN:
printf("KEY_USER_SET_DIG_VOL_UP\n");
if(user_dig_vol_step==0){
break;
}
user_dig_vol_step--;
break;
1.8.2 采用动态调节mic增益的方法
在adapter_adc.c中定义如下函数接口,分别调用增加mic增益和降低mic增益接口可以实现功能。
static u8 mic_gain = 0;
//增加mic增益
void adapter_adc_mic_gain_increase()
{
if (mic_gain < 13 && adapter_adc_mic->start) {
mic _gain ++;
printf("mic_gain == %d\n", mic_gain);
audio_set_mic_mute(0);
audio_adc_mic_set_gain(&adapter_adc_mic->mic_ch, mic_gain);
}
}
//降低mic增益
void adapter_adc_mic_gain_decrease()
{
if (mic_gain > 0 && adapter_adc_mic->start) {
mic_gain --;
printf("mic_gain == %d\n", mic_gain);
if (mic_gain == 0) {
audio_set_mic_mute(1);
}
audio_adc_mic_set_gain(&adapter_adc_mic->mic_ch, mic_gain);
}
}
1.8.3 调用接口做mute__mic功能
调用一下两个接口,分别可以mute掉mic0和mic1
1.8.4 直接清除 mic 数据达到 静音的功能

- 代码省内存的方法 ,在开启多个功能之后报错ASSERT: 0 No enough physics memory死机问题解决 MJW 如果打印时出现 “ASSERT: 0 No enough physics memory” 内存不足的情况。可以做以下操作省内存。
不打算做RF测试,可以缩减RF测试用到的BUF的数值大小。 - TX端开启EQ调节的配置方式 需要打开EQ总使能TCFG_EQ_ENABLE,和 通话上行EQ (phone_EQ) TCFG_PHONE_EQ_ENABLE,
需要在线调试自行开关在线调试宏 TCFG_EQ_ONLINE_ENABLE
打开在线调试后,仅仅支持串口调试,USB通信方式暂时不支持。
工具中选择通话宽带上行EQ。
- 在TX端将原有调节的宽带上行EQ段数从3个点增加到10个点的方式 ①将下图的3改成10即可

- 在697无线麦系列中RX端增加10段音频EQ节点的方法 ①增加音频EQ节点

#if TCFG_EQ_ENABLE
struct audio_eq_drc_parm miceq_parm = {
.sr = WIRELESS_CODING_SAMPLERATE,
.ch_num = 1,
};
#endif

#if TCFG_EQ_ENABLE
{
.attr = ADAPTER_STREAM_ATTR_MUSICEQ,
.value = {
.musiceq = {
.parm = &miceq_parm,
.data_handle = NULL,//如果要关注处理前的数据可以在这里注册回调
},
},
},
#endif
自行增加使能音频EQ
#define TCFG_MUSIC_EQ_ENABLE 1 ///DISABLE //音频EQ
下面提供wireless_mic_sdk-v1.4.3_2t1 RX端实现增加10段音频EQ实现demo(供参考使用):
wireless_mic_sdk-v1.4.3_2t1_RX端增加10段音频EQdemo.rar
13. 在701无线麦系列中RX端增加10段music音频EQ节点的方法(以wireless_mic_sdk-v1.4.2_2t1 的 RX实现为例) ①增加音频EQ节点
#if TCFG_EQ_ENABLE&&TCFG_MUSIC_EQ_ENABLE
{
.attr = ADAPTER_STREAM_ATTR_MUSICEQ,
.value = {
.musiceq = {
.samplerate = WIRELESS_DECODE_SAMPLERATE,
#if TCFG_AUDIO_DAC_CONNECT_MODE == DAC_OUTPUT_MONO_LR_DIFF
.ch_num = 1,
#else
.ch_num = 2,
#endif
.data_handle = NULL,//如果要关注处理前的数据可以在这里注册回调
},
},
},
#endif
②自行增加使能音频EQ
#define TCFG_MUSIC_EQ_ENABLE 1 ///DISABLE //音频EQ
③增加配置工具在线调试使能(原SDK带有可省略,直接打开即可)
#if 1
//*********************************************************************************//
// 新音箱配置工具 && 调音工具 //
//*********************************************************************************//
#define TCFG_EFFECT_TOOL_ENABLE 1///DISABLE //是否支持在线音效调试,使能该项还需使能EQ总使能TCFG_EQ_ENABL,
#define TCFG_NULL_COMM 0 //不支持通信
#define TCFG_UART_COMM 1 //串口通信
#define TCFG_USB_COMM 2 //USB通信
#if (TCFG_CFG_TOOL_ENABLE || TCFG_EFFECT_TOOL_ENABLE)
#define TCFG_COMM_TYPE TCFG_UART_COMM //通信方式选择
#else
#define TCFG_COMM_TYPE TCFG_NULL_COMM
#endif
#define TCFG_TOOL_TX_PORT IO_PORT_DP //UART模式调试TX口选择
#define TCFG_TOOL_RX_PORT IO_PORT_DM //UART模式调试RX口选择
#define TCFG_ONLINE_ENABLE (TCFG_EFFECT_TOOL_ENABLE) //是否支持音效在线调试功能
#endif
- 增加动态切换EQ文件的方法 调用该接口即可动态切换EQ配置文件
注意:其中eq_cfg_hw.bin、eq_cfg_hw1.bin、eq_cfg_hw2.bin根据实际在download.bat中加入的资源文件为准。
可以调用该接口去改变需要切换的EQ效果文件
void eq_mode_delay_change(void *mode)
{
int err = 0;
err = syscfg_write(CFG_USER_EQ_MODE, mode, 1);
printf("mode is %d\n", (int)mode);
if((int)mode == 0){
eq_file_get_cfg(get_eq_cfg_hdl(), SDFILE_RES_ROOT_PATH"eq_cfg_hw.bin");
}else if((int)mode == 1){
eq_file_get_cfg(get_eq_cfg_hdl(), SDFILE_RES_ROOT_PATH"eq_cfg_hw1.bin");
}else if((int)mode == 2){
eq_file_get_cfg(get_eq_cfg_hdl(), SDFILE_RES_ROOT_PATH"eq_cfg_hw2.bin");
}
}
wireless_mic_sdk-v1.4.1_duplex 701实现切换EQ效果文件功能注意点:
更换接口为:
同时需要替换下面的effect_adj.c文件【金山文档】 141_701_切换EQ效果文件替换_effects_adj
https://kdocs.cn/l/cbluWdrWAsvn
15. 在增加音频EQ节点的基础上 增加drc功能(AC697N) 打开drc功能使能,程序流程已经加好DRC,但是需要在EQ效果文件调节DRC模块才有具体效果
drc功能开启注意:由于drc功能需要耗费的资源,所以不可以配置成立体声输出,不然会有卡顿现象出现
可以提高系统时钟
#if 1///(APP_MAIN == APP_WIRELESS_DUPLEX)
//无线麦双工系统时钟需要跑144MHz, BR30这里PLL要配置成144
clock_set_pll_target_frequency(240);
#endif

clk_set("sys", 160000000);
- TX端增加DRC节点的方法(JL701N) wireless_mic_sdk-v1.4.1_duplex SDK添加DRC.rar
- TX端动态调节混响效果的方法 增加调节混响效果的接口,可通过该接口控制混响效果的深度
void echo_vol_test(u8 gain)//参数范围可以控制在0-10
{
if (wireless_mic_media) {
adapter_decoder_ioctrl(wireless_mic_media->downdecode, ADAPTER_DEC_IOCTRL_CMD_ECHO_SET_PARM, 1, (int *)(gain));
}
}
增加控制更新事件
case ADAPTER_DEC_IOCTRL_CMD_ECHO_SET_PARM:
value = (int)argv;
printf("ADAPTER_DEC_IOCTRL_CMD_ECHO %d\n",value);
if (__this->stream && __this->stream->echo) {
// pause_echo(__this->stream->echo, 1);
// void update_echo_gain(ECHO_API_STRUCT *echo_api_obj, int wetgain, int drygain);
update_echo_gain(__this->stream->echo, value*4096/10, 4096);
}
break;

18. 修改USB麦设备名称方法 在该接口处修改USB设备的设备名称,24代表整一个数组的字节大小,名称长度有变化的,应做对应修改,修改后一定要先卸载设备,重新插入后才会更新设备名。
PC相关应用.otl
19. 修改USB麦设备的PID和VID
1.14 修改USB麦设备的USB描述名称
20. 通过调用接口使能USB上下线的接口 接口功能描述:使能USB设备在PC端取消挂载和重新挂载。
21. 立体声输入,需要在软件更换左右声道的方法
- 在对mic数据增加数据调换处理

void LR_change(s16 *data, int len)
{
s16 *ddata = data;
u32 points = len/2;
for(int i = 0; i < points; i+=2){
s16 tmp = ddata[i];
ddata[i] = ddata[i+1];
ddata[i+1] = tmp;
}
}
在双工SDK,中对earphone端增加声道转换处理

1TN 音质优化 提高码率到128K
RX端控制USB输出音量的调节方法 20220209 MJW
增加数据handle处理办法 在USB麦编码节点处增加数据处理,然后通过调节传进去的音量大小可以分等级,0---16384,就是无声到原来声音大小

u32 user_uac_vol_ctrl = 16384;
void rx_uac_data_handle(struct audio_stream_entry *entry, struct audio_data_frame *in)
{
int rlen = in->data_len;
s32 tmp32;
user_audio_digital_vol_run(in->data, in->data_len, user_uac_vol_ctrl, user_uac_vol_ctrl);
}
音量数据处理接口:
//单/双声道数字音量处理
// vol:0~16384(大于16384会把数据放大,有可能出现失真)
int user_audio_digital_vol_run(void *data, u32 len, u32 l_vol,u32 r_vol)
{
s32 valuetemp;
s16 *buf;
buf = data; //数据
len >>= 1; //byte to point //
for (u32 i = 0; i < len; i += 2) {
///left channel
valuetemp = buf[i];
if (valuetemp < 0) {
valuetemp = -valuetemp;
valuetemp = (valuetemp * l_vol) >> 14 ; //除以16384
valuetemp = -valuetemp;
} else {
valuetemp = (valuetemp * l_vol) >> 14 ;
}
if (valuetemp < -32768) {
valuetemp = -32768;
} else if (valuetemp > 32767) {
valuetemp = 32767;
}
buf[i] = (s16)valuetemp;
///right channel
valuetemp = buf[i + 1];
if (valuetemp < 0) {
valuetemp = -valuetemp;
valuetemp = (valuetemp * r_vol) >> 14 ;
valuetemp = -valuetemp;
} else {
valuetemp = (valuetemp * r_vol) >> 14 ;
}
if (valuetemp < -32768) {
valuetemp = -32768;
} else if (valuetemp > 32767) {
valuetemp = 32767;
}
buf[i + 1] = (s16)valuetemp;
}
return 0;
}
在 2T1 132 版本SDK之后,可直接加到如下位置实现功能:
- 除双工earphone端外,其他形态RX端增加auto_mute 方式 20220809 MJW
- 增加 宏定义 #define WIRELESS_AUTO_MUTE 1 //auto mute 功能

- 增加auto mute处理节点

#if WIRELESS_AUTO_MUTE
{
.attr = ADAPTER_STREAM_ATTR_AUTO_MUTE,
.value = {
.auto_mute = {
.parm = &auto_mute_parm,
.data_handle = NULL,//如果要关注处理前的数据可以在这里注册回调
}
},
},
#endif

#if WIRELESS_AUTO_MUTE
/*
注!!!:由于提示音不是走的同一路解码,所以需要在提示音播放前需要判断一下是否mute住了,
解mute之后再播放提示音,在播放完提示音后判断mute状态,再mute
*/
//用户在此修改自己功放mute脚控制
#define DAC_MUTEapp_audio_mute(AUDIO_MUTE_DEFAULT)
#define DAC_UNMUTEapp_audio_mute(AUDIO_UNMUTE_DEFAULT)
//auto_mute 事件处理,用户可以根据需求添加mute处理
void auto_mute_handler(u8 event, u8 ch)
{
printf(">>>> ch:%d %s\n", ch, event ? ("MUTE") : ("UNMUTE"));
flag_mute_dac = event;
if (flag_mute_dac) {
printf("DAC_MUTE\n");
DAC_MUTE;
} else {
printf("DAC_MUTE\n");
DAC_UNMUTE;
}
}
static const audio_energy_detect_param auto_mute_parm = {
.mute_energy = 5,
.unmute_energy = 10,
.mute_time_ms = 1000,
.unmute_time_ms = 100,
.count_cycle_ms = 10,
.sample_rate = WIRELESS_DECODE_SAMPLERATE,
.event_handler = auto_mute_handler,
#if TCFG_AUDIO_DAC_CONNECT_MODE
.ch_total = 2,//app_audio_output_channel_get(),
#else
.ch_total = 1,//app_audio_output_channel_get(),
#endif
.dcc = 1,
};
#endif
- 如果需要USB 数据也有一个auto mute功能,可以增加数据处理接口

void user_usb_mute_prohandler(struct audio_stream_entry *entry, struct audio_data_frame *in)
{
if (flag_mute_dac) {
memset(in->data, 0x00, in->data_len);
}
}
dongle端或者USB RXmic 动态调节 MJW
增加 数据处理data_hangdle
//单/双声道数字音量处理
// vol:0~16384(大于16384会把数据放大,有可能出现失真)
int user_audio_digital_vol_run(void *data, u32 len, u32 l_vol,u32 r_vol)
{
s32 valuetemp;
s16 *buf;
buf = data; //数据
len >>= 1; //byte to point //
for (u32 i = 0; i < len; i += 2) {
///left channel
valuetemp = buf[i];
if (valuetemp < 0) {
valuetemp = -valuetemp;
valuetemp = (valuetemp * l_vol) >> 14 ; //除以16384
valuetemp = -valuetemp;
} else {
valuetemp = (valuetemp * l_vol) >> 14 ;
}
if (valuetemp < -32768) {
valuetemp = -32768;
} else if (valuetemp > 32767) {
valuetemp = 32767;
}
buf[i] = (s16)valuetemp;
///right channel
valuetemp = buf[i + 1];
if (valuetemp < 0) {
valuetemp = -valuetemp;
valuetemp = (valuetemp * r_vol) >> 14 ;
valuetemp = -valuetemp;
} else {
valuetemp = (valuetemp * r_vol) >> 14 ;
}
if (valuetemp < -32768) {
valuetemp = -32768;
} else if (valuetemp > 32767) {
valuetemp = 32767;
}
buf[i + 1] = (s16)valuetemp;
}
return 0;
}
void user_usb_vol_prohandler(struct audio_stream_entry *entry, struct audio_data_frame *in)
{
user_audio_digital_vol_run(in->data, in->data_len, 16384, 16384);
}
26. 140 2T1 修改为1T1 的方式方法 MJW rx端增加如下修改
增加控制宏WIRELESS_2t1_RX_ONLY_CONN_1TX 定义

27. 2T1按键配对功能的修改方式 ,通过绑定配对实现,连接成功过后不清除配对信息无法连接新设备,所以一定要增加清除配对按键。MJW 参考以下文档实现:
无线麦2T1 做按键绑定配对功能实现demo.otl
28. 强制开启数据流跑通,实现无连接时监听功能有声音 MJW 实现思路:让输入输出设备在没有连接时直接跑通,并且在断开连接之后,不关闭数据流
- 以wireless_mic_sdk-v1.4.1_duplex earphone端实现为例 ①确定默认earphone端的输入设备IDEV为BT,输出设备ODEV为DAC,可更快定位修改的地方
②由于输出设备ODEV为DAC 不需要连接,即earphone端会默认初始化好并OPEN等待,增加IDEV的OPEN处理。此时即可实现,强行跑通数据流。
#if WIRELESS_TX_ALWAYS_RUN_STREAM
adapter_process_event_notify(ADAPTER_EVENT_IDEV_MEDIA_OPEN, 0);
#endif

- 为避免断开连接后,默认程序关闭输入设备IDEV的数据流后,导致无声现象,增加取消关闭IDEV和处理。
#if !WIRELESS_TX_ALWAYS_RUN_STREAM
adapter_process_event_notify(ADAPTER_EVENT_IDEV_MEDIA_CLOSE, 0);
#endif
#if !WIRELESS_TX_ALWAYS_RUN_STREAM
adapter_process_event_notify(ADAPTER_EVENT_IDEV_MEDIA_OPEN, 0);
#endif
增加:开启降噪模式后,会出现无声现象,修改如下:
同理:可有以下实现方法的参考:
【金山文档】 wireless_mic_sdk-v1.3.1_1t1_patch1 TX端强制打开数据流实现方式
wireless_mic_sdk-v1.3.1_1t1_patch1 TX端强制打开数据流实现方式.otl
【金山文档】 wireless_mic_sdk-v1.4.4_2t1 TX端强制打开数据流实现方式
wireless_mic_sdk-v1.4.4_2t1 TX端强制打开数据流实现方式.otl
【金山文档】 wireless_mic_sdk-v1.4.1_2t1 RX端强制打开数据流实现方式
wireless_mic_sdk-v1.4.1_2t1 RX端强制打开数据流实现方式(1).otl
【金山文档】 wireless_mic_sdk-v1.4.2_duplex dongle端强制打开数据流实现方式
wireless_mic_sdk-v1.4.2_duplex dongle端强制打开数据流实现方式.otl
29. 关于 wireless_mic_sdk-v1.3.1_1t1_patch1 启用两个mic的做法 解析 MJW
- TX和RX都需要打开立体声输入的宏,此时实现的是linein输入,会使用到mic0和mic1两个ADC的口(PA1和PB8)做数据采集,但是mic0_bias 和 mic1_bias 是没有供电电压输出的 TX 和人RX都要打开,如果有些SDK RX端板级配置没有找到该宏需要自己添加
#define WIRELESS_MIC_STEREO_EN 1///0

2. TX端要修改为mic0_bias 和 mic1_bias 是有供电电压输出的 ,就是两个mic正常供电工作的修改需要修改如下: 就是保证要使用audio_adc_mic1_open、audio_adc_mic_open 接口,而不是使用audio_adc_linein_open、audio_adc_linein1_open接口
30. 无线麦复杂功能补丁包汇总 MJW 【金山文档】 无线麦复杂功能补丁包汇总
无线麦复杂功能补丁包汇总.otl
- 无线麦1t1 tx主动断开与rx的连接 调用接口:wlm_clear_pair();
不需要开启绑定配对功能也可实现 - 无线麦TX 端在线调试EQ配置方式说明
- 使能 EQ总开关 #define TCFG_EQ_ENABLE 1///DISABLE_THIS_MOUDLE
- 使能 #define TCFG_PHONE_EQ_ENABLE 1///DISABLE_THIS_MOUDLE (不使能该项TX端的EQ不生效)
- 使能#define TCFG_EQ_ONLINE_ENABLE 1 (该项是在线调试EQ使能,在线调试完毕后使用离线文件中的EQ配置可关闭)

- 使能在线调音工具 #define TCFG_EFFECT_TOOL_ENABLE 1///DISABLE
- 选用串口通信方式#define TCFG_COMM_TYPE TCFG_UART_COMM //通信方式选择

- 工具里面对应调试EQ的地方为 宽带上行EQ,并非是普通音频EQ

- 默认 宽带上行EQ 可调节的EQ点为3个,可修改一下代码将器修改为10个,看实际开发需要

- 无线麦TX 端单端输入更换mic组口修改说明 ①697系列修改 ,697只有两组mic口,分别对应 PA1 和 PB8
默认是PA1 口,代码对应如下:
需要修改为PB8组口,代码修改如下(更换对应mic口的open接口):
audio_adc_mic1_open(&hdl->mic_ch, AUDIO_ADC_MIC_CH, &adc_hdl);
audio_adc_mic1_set_gain(&hdl->mic_ch, gain);
- 701系列修改 ,701有四组mic口,701n的4路ladc分别对应PA1 PA3 PG8 PG6 PA1 对应:
audio_adc_mic_open
audio_adc_mic_set_gain
PA3 对应:
audio_adc_mic1_open
audio_adc_mic1_set_gain
PG8 对应:
audio_adc_mic2_open
audio_adc_mic2_set_gain
PG6 对应:
audio_adc_mic3_open
audio_adc_mic3_set_gain
默认是PA1 口,代码对应如下:
需要修改为PG8组口,代码修改如下(更换对应mic口的open接口):
audio_adc_mic2_open(&hdl->mic_ch, AUDIO_ADC_MIC_CH, &adc_hdl);
audio_adc_mic2_set_gain(&hdl->mic_ch, gain);
- 无线麦测试进入DUT模式的配置说明
- 打开DUT测试使能

- 修改并调用DUT进入接口,如下截图所示:


- TX端实现mic to dac,不连接,中途可穿插降噪混响等音效节点。 【金山文档】 wireless_mic_sdk-v1.4.4_2t1_实现TX端mictodac_增加降噪节点demo
https://kdocs.cn/l/ccUm6n6An6yU - 实现两发一收的绑定配对跟一发一收一样,TX端要绑定,RX端任意连接。 解决办法:将RX的绑定配对的宏打开
2、并将如下两处强制修改为0,实测能实现功能
补充说明:按照上述修改,会引发一个问题,当第一个TX连接上一个RX后,再用第二个TX去连接相同的RX,这时候,第一个TX将会连接不上任何RX
处理办法:代码上面取消匹配已经连接上的设备的连接信息
- wireless_mic_sdk-v1.4.2_2t1 tx端使能pa延长距离后做动态开关切换问题 修改办法:在没有映射,默认使用PC2/PC3作为pa引脚的情况下,在外面直接调用下面接口,修改最后一位参数即可。(0是关闭pa,1是开启pa)
SFR(JL_WL->CON0,3,1,0);
SFR(JL_WL->CON0,4,1,0); - wireless_mic_sdk-v1.4.2_2t1 br28 tx端动态设置发射功率等级问题 解决办法:补丁包如下
wireless_mic_sdk-v1.4.2_2t1_br28_tx动态切换发射功率等级_20230821.rar
wireless_mic_sdk-v1.4.3_2t1_br30_tx动态切换发射功率等级_20231121.rar - wireless_mic_sdk-v1.4.2_duplex_patch1动态设置发射功率等级问题 解决办法:补丁包如下
wireless_mic_sdk-v1.4.2_duplex_patch1_br30动态切换发射功率等级_20240815.rar
wireless_mic_sdk-v1.4.2_duplex_patch1_br28动态切换发射功率等级_20240815.rar - wireless_mic_sdk-v1.4.4_2t1 tx端硬件不做下拉电阻区分左右声道,并能区分识别左右TX发送过来的命令demo wireless_mic_sdk-v1.4.4_2t1 tx端硬件不做下拉电阻区分左右声道,并能区分识别左右TX发送过来的命令demo.otl
- 领夹麦 RX 端 带电池方案,插入拔出没有事件检测处理办法 带电池方案,插入和拔出没有插入和拔出事件检测到。需要增加代码如下:

就会有以下的插入拔出事件了
- 无线麦系列开pa的方式,并提供IO口映射的接口


- 无线麦系列做USB麦 需要将录音的数据修改为24bit 的,可参考以下修改 PS: 该方式ADC 输入仍旧是16bit 的数据来源,但是USB_mic是在上传数据时候,多做了16bit->24bit的数据转换
修改办法:
第二章
1.1 无线麦硬件设计指南
无线MIC硬件设计指南.pdf
1.2 无线麦硬件培训
声音大小调节说明:
本文档为保密信息,未经授权,请勿转发或告知第三方。非常感谢!
This electronic documentation and any attachments are confidential and may be legally privileged or otherwise protected from disclosure. If you are not the intended recipient, please do not disclose the contents to anyone。
Thank you for your cooperation!
解析权归杰理所有!
The analysis right belongs to JieLi Technology Co., Ltd.
本文档包含以下子页面
- duplex sdk 中 双向数据收发说明
- 无线麦SDK用户自定义数据收发接口说明文档
- 140_duplex_SDK_earphone动态调节音量
- 无线麦2T1 做按键绑定配对功能实现demo
- wireless_mic_sdk-v1.3.1_1t1_patch1 TX端强制打开数据流实现方式
- wireless_mic_sdk-v1.4.4_2t1 TX端强制打开数据流实现方式
- wireless_mic_sdk-v1.4.1_2t1 RX端强制打开数据流实现方式(1)
- wireless_mic_sdk-v1.4.2_duplex dongle端强制打开数据流实现方式
- wireless_mic_sdk-v1.4.4_2t1 tx端硬件不做下拉电阻区分左右声道,并能区分识别左右TX发送过来的命令demo
- 无线MIC硬件设计指南