请教:STR9外部DMA功能
查过STR9手册, 发现有两个DMA_DRQ引脚, 但没有DMA_ACK引脚. 请教如何与需要该信号的外部DMA设备连接.关于STR9外部DMA功能
这个问题已经讨论过,请看以前的帖子:“STR912不能直接支持外部DMA功能” 浪淘沙 发表于 2007-1-25 14:46这个问题已经讨论过,请看以前的帖子:“STR912不能直接支持外部DMA功能”
尽管STR9不直接支持外部DMA,但有一些替代方案可以实现 在STR9微控制器中,确实存在DMA_DRQ(DMA请求)引脚,但没有DMA_ACK(DMA应答)引脚 理解DMA_DRQ和DMA_ACK的作用DMA_DRQ:由外部设备发出,用于向DMA控制器请求数据传输。DMA_ACK:由DMA控制器发出,用于通知外部设备数据传输已经开始
在STR9中,DMA_DRQ引脚用于接收外部设备的DMA请求,但缺少DMA_ACK引脚,因此需要其他方式实现应答功能
将STR9的一个GPIO引脚配置为输出模式,作为DMA_ACK信号。在DMA传输开始时,通过软件控制该GPIO引脚输出高电平,表示应答。在DMA传输结束时,将GPIO引脚拉低
使用IO模拟呗,其优点为简单易实现,无需额外硬件,但可能增加CPU负担
配置STR9的定时器,在DMA传输开始时触发定时器,生成一个固定宽度的脉冲作为DMA_ACK信号
使用外部逻辑电路(如与门、触发器)根据DMA_DRQ信号生成DMA_ACK信号
使用外部逻辑电路(如与门、触发器)根据DMA_DRQ信号生成DMA_ACK信号
例如,当DMA_DRQ为高时,触发一个单稳态电路生成固定宽度的DMA_ACK脉冲
如果STR9的DMA功能无法满足需求,可以使用外部DMA控制器(如FPGA或专用DMA芯片)。外部DMA控制器可以直接处理DMA_DRQ和DMA_ACK信号
如果外部设备对DMA_ACK信号的时序要求不高,推荐使用GPIO模拟DMA_ACK,这是最简单且成本最低的方案。如果时序要求较高,可以使用定时器生成DMA_ACK或外部逻辑电路
DMA还是根据文件说明书进行设置
页:
[1]