硬汉嵌入式论坛

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

[DMA] H750 的 DMA1、DMA2 不能在EXTI0触发下工作

[复制链接]

1

主题

3

回帖

6

积分

新手上路

可乐

积分
6
QQ
发表于 2020-3-15 15:37:06 | 显示全部楼层 |阅读模式
用 TIM 触发 DMA1、DMA2 传输 GPIO 口上输入的数据到 SRAM1~2,结果正常。

用 TIM 触发 BDMA 传输 GPIO 口上输入的数据到 SRAM4,结果正常。
用 EXTI0 触发 BDMA 传输 GPIO 口上输入的数据到SRAM4,结果正常。




如果用 EXTI0 触发 DMA1、DMA2 传输 GPIO 口上输入的数据到 SRAM1~2,结果 DMA 无法启动。



不知道各位大侠有没有遇到过这种怪事。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2020-3-16 02:07:23 | 显示全部楼层
用的 HAL_DMAMUX1_REQ_GEN_EXTI0做触发更新? 按说没问题。把SRAM的Cache关闭了,方便读取的是已经更新的值
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

可乐

积分
6
QQ
 楼主| 发表于 2020-3-16 14:15:09 | 显示全部楼层
是的,用的 HAL_DMAMUX1_REQ_GEN_EXTI0 做触发更新。程序结构 BDMA 与 DMA1~2 是一样的,结果DMA1~2就是不工作。
圈子里有用 HAL_DMAMUX1_REQ_GEN_EXTI0 做 DMA1~2 触发的例子吗?
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

可乐

积分
6
QQ
 楼主| 发表于 2020-3-16 14:16:40 | 显示全部楼层
是的,用的 HAL_DMAMUX1_REQ_GEN_EXTI0 做触发更新。程序结构 BDMA 与 DMA1~2 是一样的,结果DMA1~2就是不工作。 有圈子里有用 HAL_DMAMUX1_REQ_GEN_EXTI0 做 DMA1~2 触发的例子吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2020-3-16 14:17:56 | 显示全部楼层
回头我测测,暂时用不到这个功能,就一直没有测试过。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

可乐

积分
6
QQ
 楼主| 发表于 2020-3-18 21:12:10 | 显示全部楼层
找到了一点线索:在H7的参考手册 RM0433 V5版的 16.3.2 DMAMUX1 mapping 的 Table 117 中
标明 DMAMUX1 Trigger input #6  为 “extit0” 。  而 16.3.3 DMAMUX2 mapping 的 Table 119 中
标明 DMAMUX2 Trigger input #20  为 “Syscfg_exti0_mux”
是不是这样导致的使用 DMAMUX2 的 BDMA 可以被 EXTI0 触发,而使用 DMAMUX1 的 DMA1~2 不可以被 EXTI0 触发?
请教各位大侠,有谁知道  “extit0”  与  “Syscfg_exti0_mux” 信号的细节? 找遍整个手册都找不到出处与描述。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2020-3-18 22:12:38 | 显示全部楼层
bure 发表于 2020-3-18 21:12
找到了一点线索:在H7的参考手册 RM0433 V5版的 16.3.2 DMAMUX1 mapping 的 Table 117 中
标明 DMAMUX1 T ...

这个间接的看HAL库里面的API定义或者CubeMX的生成即可,应该是一样的。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2020-7-17 22:07:43 | 显示全部楼层
要启用中断,用能进入EXTI0_IRQHandler才可以,
HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI0_IRQn);
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2020-7-18 00:02:29 | 显示全部楼层
xxwl0406 发表于 2020-7-17 22:07
要启用中断,用能进入EXTI0_IRQHandler才可以,
HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);
HAL_NVIC_Enab ...

谢谢告知,回头试试。
回复

使用道具 举报

57

主题

88

回帖

259

积分

高级会员

积分
259
发表于 2021-3-13 16:32:45 | 显示全部楼层
不知硬汉验证过没,好像的确是这样的:用SPI读AD7606,AD7606的转换完成脚做为外部EXTI0(PB0),必须使能EXTI中断才能启动DMA读取AD7606。

另外请教:
因几个SPI都不位于APB4,所以无法使用BDMA,如果要使用EXT0同步读SPI,不开EXTI中断是不行的了。
这样理解对不?

谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2021-3-14 07:03:28 | 显示全部楼层
twodiamond 发表于 2021-3-13 16:32
不知硬汉验证过没,好像的确是这样的:用SPI读AD7606,AD7606的转换完成脚做为外部EXTI0(PB0),必须使能EXT ...

还没有,有时间了试试。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 01:15 , Processed in 0.181298 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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