Stellaris库函数的uDMA通讯分析 帖子发布地址:http://forum.eepw.com.cn/thread/220441/1 摘要:本文主要介绍了如何使用Stellaris库函数的uDMA方式来进行通讯。文章分析了Stellaris库函数说明文档中的示例程序。 关键字:uDMA,Stellaris 示例程序
程序必须预先分配“通道控制表channel control table”,是基于所有模型与通道的表。注意:此表需要1024字节对齐。
unsigned char ucDMAControlTable[1024];
发送与接收缓冲区。unsigned char ucSourceBuffer[256];
unsigned char ucDestBuffer[256];
使能DMA功能,注意:在首先调用此函数打开DMA功能,之后才能配置与使用。 uDMAEnable(); 配置通道控制表channel control table,在应用DMA时,首先要调用此函数并配置。 uDMAControlBaseSet(&ucDMAControlTable[0]); 清除所有已配置的属性,防止之前被有意或无意的配置。原文档为uDMAChannelAttributeDisable(UDMA_CHANNEL_SW, UDMA_CONFIG_ALL);
uDMAChannelAttributeDisable(UDMA_CHANNEL_SW, UDMA_ATTR_ALL);
配置DMA通道控制结构,使用通道UDMA_CHANNEL_SW “或”UDMA_PRI_SELECT(主功能);使用8位数据大小,发送地址(源地址)按8位增加,接收地址(目标地址)按8位增加,总线使用带宽8位。uDMAChannelControlSet(UDMA_CHANNEL_SW | UDMA_PRI_SELECT,
UDMA_SIZE_8 | UDMA_SRC_INC_8 |
UDMA_DST_INC_8 | UDMA_ARB_8);
设置DMA通道的发送参数。自动模式,并设置发送与接收起始地址,与发送数据的长度。uDMAChannelTransferSet(UDMA_CHANNEL_SW | UDMA_PRI_SELECT,
UDMA_MODE_AUTO, ucSourceBuffer, ucDestBuffer,
sizeof(ucDestBuffer)); 使能DMA通讯。 uDMAChannelEnable(UDMA_CHANNEL_SW); 启动DMA的UDMA_CHANNEL_SW通道。 uDMAChannelRequest(UDMA_CHANNEL_SW); 移植实例 (未完待续)