This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

GPIO触发udma到底支持的是单次请求还是猝发请求?

如图,第一张里的gpio外设的type都是B,也就是猝发请求。而第二张图片里gpio请求支持里猝发请求却是NONE,这是怎么回事?

图一:

图二:

  • 还真是,我下载了最新的版本也是这样,你可以实际配置下,看看到底哪个寄存器会置位,以此来确定到底是哪个,或者直接给TI的工程师发邮件反应

  • 谢谢回复,我配置了gpio c4作为udma触发管脚,可是不管怎么翻转电平都无法触发udma传输,你能帮我看一下哪里有问题吗?

       SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);//使能外设时钟GPIOB
        SysCtlGPIOAHBEnable(SYSCTL_PERIPH_GPIOC);
        GPIOPadConfigSet(GPIO_PORTC_AHB_BASE, GPIO_PIN_4, GPIO_STRENGTH_12MA,GPIO_PIN_TYPE_STD_WPU);
        GPIODirModeSet(GPIO_PORTC_AHB_BASE,GPIO_PIN_4,GPIO_DIR_MODE_IN);
        GPIOIntTypeSet(GPIO_PORTC_AHB_BASE, GPIO_PIN_4, GPIO_FALLING_EDGE);//下降沿触发中断
        GPIOIntEnable(GPIO_PORTC_AHB_BASE, GPIO_PIN_4);
        GPIODMATriggerEnable(GPIO_PORTC_AHB_BASE,GPIO_PIN_4);//gpio触发udma使能
        IntEnable(INT_GPIOC);
        IntMasterEnable();
        ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
        ROM_uDMAEnable();
        ROM_uDMAControlBaseSet(ui8ControlTable);
        ROM_IntEnable(INT_UDMA);
        ROM_uDMAChannelAssign(UDMA_CH6_GPIOC);//配置通道6编码3
        ROM_uDMAChannelAttributeDisable(UDMA_CHANNEL_ETH0RX,
                                        UDMA_ATTR_USEBURST | UDMA_ATTR_ALTSELECT |
                                        (UDMA_ATTR_HIGH_PRIORITY |
                                        UDMA_ATTR_REQMASK));
        ROM_uDMAChannelAttributeEnable(UDMA_CHANNEL_ETH0RX, UDMA_ATTR_HIGH_PRIORITY);
        ROM_uDMAChannelControlSet(UDMA_CHANNEL_ETH0RX | UDMA_PRI_SELECT,
                                  UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_8 |
                                  UDMA_ARB_1);
        ROM_uDMAChannelTransferSet(UDMA_CHANNEL_ETH0RX | UDMA_PRI_SELECT,
                       UDMA_MODE_BASIC, (void *)imgbuff, (void *)ov7725_eagle_img_buff,
                                      CAMERA_DMA_NUM);

       ROM_uDMAChannelEnable(UDMA_CHANNEL_ETH0RX);    

  • 我在ccs的debug里面把DMAUSEBURSTSET寄存器的通道6置1,运行后又恢复为0,这是不是说明gpio是不支持猝发请求的呢?

  • 1.你设置为单次请求是否也出现这种情况呢

    2.你看看寄存器介绍,是否触发后会自动复位为0呢

    3.排除上面两种才可以确认是否支持猝发请求

  • 好像没有单独的设置啊

  • 我现在也碰到这个问题,请问有结果么?

  • 目前我正在调试ov7620,发现无论如何都无法触发,并且不知道如何使其地址自动递增,请问有解决方法吗?

  • 请问你的问题解决了吗?我现在也在用GPIO触发DMA,我也遇到了同样的问题,

  • 我也在调试摄像头,现在我的程序行中断,场中断,都正常,而且我DMA触发源中断函数也正常,但是就是数据无法传输给目的地址

    ROM_uDMAChannelControlSet(UDMA_CHANNEL_SW | UDMA_PRI_SELECT,UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_8 |UDMA_ARB_1024);

    这个函数就可以实现地址自动递增,红色的代码是源地址增量(8位),黄色代码是目的地址增量(8位),这个参数的设置是与你的源地址,目的地址的数据类型有关,如果你定义的目的地址是一个32位的,则你的目的地址增量就是32位。

    我也是最近刚学的,希望能帮到你

  • 请问你的问题解决了吗?希望一起学习

    qq  1228974075