完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在使用dfsdm单个麦克风录音出现录音重复(同一个数据包会出现两次,丢掉的数据报就是那个重复的。),可以使用一个麦克风吗,帮忙看下配置是不是正确。
//回调函数如下 void HAL_DFSDM_FilterRegConvHalfCpltCallback(DFSDM_Filter_HandleTypeDef hdfsdm_filter)
f_write(file,(uint8_t)PlayBuff,(PCM_LEN),(UINT) bw);//写入文件sumer=sumer+(PCM_LEN);led_toggle(LED_B);} //这是的DFSDM单声道设置 __HAL_DFSDM_CHANNEL_RESET_HANDLE_STATE( DfsdmLeftChannelHandle);DfsdmLeftChannelHandle.Instance = DFSDM1_Channel1;DfsdmLeftChannelHandle.Init.OutputClock.Activation = ENABLE;DfsdmLeftChannelHandle.Init.OutputClock.Selection = DFSDM_CHANNEL_OUTPUT_CLOCK_AUDIO;DfsdmLeftChannelHandle.Init.OutputClock.Divider = 11; / 11.294MHz/11 = 1.026MHz /DfsdmLeftChannelHandle.Init.Input.Multiplexer = DFSDM_CHANNEL_EXTERNAL_INPUTS;DfsdmLeftChannelHandle.Init.Input.DataPacking = DFSDM_CHANNEL_STANDARD_MODE; / N.U. /DfsdmLeftChannelHandle.Init.Input.Pins = DFSDM_CHANNEL_SAME_CHANNEL_PINS;DfsdmLeftChannelHandle.Init.SerialInterface.Type = DFSDM_CHANNEL_SPI_RISING;DfsdmLeftChannelHandle.Init.SerialInterface.SpiClock = DFSDM_CHANNEL_SPI_CLOCK_INTERNAL;DfsdmLeftChannelHandle.Init.Awd.FilterOrder = DFSDM_CHANNEL_FASTSINC_ORDER; / N.U. /DfsdmLeftChannelHandle.Init.Awd.Oversampling = 10; / N.U. /DfsdmLeftChannelHandle.Init.Offset = 0;DfsdmLeftChannelHandle.Init.RightBitShift = 2;if(HAL_OK != HAL_DFSDM_ChannelInit( DfsdmLeftChannelHandle)){Error_Handler();} / Initialize filter 0 (left channel) /__HAL_DFSDM_FILTER_RESET_HANDLE_STATE( DfsdmLeftFilterHandle);DfsdmLeftFilterHandle.Instance = DFSDM1_Filter0;DfsdmLeftFilterHandle.Init.RegularParam.Trigger = DFSDM_FILTER_SW_TRIGGER;DfsdmLeftFilterHandle.Init.RegularParam.FastMode = ENABLE;DfsdmLeftFilterHandle.Init.RegularParam.DmaMode = ENABLE;DfsdmLeftFilterHandle.Init.InjectedParam.Trigger = DFSDM_FILTER_SW_TRIGGER; / N.U. /DfsdmLeftFilterHandle.Init.InjectedParam.ScanMode = ENABLE; / N.U. /DfsdmLeftFilterHandle.Init.InjectedParam.DmaMode = DISABLE; / N.U. /DfsdmLeftFilterHandle.Init.InjectedParam.ExtTrigger = DFSDM_FILTER_EXT_TRIG_TIM1_TRGO; / N.U. /DfsdmLeftFilterHandle.Init.InjectedParam.ExtTriggerEdge = DFSDM_FILTER_EXT_TRIG_RISING_EDGE; / N.U. /DfsdmLeftFilterHandle.Init.FilterParam.SincOrder = DFSDM_FILTER_SINC3_ORDER;DfsdmLeftFilterHandle.Init.FilterParam.Oversampling = 128; / 11.294MHz/(1164) = 8KHz */DfsdmLeftFilterHandle.Init.FilterParam.IntOversampling = 1;if(HAL_OK != HAL_DFSDM_FilterInit( DfsdmLeftFilterHandle)){Error_Handler();} |
|
相关推荐
1个回答
|
|
从您提供的代码中,没有找到直接导致录音重复的问题。可能还需要查看您的硬件配置和初始化代码来进一步排查问题。
下面是一些可能导致录音重复的原因以及解决方法: 1. DFSDM过滤器配置不正确:请确保您的DFSDM过滤器配置正确。您可以查看相关文档和示例代码,了解正确的配置方式。 2. 中断处理不正确:您的回调函数中的中断处理逻辑正确吗?请确保您在处理中断时没有引入任何多余的操作或错误的逻辑导致录音重复。 3. 资源竞争:如果您的硬件平台同时有多个模块或任务占用了DFSDM接口或内部缓冲区,可能会导致数据丢失或重复。请确保只有一个任务在录音期间使用DFSDM接口,并避免其他模块或任务与DFSDM冲突。 4. 数据处理问题:在处理音频数据时,您是否正确地处理了缓冲区指针?请确保您的数据处理逻辑正确,没有引入错误的指针操作导致数据重复。 综上所述,您需要仔细检查DFSDM过滤器的配置、中断处理、资源竞争和数据处理等方面,找到导致录音重复的具体原因。此外,确保硬件连接正确,并检查硬件文档以确保使用正确的麦克风配置。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 04:35 , Processed in 0.768919 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号