OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » Stellaris库函数的uDMA通讯分析(附源代码)

共6条 1/1 1 跳转至

Stellaris库函数的uDMA通讯分析(附源代码)

专家
2012-09-05 11:59:50    评分

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); 移植实例 (未完待续)



关键词: Stellaris     函数     通讯     分析     源代码    

专家
2012-09-05 15:37:20    评分
2楼
还以为这个dma在lm3s8962上支持呢。
结果调试时,一启动uDMA就失败,这才意识到LM3S8962居然不支持DMA通讯。一个下午几乎全失败了。
还好,出了一篇文章……

高工
2012-10-10 00:00:17    评分
3楼
呵呵,还是有收获的嘛~!

高工
2012-11-15 00:41:50    评分
4楼
明天我在811上试试,楼主辛苦啦

专家
2012-11-15 10:02:03    评分
5楼
甭尝试了。 LM3S811 不支持 DMA通讯的

高工
2012-11-15 20:35:11    评分
6楼
那好吧,转战STM32

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]