TI中文支持网
TI专业的中文技术问题搜集分享网站

设置GPIO口作为dma的触发源

设置F3口作为dma的触发源,可以产生中断,但是用逻辑分析仪测过后,感觉它不是有F3控制

SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA); //使能外设uDMA
SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_UDMA); //使能uDMA休眠模式
IntEnable(INT_UDMAERR); //使能uDMA错误中断
uDMAEnable(); //使能uDMA
// IntEnable(INT_UDMA); // 使能UDMA中断
uDMAControlBaseSet(pui8ControlTable);

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); //使能GPIOF4时钟———–CLK
GPIODMATriggerEnable(GPIO_PORTF_BASE,GPIO_PIN_3); //设置PF4为DMA触发源
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE,GPIO_PIN_3); //设置F4为输入
GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_3,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);//配置F4为上拉电阻 输出电流能力2mA
GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_3,GPIO_RISING_EDGE);//上升沿触发
GPIOIntRegister(GPIO_PORTF_BASE,GPIOIntHandler_HREF);
GPIOIntEnable(GPIO_PORTF_BASE,GPIO_PIN_3); //使能F4中断
IntEnable(INT_GPIOF);
IntMasterEnable();

uDMAChannelAssign(UDMA_CH15_GPIOF); //配置通道15GPIOF

// 这个函数是禁用uDMA通道的属性 GPIOF通道,连续模式转移|备用通道|高优先级|屏蔽该通道的外设请求信号
uDMAChannelAttributeDisable(UDMA_CHANNEL_ADC1,
UDMA_ATTR_USEBURST | UDMA_ATTR_ALTSELECT |
(UDMA_ATTR_HIGH_PRIORITY |
UDMA_ATTR_REQMASK));
// uDMAChannelAttributeEnable(UDMA_CHANNEL_ADC1,UDMA_ATTR_HIGH_PRIORITY);
//这个函数是设置uDMA转移的控制参数。 GPIOF通道|主控制,数据宽度32位|源地址增量0位|目的地址增量32位|仲裁数目8个数据单元
uDMAChannelControlSet(UDMA_CHANNEL_ADC1 | UDMA_PRI_SELECT,
UDMA_SIZE_8| UDMA_SRC_INC_NONE| UDMA_DST_INC_8 |UDMA_ARB_4);

//这个函数是配置uDMA转移参数。 GPIOF通道|主控制,基本传输模式,源地址,目的地址,传输数据项的数量
uDMAChannelTransferSet(UDMA_CHANNEL_ADC1 | UDMA_PRI_SELECT,
UDMA_MODE_BASIC , (void *)(GPIO_PORTB_BASE+GPIO_O_DATA), DST8_BUFF[0], sizeof(DST8_BUFF[0])); //
uDMAChannelEnable(UDMA_CHANNEL_ADC1); //使能uDMA通道 开始数据传输

希望大家帮帮我,1820808363

xyz549040622:

这个没有搞过。你的意思是当F3口产生中断的时候,触发ADC DMA的传输么?

yujie liang:

回复 xyz549040622:

就是以F3作为中断源,当产生上升沿的时候就触发dma从io口读数据到内存里。

xyz549040622:

回复 yujie liang:

理论上这个是可以实现了。

1.你需要实现F3的中断

2.你需要实现dma的停止和关闭,是不是你开启了一次,没有关闭,然后就一直开的了。

yujie liang:

回复 xyz549040622:

我是这样想的,首先配置好dma,每一次中断到来的时候就使能dma从io口读指定数目的数据,所以说它应该是每次读完之后就关闭了,必须等到下一次使能它

xyz549040622:

回复 yujie liang:

它应该是每次读完之后就关闭了。这句我觉得判断有误,你可以单步跟踪,看看实际关闭了没有。

yujie liang:

回复 xyz549040622:

我看过一个定时器触发dma的,和这个差不多,可是我的还是不对,我是觉得可能有一些东西我自己不清楚,所以可能配置错了或者漏了

赞(0)
未经允许不得转载:TI中文支持网 » 设置GPIO口作为dma的触发源
分享到: 更多 (0)