打印
[STM32F4]

DAC DMA停止和启动之间的差距

[复制链接]
133|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
封存into|  楼主 | 2025-6-26 23:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AC, DAC, DM, DMA
我有一个1000字节的数组,在HAL_DAC_START_DMA函数中调用,启动DAC DMA触发定时器。在DAC DMA的半完成回调时,我从SD卡内的文件中读取下一个1000字节,在完成DAC DMA回调时,停止触发计时器,停止DAC DMA并将新的1000字节重新加载到HAL_DAC_START_DMA函数中,然后再次启动计时器。
// audio out function main bitsmemset((void *) DacAudioBuffer.Audio16BitBuffer, 0, sizeof(DacAudioBuffer.Audio16BitBuffer));memcpy((void *) DacAudioBuffer.Audio16BitBuffer, (void *) DacAudioBuffer.Temp16AudioBuffer, sizeof(DacAudioBuffer.Temp16AudioBuffer)); HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1, (uint32_t *) DacAudioBuffer.Audio16BitBuffer, BuffSize, DAC_ALIGN_12B_R);HAL_TIM_Base_Start_IT(&htim2); // DAC DMA half out call backIsDacDataHalfOut = TRUE; // DAC DMA complete call backif(HAL_TIM_Base_Stop_IT(&htim2) == HAL_OK) {         if(HAL_DAC_Stop_DMA(hdac, DAC_CHANNEL_1) == HAL_OK) {}         IsDacDataCpltOut = TRUE;}
我的主要问题是,当我停止计时器和重新启动它之间有一个时间差。
我从文件中阅读的数据是音频字节,希望这些波形能完美地融合在一起,但随着时间的推移,时间差变得越来越大。如下图
请教如何解决

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

88

帖子

0

粉丝