硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2314|回复: 5
收起左侧

V6-107_WM8978录音和放音例程中DMA异常

[复制链接]

6

主题

5

回帖

23

积分

新手上路

积分
23
发表于 2020-4-2 14:34:38 | 显示全部楼层 |阅读模式
dma一次无法自动获取数据,必须开关一次录音后再开,才能获取正常录音放音,谁有遇到类似的情况吗?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2020-4-2 14:39:32 | 显示全部楼层
折腾我这个例子里面的录音放音例子,DMA方式很好用,随意折腾,升级了驱动。

【年末福利】F429开发板12期emWin提高篇实战例程发布,含音视频播放器,uCOS-III和FreeRTOS两个版本
http://www.armbbs.cn/forum.php?m ... id=23687&fromuid=58
(出处: 硬汉嵌入式论坛)





回复

使用道具 举报

6

主题

5

回帖

23

积分

新手上路

积分
23
 楼主| 发表于 2020-4-3 15:26:45 | 显示全部楼层
eric2013 发表于 2020-4-2 14:39
折腾我这个例子里面的录音放音例子,DMA方式很好用,随意折腾,升级了驱动。

【年末福利】F429开发板12 ...

/* 音频子模块的音频数据寄存器, 用于DMA传输配置 */
#define SAI_BLOCK1_DR                (uint32_t)(&SAI1_Block_A->DR)                 /* 放音的 */
#define SAI_BLOCK2_DR                (uint32_t)(&SAI1_Block_B->DR)                 /* 录音的 */

#define SAI_RCC                  RCC_APB2Periph_SAI1
#define SAI_GPIO_AF              GPIO_AF_SAI1
#define SAI_BLOCK1                    SAI1_Block_A                /* 主音频子模块 - 放音 */
#define SAI_BLOCK2                    SAI1_Block_B                /* 从音频子模块 - 录音 */

#define SAI_GPIO_RCC             RCC_AHB1Periph_GPIOE

#define SAI_GPIO_FS              GPIOE
#define SAI_PIN_FS               GPIO_Pin_4
#define SAI_PINSRC_FS            GPIO_PinSource4

#define SAI_GPIO_SCK             GPIOE
#define SAI_PIN_SCK              GPIO_Pin_5
#define SAI_PINSRC_SCK           GPIO_PinSource5

#define SAI_GPIO_MCK             GPIOE
#define SAI_PIN_MCK              GPIO_Pin_2
#define SAI_PINSRC_MCK           GPIO_PinSource2

#define SAI_GPIO_SD1             GPIOE
#define SAI_PIN_SD1              GPIO_Pin_6
#define SAI_PINSRC_SD1           GPIO_PinSource6

#define SAI_GPIO_SD2             GPIOE
#define SAI_PIN_SD2              GPIO_Pin_3
#define SAI_PINSRC_SD2           GPIO_PinSource3

/* DMA传输相关的标志:
        半传输          HTIF  HTIE
        传输完成        TCIF  TCIE
        传输错误        TEIF  TEIE
        FIFO 上溢/下溢  FEIF  FEIE
        直接模式错误    DMEIF  DMEI
*/

/* SAI DMA Stream definitions  <---- 放音的 SAI1_B 使用 DMA2_Stream5 _Channel_0 */
#define PLAY_DMA_CLOCK            RCC_AHB1Periph_DMA2
#define PLAY_DMA_STREAM           DMA2_Stream1
#define PLAY_DMA_CHANNEL          DMA_Channel_0
#define PLAY_DMA_IRQ              DMA2_Stream1_IRQn
#define PLAY_DMA_FLAG_TC          DMA_FLAG_TCIF1
#define PLAY_DMA_FLAG_HT          DMA_FLAG_HTIF1
#define PLAY_DMA_FLAG_FE          DMA_FLAG_FEIF1
#define PLAY_DMA_FLAG_TE          DMA_FLAG_TEIF1
#define PLAY_DMA_FLAG_DME         DMA_FLAG_DMEIF1
#define PLAY_DMA_FLAG_ALL         (uint32_t)(PLAY_DMA_FLAG_TC | PLAY_DMA_FLAG_HT | PLAY_DMA_FLAG_FE | PLAY_DMA_FLAG_TE | PLAY_DMA_FLAG_DME)
#define PLAY_DMA_PERIPH_DATA_SIZE DMA_PeripheralDataSize_HalfWord
#define PLAY_DMA_MEM_DATA_SIZE    DMA_MemoryDataSize_HalfWord

#define PLAY_DMA_IRQHandler      DMA2_Stream1_IRQHandler

/* SAI DMA Stream definitions <---- 录音的 SAI1_A 使用 DMA2_Stream1 _Channel_0;  DMA2_Stream3被SDIO占用  
        DMA2_Stream3 被SDIO占用
        DMA2_Stream1 被CAMERA占用;将CAMER 的 DMA Stream1 修改为 DMA Stream7.
*/
#define REC_DMA_CLOCK            RCC_AHB1Periph_DMA2
#define REC_DMA_STREAM           DMA2_Stream5
#define REC_DMA_CHANNEL          DMA_Channel_0
#define REC_DMA_IRQ              DMA2_Stream5_IRQn
#define REC_DMA_FLAG_TC          DMA_FLAG_TCIF5
#define REC_DMA_FLAG_HT          DMA_FLAG_HTIF5
#define REC_DMA_FLAG_FE          DMA_FLAG_FEIF5
#define REC_DMA_FLAG_TE          DMA_FLAG_TEIF5
#define REC_DMA_FLAG_DME         DMA_FLAG_DMEIF5
#define REC_DMA_FLAG_ALL         (uint32_t)(REC_DMA_FLAG_TC | REC_DMA_FLAG_HT | REC_DMA_FLAG_FE | REC_DMA_FLAG_TE | REC_DMA_FLAG_DME)
#define REC_DMA_PERIPH_DATA_SIZE DMA_PeripheralDataSize_HalfWord
#define REC_DMA_MEM_DATA_SIZE    DMA_MemoryDataSize_HalfWord

#define REC_DMA_IRQHandler       DMA2_Stream5_IRQHandler

我引脚换了后,会出现程序死机的现象,并且不进入中断,中断中的判断标志已经换成对应的stream了
回复

使用道具 举报

6

主题

5

回帖

23

积分

新手上路

积分
23
 楼主| 发表于 2020-4-3 15:30:01 | 显示全部楼层
starry22 发表于 2020-4-3 15:26
/* 音频子模块的音频数据寄存器, 用于DMA传输配置 */
#define SAI_BLOCK1_DR                (uint32_t)(&SAI1_ ...

我在以前的V6-107_WM8978例程中修改这些参数就能正常使用
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2020-4-3 15:30:43 | 显示全部楼层
starry22 发表于 2020-4-3 15:26
/* 音频子模块的音频数据寄存器, 用于DMA传输配置 */
#define SAI_BLOCK1_DR                (uint32_t)(&SAI1_ ...

最好使用跟我们开发板一样的引脚,排错起来方便些。
回复

使用道具 举报

6

主题

5

回帖

23

积分

新手上路

积分
23
 楼主| 发表于 2020-4-3 15:31:46 | 显示全部楼层
eric2013 发表于 2020-4-3 15:30
最好使用跟我们开发板一样的引脚,排错起来方便些。

和你们开发板一样的话 是没问题的 换了引脚就不行了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-10 23:43 , Processed in 0.266830 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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