发现一个好东西!!收藏了!谢谢
点赞  2018-3-12 16:41
厉害
点赞  2018-3-12 19:03
学习一下
点赞  2018-3-30 16:46
                                 
点赞  2018-3-31 08:28
很强 我有两个问题想请教 第一个是这个利用数字麦克风采集音频的时候如果采集传感器的其他数据会有影响吗 在其他传感器的历程当中我看利用的thread 如果想同时工作 可以把采集音频再加一个thread么 看instruct这两部分的接口是不一样的 是不是加入audio-thread可以直接加
第二个在这个程序中利用了USB cdc 类 然后把结果直接输出 之前的调试看用的是debug模式进行的 为什么不也采用虚拟串口呢 如果采用虚拟串口电脑实时的读出返回的数据进行处理 是不是普通的串口工具就不行 需要其他的办法
点赞  2018-4-11 09:43
引用: 木木铁 发表于 2018-4-11 09:43
很强 我有两个问题想请教 第一个是这个利用数字麦克风采集音频的时候如果采集传感器的其他数据会有影响吗  ...

一 只要有足够多的时间处理音频数据就可以
二 usb cdc相当于用stm32实现了usb转串口,也可以直接用uart输出
点赞  2018-4-11 15:55
辛苦楼主
点赞  2018-4-11 16:06
引用: littleshrimp 发表于 2018-4-11 15:55
一 只要有足够多的时间处理音频数据就可以
二 usb cdc相当于用stm32实现了usb转串口,也可以直接用uart ...

1.还有一个问题,不知道你上位机是用什么做的,如果用MATLAB做一个GUI界面的话,接收串口数据,然后通过MATLAB进行分析是不是也可以,这样的话是不是对于音频处理的时间就可以少了一些,仅是利用CDC虚拟串口把音频数据发送到PC端
2.楼主你那个引脚的接线图在哪个资料里看到的,就是怎么知道的PB6连接的data线,我没有找到
点赞  2018-4-11 20:58
引用: 木木铁 发表于 2018-4-11 20:58
1.还有一个问题,不知道你上位机是用什么做的,如果用MATLAB做一个GUI界面的话,接收串口数据,然后通过M ...

matlab计算速度会快 不过音频到电脑的传输会受到USB速率的限制 引脚定义可以看单片机的数据手册
点赞  2018-4-12 07:33
学习学习
点赞  2018-4-13 23:28
在这个例程中PCM_Buffer[]数组中存储的是采集的语音信息,我想试一下直接通过串口把这个数组中的数据发送到电脑,然后分析。按照程序中看PCM_Buffer数组中奇数为为一声道,偶数为为另一声道。在例程中有
uint8_t CDC_Fill_Buffer(uint8_t* Buf, uint32_t TotalLen)函数可以输出,但是PCM_Buffer是uint16。在程序中进行了转化,为什么调试的时候变量变成了char型呢
  1. uint16_t audio_out1[AUDIO_IN_BUF_LEN / 2];
  2. uint8_t audio_out1_H[AUDIO_IN_BUF_LEN / 2];
  3. uint8_t audio_out1_L[AUDIO_IN_BUF_LEN / 2];
  4. void AudioProcess(void)
  5. ...
  6. for(indexIn=0;indexIn<AUDIO_IN_BUF_LEN;indexIn++)
  7.   {
  8.     audio_out_buffer[IndexOut++] = PCM_Buffer[indexIn];
  9.     audio_out_buffer[IndexOut++] = PCM_Buffer[indexIn];
  10.                
  11.                 /*add*/
  12.                 audio_out1[audio_out_index] = PCM_Buffer[indexIn];
  13.                 audio_out1_H[audio_out_index] = (uint8_t) (PCM_Buffer[audio_out_index] >> 8);
  14.                 audio_out1_L[audio_out_index] = (uint8_t) (PCM_Buffer[audio_out_index]);


  • 0101.PNG
点赞  2018-4-14 08:36
引用: 木木铁 发表于 2018-4-14 08:36
在这个例程中PCM_Buffer[]数组中存储的是采集的语音信息,我想试一下直接通过串口把这个数组中的数据发送到 ...

你的audio_out1_H不是定义成uint8_t类型了吗?
通过CDC_Fill_Buffer发送数据可以直接( uint8_t * )audio_out1把audio_out1强制转换成unsigned char,在电脑上注意大小端就可以
虾扯蛋,蛋扯虾,虾扯蛋扯虾
点赞  2018-4-14 12:40
引用: littleshrimp 发表于 2018-4-14 12:40
你的audio_out1_H不是定义成uint8_t类型了吗?
通过CDC_Fill_Buffer发送数据可以直接( uint8_t * )audio ...

谢谢你的解答
点赞  2018-4-16 02:44
先收着,有空要好好学习一下
点赞  2018-4-16 08:40
楼主 在audioloop中的uint16的PCM_Buffer中的数据什么意思,代表什么
点赞  2018-4-17 03:40
引用: 木木铁 发表于 2018-4-17 03:40
楼主 在audioloop中的uint16的PCM_Buffer中的数据什么意思,代表什么

麦克风的PDM数据经过低通滤波后通过DMA方式保存在pcm数组,虽然是uint16实际是int16,范围是-32768~32767,每一个数据对应指定采样率下的一个样本,数值的大小代表麦克风的振幅,绝对值越大振幅越大
点赞  2018-4-17 10:53
引用: littleshrimp 发表于 2018-4-17 10:53
麦克风的PDM数据经过低通滤波后通过DMA方式保存在pcm数组,虽然是uint16实际是int16,范围是-32768~3276 ...

非常感谢 很有帮助
点赞  2018-4-18 05:01
厉害了!
点赞  2018-4-18 09:04
正好想了解这一块,
点赞  2018-4-24 09:25
正好想了解这一块
点赞  2018-4-24 09:26
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复