3306|0

194

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

LM3S 的DMA,设置传输数目后,传输的实际数目不对? [复制链接]

请问下,我现在正在使用LM3S9B92,在SSI0的发送通道使用DMA,目前发现一个问题,当设置仲裁为1的时候,实际传输的数据总会比设置传输的少1个字节,而如果设置仲裁为其他值,则少的更离谱,比如设置为2,则少4个字节,设置为4,则少7个。我的初始化代码如下:
 

void uDMAInit()
{
  SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);              //  使能DMA时钟
  uDMAEnable();                                            //  使能DMA模块
  uDMAControlBaseSet(ucDMAControlTable);               //  对DMA的控制表进行设置
  uDMAChannelAttributeDisable(UDMA_CHANNEL_SSI0TX ,        //  清除通道属性
                              UDMA_ATTR_USEBURST |
                              UDMA_ATTR_ALTSELECT |
                              UDMA_ATTR_REQMASK);
  uDMAChannelAttributeEnable(UDMA_CHANNEL_SSI0TX ,
                            UDMA_ATTR_HIGH_PRIORITY);     //  通道为高优先级
  uDMAChannelControlSet(UDMA_CHANNEL_SSI0TX |              //  通道为SSI0TX
                        UDMA_PRI_SELECT,                   //  数据结构
                        UDMA_SIZE_8 |                      //  数据长度8位
                        UDMA_SRC_INC_8 |                   //  源地址累加
                        UDMA_DST_INC_NONE |                //  目的地址不累加
                        UDMA_ARB_1);                       //  仲裁大小为8
  uDMAChannelTransferSet(UDMA_CHANNEL_SSI0TX |             //  通道为SSI0TX
                         UDMA_PRI_SELECT ,                 //  数据结构
                         UDMA_MODE_BASIC ,                 //  基本DMA模式
                         (void*)(scrollBuffer1),                 //  源地址
                         (void*)0x40008008 ,               //  目的地址为SSI0的数据寄存器
                         DPI_SIZE);                               //  一次传输为8个数据
  uDMAChannelEnable(UDMA_CHANNEL_SSI0TX);                 //  使能UDMA_CHANNEL_SSI0TX通道
  uDMAChannelIsEnabled(UDMA_CHANNEL_SSI0TX);
  //IntEnable(INT_UDMA);                                    //  使能uDMA软件中断
  uDMAChannelRequest(UDMA_CHANNEL_SSI0TX);               //  软件请求一次DMA传输
}
 
调用的地方如下:
 if(uDMAChannelIsEnabled(UDMA_CHANNEL_SSI0TX));
 else
 {
  uDMAChannelTransferSet(UDMA_CHANNEL_SSI0TX |           //  重新设置DMA传输的参数
                       UDMA_PRI_SELECT ,
                       UDMA_MODE_BASIC ,
                      (void*)(&scrollBuffer4[g_ulCounter]),
                      (void*)0x40008008 ,
                       32);
  uDMAChannelEnable(UDMA_CHANNEL_SSI0TX);
  uDMAChannelRequest(UDMA_CHANNEL_SSI0TX); 
 }
 
上述调用的地方是设置的传输32个字节,而我在实际使用的时候,用示波器测量的结果只有31个波形,不知道是我程序的问题还是什么,请帮忙分析一下,谢谢!
 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表