OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
12
返回列表 发新帖
楼主: lvehe

终于实现USB Microphone录音功能

  [复制链接]

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-1-20
在线时间
14 小时
发表于 2017-2-24 20:51:11 | 显示全部楼层
/* Main Buffer for Audio Control Requests transfers and its relative variables */
uint8_t  AudioCtl[64];
const uint16_t VOL_MIN = 0x0000; /* Volume Minimum Value */
const uint16_t VOL_MAX = 0x1400; /* Volume Maximum Value */
const uint16_t VOL_RES = 0x0400; /* Volume Resolution */
const float VOL_AMP[6] = {1.0f, 1.6f, 2.5f, 4.0f, 6.3f, 10.0f};

大神 请教一下代码里面的这些是从数据手册得出么  怎么得到的呢
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-1-20
在线时间
14 小时
发表于 2017-2-24 21:02:58 | 显示全部楼层
大神,不还意思还要在你这里留言了。我有个问题要打搅你。
为什么usbd_audio_DataIn里面取24bits的IIS数据的高16位数据发送出去,那么剩下的8位怎么处理,被丢弃了么? 为什么呢?
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2076
金钱
2076
注册时间
2014-12-19
在线时间
709 小时
 楼主| 发表于 2017-2-27 10:29:23 | 显示全部楼层
crush丢丢 发表于 2017-2-24 21:02
大神,不还意思还要在你这里留言了。我有个问题要打搅你。
为什么usbd_audio_DataIn里面取24bits的IIS数据 ...

不知你从哪看出是24位数据的,设置的就是16位数据啊
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2076
金钱
2076
注册时间
2014-12-19
在线时间
709 小时
 楼主| 发表于 2017-2-27 10:31:58 | 显示全部楼层
crush丢丢 发表于 2017-2-24 20:51
/* Main Buffer for Audio Control Requests transfers and its relative variables */
uint8_t  AudioCtl ...

我自己定义的
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-1-20
在线时间
14 小时
发表于 2017-3-7 05:54:27 | 显示全部楼层
lvehe 发表于 2017-2-27 10:29
不知你从哪看出是24位数据的,设置的就是16位数据啊

大神 还是有些问题要请教你下
1.数据手册里面说The output data‐word length is 24 bits per channel. 你在mic _i2s.c 文件中也定义了I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_24b;
2.而你在MicDataProcess(void)函数中               
for (i = 0; i < Buff_Size / 2; i++) //2字节
                {
                        tmp = I2S_Buffer[i*4] * vol + 0.5f;
                        if (tmp >= 32767)
                        {
                                tmp = 32767;
                        }
                        else if (tmp <= -32767)
                        {
                                tmp = -32767;
                        }
                        buff = (int16_t)tmp; //= I2S_Buffer[i*4];
所以我问你接收了24位数据,却只取了后面的16位数据,前面八位都丢了么?
3.大神你说自己定义了声音放大倍数,我不太懂,声音放大倍数就是说,i2s接收到的PCM二进制数据乘以一个比例因子,就可以达到声音放大的效果么?以及怎么通过这些数据来确定放大到多少dB呢
4.最后一个问题是关于i2s中断处理函数,处理二进制数据时候,怎么确保声音信号在中断的时候不会丢失呢?
感谢楼主之前耐心的答复
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2076
金钱
2076
注册时间
2014-12-19
在线时间
709 小时
 楼主| 发表于 2017-3-7 11:47:16 | 显示全部楼层
本帖最后由 lvehe 于 2017-3-7 11:50 编辑
crush丢丢 发表于 2017-3-7 05:54
大神 还是有些问题要请教你下
1.数据手册里面说The output data‐word length is 24 bits per channel.  ...

麦克风数据是24bit的,但是输出给USB的数据是16bit的,所以只取了高16bit,丢弃了低8bit。
放大倍数问题,先看定义的最小最大和步进值:
const uint16_t VOL_MIN = 0x0000; /* Volume Minimum Value */
const uint16_t VOL_MAX = 0x1400; /* Volume Maximum Value */
const uint16_t VOL_RES = 0x0400; /* Volume Resolution */
const float VOL_AMP[6] = {1.0f, 1.6f, 2.5f, 4.0f, 6.3f, 10.0f};
电脑将0x0000~0x1400定为6个dB档位,游标移至最左端,单片机收到0x0000,游标移至最右边,单片机收到0x1400,中间就是每移一下步进0x0400,单片机就根据收到的这个值来确定放大倍数。至于具体对应的倍数是按公式来计算的,比如1.6f,20*log(1.6)=4dB,就是放大4dB,20*log(10)就是放大20dB。这些都是可以根据自己的需要来自定义的。当然,这种放大倍数是比较粗略的,而且容易引起失真。
确保声音信号不丢失,只有处理好双缓冲问题,加大缓冲空间。具体可参见以下链接。http://www.openedv.com/forum.php?mod=viewthread&tid=77439
http://www.openedv.com/forum.php?mod=viewthread&tid=76871
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-1-20
在线时间
14 小时
发表于 2017-3-7 15:13:10 来自手机 | 显示全部楼层
谢谢大神答复,关于麦克风数据是24bit的,但是输出给USB的数据是16bit的,所以只取了高16bit,丢弃了低8bit。还是不太理解。丢失了8bit,不是会造成失真,而且麦克风采样后是24位,取了16位应该不是数据都无效了么?
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-1-20
在线时间
14 小时
发表于 2017-3-7 15:28:27 来自手机 | 显示全部楼层
关于放大倍数dB我现在理解啦,但是tmp = I2S_Buffer[i*4] * vol + 0.5f;中的0.5f我不太理解为什么是0.5f,以及tmp = 32767;中的32767是2的15次方-1,但是这里我们已经乘以vol后,比如乘以10.0f后,tmp虽然是16位的,但是它的范围已经扩大了10倍,为什么还是要限制在32767里面呢?
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-1-20
在线时间
14 小时
发表于 2017-3-7 18:26:54 来自手机 | 显示全部楼层
以及还有个关于配置i2s接口的小问题和配置DMA的小问题,I2S_InitStructure.I2S_CPOL=I2S_CPOL_Low,配置成低是看芯片手册的哪个地方呢,还是高低都没影响呢?以及DNA_InitStructure.PeripheralDataSize跟Memory DataSize配置成Halfword,可以配置成Word吗?然后Buffer Size减半?谢谢楼主的耐心回复
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2076
金钱
2076
注册时间
2014-12-19
在线时间
709 小时
 楼主| 发表于 2017-3-8 08:21:11 | 显示全部楼层
crush丢丢 发表于 2017-3-7 15:13
谢谢大神答复,关于麦克风数据是24bit的,但是输出给USB的数据是16bit的,所以只取了高16bit,丢弃了低8bit ...

24bit取16位只会造成一定程序的细节丢失和失真而已,什么叫数据无效?你仍然能够听得出来声音。
有符号的16位就是正负32767,当然要限制在这个范围内,否则强制转换会导致正负不分,失真更大。
I2S的问题,要看具体的芯片和stm32的编程手册来设置。这里的设置是比较通用的。
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-1-20
在线时间
14 小时
发表于 2017-3-9 02:35:13 | 显示全部楼层
lvehe 发表于 2017-3-8 08:21
24bit取16位只会造成一定程序的细节丢失和失真而已,什么叫数据无效?你仍然能够听得出来声音。
有符号 ...

谢谢大神的点播,恍然大悟。
回复 支持 反对

使用道具 举报

2

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2015-8-7
在线时间
53 小时
发表于 2017-4-27 15:54:27 | 显示全部楼层
楼主有试过可以支持24bit没
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-9-28
在线时间
2 小时
发表于 2017-5-8 20:33:22 | 显示全部楼层
楼主,你好,我移植了你的程序,录制声音还是有问题,不知道是不是I2S采集的数据有问题。楼主有时间帮我采集一段原始的MIC PCM数据(16Khz, 16bit, 单通道)么,我想测试一下USB端是正常通的。先谢为敬。
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-1-20
在线时间
14 小时
发表于 2017-6-20 06:07:56 | 显示全部楼层
lvehe 发表于 2017-3-8 08:21
24bit取16位只会造成一定程序的细节丢失和失真而已,什么叫数据无效?你仍然能够听得出来声音。
有符号 ...

USB的传输每次是16bit 而I2S格式是24bit 为什么不分成两次发送把包括24bit的32bit全部发给上位机呢?
看代码中
for (i = 0; i < Buff_Size / 2; i++) //2字节
                {
                        tmp = I2S_Buffer[i*4] * vol + 0.5f;
                        if (tmp >= 32767)
                        {
                                tmp = 32767;
                        }
                        else if (tmp <= -32767)
                        {
                                tmp = -32767;
                        }
                        buff = (int16_t)tmp; //= I2S_Buffer[i*4];
}
I2S_Buffer[i*4]  这个地方 只取了I2S 后16bit  因为 stm32大小端的问题。其实还是不太理解,为什么要丢弃剩下的8bits
回复 支持 反对

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2076
金钱
2076
注册时间
2014-12-19
在线时间
709 小时
 楼主| 发表于 2017-6-20 08:17:02 | 显示全部楼层
crush丢丢 发表于 2017-6-20 06:07
USB的传输每次是16bit 而I2S格式是24bit 为什么不分成两次发送把包括24bit的32bit全部发给上位机呢?
看 ...

[mw_shl_code=c,true]        /* USB Microphone Audio Type I Format Type Descriptor */
        0x0B+9,                               /* bLength */
        AUDIO_INTERFACE_DESCRIPTOR_TYPE,      /* bDescriptorType */
        AUDIO_STREAMING_FORMAT_TYPE,          /* bDescriptorSubtype */
        AUDIO_FORMAT_TYPE_I,                  /* bFormatType */
        0x01,                                 /* bNrChannels:单声道 */
        0x02,                                 /* bSubFrameSize : 2 Bytes per audio subframe每个音频子帧占2个字节 */
        0x10,                                 /* bBitResolution : 16 bits per sample每个采样为16位 */
        0x04,                                 /* bSamFreqType */
        //B3VAL(USBD_AUDIO_FREQ),               /* tSamFreq : Audio sampling frequency coded on 3 bytes */
        B3VAL(48000),
        B3VAL(32000),
        B3VAL(16000),
        B3VAL(8000),[/mw_shl_code]在配置描述符中将数据的位数限定为16位了,如果你想改,可以改着试试。
16位只是我这个程序里是这样,USB协议并没有限制你去发挥其他可能性。
有想法就去改程序试试效果,验证自己的判断,不必太纠结。传输24位是肯定可行的。
回复 支持 反对

使用道具 举报

2

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2017-6-13
在线时间
10 小时
发表于 2017-6-20 10:47:02 | 显示全部楼层
666
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-1-20
在线时间
14 小时
发表于 2017-6-20 13:01:51 来自手机 | 显示全部楼层
恩恩,理解啦,谢谢大神耐心回复。我做了一个跟你一样的实验,代码基本相似,我还做了个fft实验,直接将DMA收集到的数据,合成24位的,然后强转成24位的浮点型数,做fft,发现低频分量<100HZ的特别多,后来我看了下24位的信号,头几位都是00,所以有一个直流分量,而且很大
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2017-8-3
在线时间
0 小时
发表于 2017-8-3 11:19:43 | 显示全部楼层
请问下楼主,可否支持96K 2声道 16bit的录音呢,我用cubeMX生成代码时,在采样率上,最高只能是48K,而且只识别到了播放设备。
回复 支持 反对

使用道具 举报

1

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2017-8-21
在线时间
32 小时
发表于 2017-8-21 11:39:41 | 显示全部楼层
真的很不错
回复 支持 反对

使用道具 举报

7

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2016-3-25
在线时间
36 小时
发表于 2017-11-1 18:46:31 | 显示全部楼层
为什么 有这么多错误呢   

.\CMSIS\stm32f4xx.h(107): error:  #35: #error directive: "Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)"
回复 支持 反对

使用道具 举报

7

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2016-3-25
在线时间
36 小时
发表于 2017-11-1 22:49:56 | 显示全部楼层
为什么我编译那么多的错误
回复 支持 反对

使用道具 举报

7

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2016-3-25
在线时间
36 小时
发表于 2017-11-1 22:50:11 | 显示全部楼层
搞不懂
回复 支持 反对

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-9-26
在线时间
22 小时
发表于 2017-11-12 04:40:50 | 显示全部楼层
請問這個怎麼改成雙聲道?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-10-28
在线时间
4 小时
发表于 2018-5-15 11:14:01 | 显示全部楼层
本帖最后由 shenwwyy 于 2018-5-15 11:21 编辑

您好,楼主,想请教个问题,目前已经实现USB录音功能,代码参考您的例程,但使用中发现个问题,就是在USB设备RESET再启动时,音频结束数据会出错,导致无法录音,不知道这个问题要怎么解决呢使用的是Bus Hound软件,观察USB通讯情况
模块资料如下:
模块 I2S 接口工作在 master 模式,输出为 16000Hz,16bit 的 mono pcm 音频。
需使用如下配置接收 I2S 音频数据
协议: 标准 I2S 格式
采样率: 16K
采样精度: 16bit
字宽: 32bit  

设备配置

设备配置

设备配置

设备配置

重启后,音频数据异常,设备音量柱也表现异常

重启后,音频数据异常,设备音量柱也表现异常

点击一些设置时USB会自动中断

点击一些设置时USB会自动中断

正常通讯

正常通讯
回复 支持 反对

使用道具 举报

59

主题

196

帖子

0

精华

高级会员

Rank: 4

积分
770
金钱
770
注册时间
2018-5-3
在线时间
192 小时
发表于 2018-5-29 16:06:04 | 显示全部楼层
请问楼主我的音量调节怎么是-8DB到+6DB,这是什么情况?
回复 支持 反对

使用道具 举报

59

主题

196

帖子

0

精华

高级会员

Rank: 4

积分
770
金钱
770
注册时间
2018-5-3
在线时间
192 小时
发表于 2018-5-29 16:08:08 | 显示全部楼层
还有就是我Feature Unit的 bmaControls(0)如果用16位表示,声音大一点就是失真
回复 支持 反对

使用道具 举报

59

主题

196

帖子

0

精华

高级会员

Rank: 4

积分
770
金钱
770
注册时间
2018-5-3
在线时间
192 小时
发表于 2018-6-13 09:30:47 | 显示全部楼层
#define DEFAULT_OUT_BIT_RESOLUTION                    16
#define DEFAULT_OUT_CHANNEL_NBR                       2 /* Mono = 1, Stereo = 2 */
#define AUDIO_OUT_PACKET                              (uint32_t)((USBD_AUDIO_FREQ * DEFAULT_OUT_BIT_RESOLUTION/8 * DEFAULT_OUT_CHANNEL_NBR) /1000)
/* modMono:1) */
#define DEFAULT_IN_BIT_RESOLUTION                    16
#define DEFAULT_IN_CHANNEL_NBR                       1 /* Mono = 1, Stereo = 2 */
#define AUDIO_IN_PACKET                               (uint32_t)((USBD_AUDIO_FREQ * DEFAULT_IN_BIT_RESOLUTION/8 * DEFAULT_IN_CHANNEL_NBR) /1000)

楼主实现了多频选择功能,默认频率是48K,单通道的话AUDIO_IN_PACKET=96,如果在电脑上把频率改成16K,AUDIO_IN_PACKET也是等于96,那样数据在传输过程中不就出现错误了吗?
QQ截图20180613084045.png
回复 支持 反对

使用道具 举报

7

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2016-12-30
在线时间
74 小时
发表于 2019-1-19 20:45:35 | 显示全部楼层
请问24位数据为什么是丢弃低8位,而不是高8位。直接使用高16位,音质感觉不行,有没有谁做过24位分辨率的usb录音,或者谁能告诉我如何使用低16位数据呢?
回复 支持 反对

使用道具 举报

7

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2016-12-30
在线时间
74 小时
发表于 2019-1-19 23:47:31 | 显示全部楼层
youguang360 发表于 2019-1-19 20:45
请问24位数据为什么是丢弃低8位,而不是高8位。直接使用高16位,音质感觉不行,有没有谁做过24位分辨率的us ...

不用了。发现这个高16位就可以用作真实的16位有效数据,效果很好,不管输入信号幅度多少,都不会因为忽略了8位数据而失真。我这里失真是因为有别的信号干扰了ADC。
回复 支持 反对

使用道具 举报

1

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2018-11-13
在线时间
26 小时
发表于 2019-4-25 18:23:05 | 显示全部楼层
楼主,关于usb识别成麦克设备,和外接的麦克风有关么?如果不接麦克风,那么怎么把usb配置成麦克风设备呢?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2019-8-6
在线时间
19 小时
发表于 2019-11-12 10:21:29 | 显示全部楼层
楼主,请教一下添加多屏选择功能在驱动方面只要修改描述符和AUDIO_REQ_SET_CUR这块的出里面。
目前用设备描述符软件能看到多个采样率,但是在设备属性里面灰色的单一频率,不可以切换。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-12-19
在线时间
5 小时
发表于 2019-12-20 23:11:43 | 显示全部楼层
大佬,问下我,为什么USB AUDIO_ FREG音频采样率最高只能设置为48000,不能设置为96000呢
回复 支持 反对

使用道具 举报

45

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1109
金钱
1109
注册时间
2016-3-25
在线时间
360 小时
发表于 2020-2-28 12:12:54 | 显示全部楼层
你好,请问怎么实现静音和音量的调节,可以大概说一下思路吗,谢谢!
代写STM32各类驱动,DEMO程序
回复 支持 反对

使用道具 举报

45

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1109
金钱
1109
注册时间
2016-3-25
在线时间
360 小时
发表于 2020-3-12 17:26:50 | 显示全部楼层
你好,我现在自己在写一个USB ADUDIO   目前实现 了对SPEAKER  MICROPHONE 的音量、静音控制。但是就是不知道 怎么同步 speaker microphoneR的数据。可否指点一下。谢谢
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-6-20
在线时间
2 小时
发表于 2020-3-16 10:43:32 | 显示全部楼层
感谢楼主分享。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2017-11-13
在线时间
2 小时
发表于 2020-5-23 18:10:42 | 显示全部楼层
厉害
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2020-6-2
在线时间
17 小时
发表于 2020-6-30 18:35:17 | 显示全部楼层
楼主我想问问, 为什么要重新定义一个麦克风开始的程序呢 它主要作用是什么呢 将音频信号给到usb——in吗?谢谢!


void Mic1_Start(void)
{
        DMA_ClearITPendingBit(AUDIO_DMA_RX_STREAM, AUDIO_DMA_RX_IT_MASK);
        DMA_Cmd(AUDIO_DMA_RX_STREAM, ENABLE);
        while(DMA_GetCmdStatus(AUDIO_DMA_RX_STREAM) != ENABLE);
       
        SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Rx, ENABLE);
        I2S_Cmd(SPI2, ENABLE);
}
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2020-8-20
在线时间
5 小时
发表于 2021-6-13 11:14:19 | 显示全部楼层
请教各位大神,有没有在F4实现过MIC和SPEAKER同时都可以用的。
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-9-9
在线时间
8 小时
发表于 2021-6-24 16:25:40 | 显示全部楼层
赞一个
回复 支持 反对

使用道具 举报

20

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
339
金钱
339
注册时间
2012-10-11
在线时间
134 小时
发表于 2021-6-24 17:40:03 | 显示全部楼层
感谢楼主分享!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
0
金钱
0
注册时间
2021-6-28
在线时间
0 小时
发表于 2021-6-28 15:22:30 | 显示全部楼层
感谢,非常具有参考价值
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-7-21
在线时间
3 小时
发表于 2021-7-8 11:32:56 | 显示全部楼层
楼主我想请问一个问题:我的I2S接收到的单声道32位语音数据怎么上传给USB呢?(接收到的是PCM的格式,请问USB那边是PCM格式吗)
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2018-10-29
在线时间
4 小时
发表于 2021-9-3 14:30:54 | 显示全部楼层
Mr.liu 发表于 2020-3-12 17:26
你好,我现在自己在写一个USB ADUDIO   目前实现 了对SPEAKER  MICROPHONE 的音量、静音控制。但是就是不知 ...

你好,有几个问题想请教一下。请问你是控制的电脑麦克风音量么,如果是的话是通过什么方式控制的,是通过HID报告符控制的么?
回复 支持 反对

使用道具 举报

45

主题

198

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1109
金钱
1109
注册时间
2016-3-25
在线时间
360 小时
发表于 2021-9-11 16:04:48 | 显示全部楼层
海西 发表于 2021-9-3 14:30
你好,有几个问题想请教一下。请问你是控制的电脑麦克风音量么,如果是的话是通过什么方式控制的,是通过 ...

通过报告描述符控制的。
代写STM32各类驱动,DEMO程序
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2019-6-11
在线时间
30 小时
发表于 2021-9-13 13:48:19 | 显示全部楼层
wzssl 发表于 2019-12-20 23:11
大佬,问下我,为什么USB AUDIO_ FREG音频采样率最高只能设置为48000,不能设置为96000呢

你好,请问这个问题目前解决了吗,我也遇到了同样的困扰
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 10:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表