小知识·typec耳机原理

目录

数字耳机和模拟耳机

 手机中模拟和数字耳机的差异

typec耳机介绍


数字耳机和模拟耳机

        模拟耳机即我们的常见的3.5mm接口的耳机,包括左右声道,地或者mic,如左图。

        数字耳机(右图)包含一个usb声卡+DAC&&ADC+amp+模拟耳机,当数字耳机接入到手机(otg)或者电脑后,手机或者电脑识别到了usb设备,并创建相应的声卡后,数字音频信号通过usb传输到数字耳机后,数字耳机通过DAC转换并放大信号,就可以听到声音了,这也是usb声卡的原理。

     typec耳机(中图)可能是模拟耳机也可能是数字耳机,以耳机内有没有芯片进行判别。有人就在淘宝上买来一款数字耳机(商品上介绍的就是数字耳机),买回来手机用不了,接电脑也识别不了usb设备,后来才发现是typec接口的模拟耳机,严重的虚假宣传。

 手机中模拟和数字耳机的差异

typec耳机介绍

市面上常见的typec接口方案的耳机接口图。

         图5是小米6x的底面图,取消的3.5mm耳机接口,可以兼容数字耳机和模拟耳机,这一类的机型包括小米note3,华为p20pro,坚果锤子等(数字耳机就是一个usb从设备)。

        电路板设计有一个耳机自动切换ic(模拟耳机的左右声道接在usb+、usb-,因此需要切换开光,如DIO3202A, vbus电平为高,芯片切换到usb通路,vbus电平为低,切换到耳机通路),数字耳机接入耳机后,typec逻辑芯片检测到从设备,cpu上的usb切换到主模式,并提供5v(vbus)给从设备供电,完成相应的数字信号传输。

 兼容模拟耳机的原理,typec逻辑芯片会识别成不同的设备(数字耳机,usb设备  模拟耳机 音频配件)(也可以使用mic来识别耳机的插拔  原理: 模拟耳机接入耳机后由于vbus没电,耳机逻辑ic选择耳机通道,耳机mic检测脚初始化为高,当模拟耳机插入后,mic相当于一个1k的电阻,由于分压,mic脚的电压会拉低,mic_det脚所在的pmic上的内部电压比较器检测到了电平变化进一步触发了耳机mic的中断,进一步判断耳机的类型,从而识别达到耳机)。

图6的手机保留3.5mm的耳机接口,代表机型有华为nova2s,小米5x等。这一类机型typec接口可以接数字耳机,但nova2s上可以听音乐,但打电话时耳机无法使用,这是因为打电话的场景中需要相应的通路支持(跟cpu相关,可参考https://www.synopsys.com/zh-cn/china/resources/dwtb/dwtb-cn-usb-audio-2017q2.html)。

 
原文链接:https://blog.csdn.net/mike8825/article/details/84001000

### 回答1: c 调用 dll demo 是指使用 C 语言编写程序,调用一个动态链接库(DLL)示例。动态链接库是一种包含可供其他程序调用的函数和资源的文件。通过调用 DLL,C 程序可以使用 DLL 中提供的功能,实现各种功能扩展。 首先,我们需要使用 C 语言编写一个调用 DLL 的程序。在程序中,我们需要包含 DLL 的头文件,并声明需要调用的函数的原型。然后,我们通过调用 LoadLibrary 函数加载 DLL 文件,并使用 GetProcAddress 函数获取 DLL 中需要调用的函数地址。最后,我们可以通过调用获取的函数地址来调用 DLL 中的函数。 例如,我们创建一个名为 main.c 的文件,其中包含以下代码: ```c #include <stdio.h> #include <windows.h> typedef int (*MY_DLL_FUNC)(int); // 定义函数指针类型,用于存储 DLL 中的函数地址 int main() { HMODULE hDll = LoadLibrary("demo.dll"); // 加载 DLL 文件 if (hDll == NULL) { printf("无法加载 DLL 文件。\n"); return -1; } MY_DLL_FUNC myFunc = (MY_DLL_FUNC)GetProcAddress(hDll, "my_function"); // 获取函数地址 if (myFunc == NULL) { printf("无法找到函数。\n"); return -1; } int result = myFunc(10); // 调用函数 printf("DLL 函数返回值为:%d\n", result); FreeLibrary(hDll); // 释放 DLL return 0; } ``` 在上述代码中,我们加载了一个名为 demo.dll 的 DLL 文件,并从中获取了名为 my_function 的函数的地址。然后,我们将参数 10 传递给 my_function,并打印其返回值。 编译并运行上述代码后,即可成功调用 DLL 中的函数,并获得对应的结果。这样,我们就实现了通过 C 调用 DLL 的示例。 需要注意的是,实际的 DLL 文件中的函数名和参数类型可能会有所不同,需要根据具体情况进行修改。另外,在使用完成后,需要使用 FreeLibrary 函数释放已加载的 DLL。 ### 回答2: 调用dll demo 是指在编程中使用动态链接库(Dynamic Link Library)来实现某种功能。DLL是一种可供多个程序共享使用的库文件,其中包含一些函数和数据,通过调用这些函数可以实现一些特定的操作。下面是一个简单的调用dll demo的示例: 首先,我们需要确定要调用的dll文件的名称和路径。通常,dll文件需要与程序在同一目录下,或者在系统的搜索路径中。 接下来,在程序中引入dll文件。这可以通过使用import关键字或者使用专门的函数来实现。 然后,我们需要确定要调用的函数的名称和参数。我们可以通过查看dll文件的文档或者使用一些工具来获取这些信息。一旦确定了函数的名称和参数,我们就可以使用这个函数来实现我们想要的操作。 最后,我们需要在程序中调用dll函数。这可以通过使用函数名称和参数来实现。调用dll函数的过程中,我们需要注意参数的类型和顺序,确保和dll函数的定义一致,以免出现错误。 调用dll demo的过程中,我们需要注意一些问题。首先,确保dll文件的正确性和完整性,防止出现无法调用或者调用错误的问题。其次,我们需要合理处理dll函数返回的结果,以确保程序的正确运行。此外,还需要注意程序的兼容性和可移植性,以便在不同的平台和环境中都能够正常运行。 总之,调用dll demo 是一种常见的编程技术,通过使用动态链接库可以方便地实现一些功能。在使用过程中,我们需要明确dll文件的名称和路径,引入dll文件,确定要调用的函数和参数,最后在程序中调用dll函数。同时,我们还需要注意dll文件的正确性和完整性,处理函数返回的结果,并保证程序的兼容性和可移植性。 ### 回答3: C 调用 DLL demo 是指在 C 语言中调用动态链接库(DLL)的示例程序。DLL 是一种包含可被共享和重复使用的代码和数据的文件,它可以被不同的程序同时使用,从而提高代码的重用性和灵活性。 在 C 语言中,调用 DLL 需要使用特定的函数和约定。首先,需要在程序中包含 DLL 的头文件,其中包含了 DLL 中导出函数的声明。接下来,在代码中使用提供的函数名来调用 DLL 中的函数。 具体的示例程序可能如下: ``` #include <stdio.h> #include <windows.h> // 声明 DLL 中的函数 typedef int (*AddFunction)(int, int); int main() { HINSTANCE hDll; // DLL的句柄 AddFunction add; // 对应 DLL 中的函数指针 // 加载 DLL hDll = LoadLibrary("demo.dll"); if (hDll != NULL) { // 获取 DLL 中的函数地址 add = (AddFunction)GetProcAddress(hDll, "Add"); if (add != NULL) { int result = add(3, 5); printf("The result is: %d\n", result); } else { printf("Failed to find the 'Add' function in the DLL.\n"); } // 卸载 DLL FreeLibrary(hDll); } else { printf("Failed to load the DLL.\n"); } return 0; } ``` 上述示例代码中,首先使用 `LoadLibrary` 函数加载 DLL,然后使用 `GetProcAddress` 函数获取 DLL 中的函数地址,再通过函数指针调用 DLL 中的函数。最后,使用 `FreeLibrary` 函数卸载 DLL。 当运行该示例程序时,会调用 DLL 中的 `Add` 函数,该函数接受两个整数参数并返回它们的和。程序输出结果为两个整数相加的和。 需要注意的是,上述示例中的函数名和参数类型需要根据实际情况进行修改。另外,确保 DLL 文件与程序在同一目录下或者可以通过正确的路径访问到它,以便成功加载 DLL。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值