打印

关于 LM3S9000系列 DMA的分散聚集模式的操作

[复制链接]
1549|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tothen|  楼主 | 2011-1-24 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
lm, DMA, se, AC, mac
如下是我的操作函数,没起作用,忘大侠指点一二,QQ:1104997876
//*****************************************************************************
//void Test_SCATTER_DMA(void)
//*****************************************************************************
void Test_SCATTER_DMA(void)
{
u16 DIS[384],i,j,data[2];
tDMAControlTable MyTaskList[3];

SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
    uDMAEnable();
    uDMAControlBaseSet(ucDMAControlTable);
    uDMAChannelSelectSecondary(UDMA_DEF_TMR1B_SEC_EPI0TX);


  
for(i=0;i<384;i++)
{
  if(i<128)
  {
   data[0]= 0xaaaa;
   data[1]= 0x5555;
  }
  if(i>128)
  {
   data[0]= 0xffff;
   data[1]= 0xffff;
  }
  if(i>256)
  {
   data[0]= 0x5555;
   data[1]= 0xaaaa;
  }
  if(i%2==0) DIS[i]=data[0];
  else       DIS[i]=data[1];
}

Get_DMAControTable(&MyTaskList[0],4,UDMA_SIZE_16,UDMA_SRC_INC_16,&DIS[0],UDMA_DST_INC_NONE,
       (void*)0xA0000000,UDMA_ARB_8,UDMA_MODE_MEM_SCATTER_GATHER);
Get_DMAControTable(&MyTaskList[1],8,UDMA_SIZE_16,UDMA_SRC_INC_16,&DIS[128],UDMA_DST_INC_NONE,
       (void*)0xA0000000,UDMA_ARB_8,UDMA_MODE_MEM_SCATTER_GATHER);

Get_DMAControTable(&MyTaskList[2],12,UDMA_SIZE_16,UDMA_SRC_INC_16,&DIS[256],UDMA_DST_INC_NONE,
       (void*)0xA0000000,UDMA_ARB_8,UDMA_MODE_MEM_SCATTER_GATHER);  
SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
    uDMAEnable();
    uDMAControlBaseSet(ucDMAControlTable);
    uDMAChannelSelectSecondary(UDMA_DEF_TMR1B_SEC_EPI0TX);
    uDMAChannelAttributeDisable(UDMA_SEC_CHANNEL_EPI0TX,
                                UDMA_ATTR_HIGH_PRIORITY |
        UDMA_ATTR_ALTSELECT     |
                                UDMA_ATTR_REQMASK);
    /*
uDMAChannelControlSet(UDMA_SEC_CHANNEL_EPI0TX ,
                          UDMA_PRI_SELECT | UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_8 |
                          UDMA_ARB_8);
  */
    uDMAChannelControlSet(UDMA_SEC_CHANNEL_EPI0TX ,
                          UDMA_ALT_SELECT | UDMA_SIZE_16 | UDMA_SRC_INC_16 | UDMA_DST_INC_NONE |
                          UDMA_ARB_8);

while(1)
{
   uDMAChannelScatterGatherSet(UDMA_SEC_CHANNEL_EPI0TX,3,(void*)&MyTaskList,0);
  uDMAChannelTransferSet(UDMA_SEC_CHANNEL_EPI0TX |            
            UDMA_PRI_SELECT ,                   //  主结构
                        UDMA_MODE_MEM_SCATTER_GATHER ,            
                        (void*)&MyTaskList[0] ,            //  源地址
                        (void*)&ucDMAControlTable[UDMA_SEC_CHANNEL_EPI0TX*0x10+0x200] ,//  目的地址
                         0x30);  
  uDMAChannelEnable(UDMA_SEC_CHANNEL_EPI0TX);
  while(uDMAChannelModeGet(UDMA_SEC_CHANNEL_EPI0TX)!=UDMA_MODE_STOP)
  {  
   WDR();
  }
  
}   
}

相关帖子

沙发
米其林r| | 2011-1-25 12:56 | 只看该作者
是运行到哪一步么有起作用啊?

使用特权

评论回复
板凳
tothen|  楼主 | 2011-1-27 21:24 | 只看该作者
目前已经可以跑三个不连续的内存任务,但任务数不能受控!

使用特权

评论回复
地板
金鱼木鱼| | 2011-1-31 22:27 | 只看该作者
DMA所用的模式是什么模式了

使用特权

评论回复
5
3B1105| | 2011-1-31 22:58 | 只看该作者
分散聚集模式是什么意思?

使用特权

评论回复
6
huzixian| | 2011-2-8 22:53 | 只看该作者
多看看数据手册吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:LED控制系统软硬件功能定制开发,LED通用控制系统专卖,多路自动定时灌溉控制器专卖,工业控制器定制开发! TEL:13625903627 QQ:1104997876

0

主题

46

帖子

1

粉丝