完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用I2S采集音频数据,目前数据可以成功采集,不过这并不是我最终希望得到的数据,根据datasheet得知INMP441有着-26dBFS的灵敏度,那么请问应当怎样将输出结果转换成声压值?
代码如下: #define I2S_PORT I2S_NUM_0 #define I2S_SCK 14 #define I2S_WS 15 #define I2S_SD 32 const int BLOCK_SIZE = 128; void i2s_install(){ //配置I2S const i2s_config_t i2s_config = { .mode = i2s_mode_t(I2S_MODE_MASTER | I2S_MODE_RX), .sample_rate = 44100, //采样频率,默认44100Hz .bits_per_sample = i2s_bits_per_sample_t(32), .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT, .communication_format = i2s_comm_format_t(I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB), .intr_alloc_flags = 0, .dma_buf_count = 8, .dma_buf_len = 64, .use_apll = false }; i2s_driver_install(I2S_PORT,&i2s_config,0,NULL); } void i2s_setpin(){ const i2s_pin_config_t pin_config = { .bck_io_num = I2S_SCK, .ws_io_num = I2S_WS, .data_out_num = -1, .data_in_num = I2S_SD }; i2s_set_pin(I2S_PORT, &pin_config); } void setup() { Serial.begin(115200); Serial.println("Configuring I2S..."); i2s_install(); i2s_setpin(); i2s_start(I2S_PORT); Serial.println("I2S driver installed."); } void loop() { uint32_t sample = 0; int bytes_read = i2s_pop_sample(I2S_PORT, (char *)&sample, portMAX_DELAY); // no timeout if (bytes_read > 0) { Serial.println(sample); } } |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
313 浏览 0 评论
1170 浏览 1 评论
585浏览 6评论
483浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
468浏览 5评论
467浏览 4评论
442浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 06:43 , Processed in 0.751273 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号