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

如何通过GPIO开启一次DMA传输

目前在写一个摄像头驱动,如何通过一个gpio来引起一次DMA的传输来获取另外GPIO的数据

Susan Yang:

您可以看一下

tiva.txwilley.com/group__gpio__api.html

Vacabun:

回复 Susan Yang:

使用了GPIODMATriggerEnable以后还有怎么配置呢

Vacabun:

回复 Susan Yang:

我是这样设置的 但是没有成功

void initudma()
{SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);HWREG(GPIO_PORTA_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;HWREG(GPIO_PORTA_BASE + GPIO_O_CR) |= 0x01;HWREG(GPIO_PORTA_BASE + GPIO_O_LOCK) = 0;GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_6);GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_6,GPIO_FALLING_EDGE);GPIOPadConfigSet(GPIO_PORTA_BASE,GPIO_PIN_6,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);GPIODMATriggerEnable(GPIO_PORTA_BASE,GPIO_PIN_6); uDMAIntRegister(UDMA_CHANNEL_USBEP3RX,PCLKIntHandler);SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);uDMAChannelAssign(UDMA_CH4_GPIOA);uDMAEnable();uDMAControlBaseSet(&pui8ControlTable[0]);uDMAChannelAttributeDisable(UDMA_CHANNEL_USBEP3RX ,UDMA_ATTR_ALL);uDMAChannelControlSet(UDMA_CHANNEL_USBEP3RX| UDMA_PRI_SELECT, UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_NONE );uDMAChannelTransferSet(UDMA_CHANNEL_USBEP3RX| UDMA_PRI_SELECT,UDMA_MODE_AUTO, (void *)(GPIO_PORTB_BASE+GPIO_O_DATA+(0xff<<2)), &g_ui32DstBuf,sizeof(g_ui32DstBuf));uDMAChannelEnable(UDMA_CHANNEL_USBEP3RX);
}
void PCLKIntHandler(void)
{uDMAIntClear(UDMA_CHANNEL_USBEP3RX);UARTCharPut(UART0_BASE,0x33);
}

Vacabun:

回复 Susan Yang:

添加了这个成功了
IntEnable(INT_UDMA);
谢谢

Susan Yang:

回复 Vacabun:

很高兴能帮助您

赞(0)
未经允许不得转载:TI中文支持网 » 如何通过GPIO开启一次DMA传输
分享到: 更多 (0)