GD32F305的DMA能不能通过外部EXTI触发?

[复制链接]
4310|32
 楼主| tovax 发表于 2024-3-4 11:29 | 显示全部楼层 |阅读模式
想通过外部EXTI的上升沿和下降沿分别触发两组DMA数据传输,请问GD32F305支持这种用法吗?
cemaj 发表于 2024-3-10 07:33 | 显示全部楼层
DMA可以通过中断或事件来触发数据传输,但它的触发通常是由内部的硬件事件(如定时器、ADC转换完成等)触发的,而不是由外部中断(EXTI)直接触发。
olivem55arlowe 发表于 2024-3-6 07:41 | 显示全部楼层
GD32F305的DMA可以通过外部中断/事件控制器(EXTI)触发
wengh2016 发表于 2024-3-6 08:30 | 显示全部楼层
外部中断(EXTI)是用来处理来自外部引脚的信号,例如按键按下、传感器信号等。当外部事件发生时,EXTI可以配置为生成中断请求,CPU会根据中断优先级和处理程序来响应这些中断。
 楼主| tovax 发表于 2024-3-6 10:13 | 显示全部楼层
olivem55arlowe 发表于 2024-3-6 07:41
GD32F305的DMA可以通过外部中断/事件控制器(EXTI)触发

十分感谢您的回复!
从"GD32F30x_User_Manual.pdf"上看的DMA请求,没有看到EXTI的触发,请问大概什么样的实现思路呢?
lihuami 发表于 2024-3-7 12:07 | 显示全部楼层
在EXTI的中断服务例程(ISR)中编写代码,当检测到外部事件时,手动启动DMA传输。这需要你在DMA传输完成之前一直保持对EXTI状态的监控,并确保在DMA传输启动后不会错过任何外部事件。
maqianqu 发表于 2024-3-7 14:00 | 显示全部楼层
没有直接提到GD32F305系列能否通过外部EXTI触发DMA,但从GD32系列的通用设计趋势来看,GD32F305确实可以通过EXTI触发DMA操作。
febgxu 发表于 2024-3-7 22:27 | 显示全部楼层
在EXTI中断服务函数中,设置DMA请求标志。当EXTI线路触发中断时,DMA控制器将自动执行相应的DMA传输。
jtracy3 发表于 2024-3-8 21:01 | 显示全部楼层
在GD32F305中,DMA传输可以通过配置EXTI来触发。具体操作如下:

配置EXTI的触发方式,选择适当的触发边沿(如上升沿或下降沿)。
使能相应的EXTI线,并设置其优先级。
在DMA的配置中,将EXTI设置为触发源。
vivilyly 发表于 2024-3-9 16:36 | 显示全部楼层
外部中断EXTI发生时,你可以在中断服务例程(ISR)中编写代码来启动DMA传输。这样,尽管DMA的启动不是由外部中断直接触发的,但它可以在外部中断发生后的软件处理过程中被间接触发。
sdlls 发表于 2024-3-9 21:00 | 显示全部楼层
如果GD32F305的硬件支持将外部中断与DMA事件相关联,那么可以配置EXTI来触发DMA。这可能需要查阅特定的硬件手册来确认是否支持这样的配置。
pl202 发表于 2024-3-10 16:24 | 显示全部楼层
GD32F305的DMA(直接内存访问)功能本身不支持通过外部EXTI(外部中断)直接触发。
jackcat 发表于 2024-3-10 22:47 | 显示全部楼层
选择一个可用的DMA通道,并将其配置为从EXTI线路接收触发请求。在DMA通道配置中,您需要设置源地址、目标地址、数据宽度、数据长度等参数。
mikewalpole 发表于 2024-3-11 14:33 | 显示全部楼层
配置EXTI线路以触发中断。在EXTI中断服务函数中,您可以设置DMA请求标志。
yorkbarney 发表于 2024-3-11 16:33 | 显示全部楼层
支持通过外部中断/事件控制器(EXTI)来触发DMA传输。
lzmm 发表于 2024-3-11 18:37 | 显示全部楼层
在进行配置时,您需要设置GPIO口连接到相应的外部中断/事件线,并配置中断口以选择中断或事件以及相应的触发类型。
jkl21 发表于 2024-3-11 20:37 | 显示全部楼层
在配置DMA传输时,可以设置相应的EXTI线(例如,EXTI线0-15)来触发DMA传输。在EXTI线产生上升沿或下降沿事件时,可以触发DMA传输,实现数据的自动传输。
updownq 发表于 2024-3-11 22:39 | 显示全部楼层
请查阅GD32F305系列的数据手册和用户指南
 楼主| tovax 发表于 2024-3-12 10:41 | 显示全部楼层
lihuami 发表于 2024-3-7 12:07
在EXTI的中断服务例程(ISR)中编写代码,当检测到外部事件时,手动启动DMA传输。这需要你在DMA传输完成之 ...

十分感谢您的回复!
最终使用定时器(TIMER1_CH2)来自动触发DMA0_CH0了,主要是为了避免进EXTI中断之后的操作(时序要求比较高)。
robincotton 发表于 2024-3-12 12:32 | 显示全部楼层
配置DMA通道,使其关联到该EXTI触发的DMA请求,并设置数据传输的相关参数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

25

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部