请选择 进入手机版 | 继续访问电脑版
搜索
热搜: XMC1000 XMC4000
查看: 432|回复: 0

验证TC277DMA的功能,将demmobuff中的数据搬运到vadcResultBuffer中

[复制链接]

1

主题

2

帖子

37

积分

新手上路

Rank: 1

积分
37
发表于 2018-8-27 16:58:35 | 显示全部楼层 |阅读模式
下面为DMA配置:
        IfxDma_Dma_Config DmaConfig;
        IfxDma_Dma_initModuleConfig(&DmaConfig,&MODULE_DMA);
        IfxDma_Dma_initModule(&Dma,&DmaConfig);

        IfxDma_Dma_ChannelConfig DMAChannelConfig;
        IfxDma_Dma_initChannelConfig(&DMAChannelConfig,&Dma);

        //选择要使用的DMA通道
        DMAChannelConfig.channelId = IfxDma_ChannelId_1; //共64个通道
        DMAChannelConfig.hardwareRequestEnabled = FALSE;  //注意是硬件触发模式
        DMAChannelConfig.sourceCircularBufferEnabled =TRUE;
        //中断配置
        DMAChannelConfig.channelInterruptEnabled = FALSE; //所有bit数据传送完之后DMA发出服务请求
        DMAChannelConfig.channelInterruptPriority = DMA_CHANNEL1_ISR_PRIO;//优先级在Ifx_IntPrioDef.h中定义
        DMAChannelConfig.channelInterruptTypeOfService = IfxSrc_Tos_cpu0;//这个地方dma通道的服务者还是cpu

        //源地址与目标地址
        DMAChannelConfig.sourceAddress          = (uint32)&demmobuff[0];
        DMAChannelConfig.sourceCircularBufferEnabled    = TRUE;
        DMAChannelConfig.sourceAddressCircularRange           = IfxDma_ChannelIncrementCircular_2;        //brief circular buffer size is 2 byte

        DMAChannelConfig.destinationAddress                          = (uint32)&(vadcResultBuffer[0]);
        DMAChannelConfig.destinationAddressIncrementStep= IfxDma_ChannelIncrementStep_2;            //每次写数据时地址增量为2个byte

        //move size, transfer count and request/operation mode
        DMAChannelConfig.moveSize          = IfxDma_ChannelMoveSize_16bit;//1 DMA move is 16 bit wide
        DMAChannelConfig.transferCount = 8;//依次transfer传输8个
        DMAChannelConfig.requestMode   = IfxDma_ChannelRequestMode_oneTransferPerRequest;
        DMAChannelConfig.operationMode = IfxDma_ChannelOperationMode_continuous;                                //硬件请求使能保持set在transaction

        IfxDma_Dma_initChannel(&DmaChannel,&DMAChannelConfig);
//        IfxCpu_Irq_installInterruptHandler(&dmaCh1ISR, DMA_CHANNEL1_ISR_PRIO);//这是软件中断
//        IfxCpu_enableInterrupts();


我把中断关了,因为感觉用不上,还请大佬帮忙看看配置哪儿有问题?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|英飞凌技术社区

GMT+8, 2018-11-13 12:19 , Processed in 0.105435 second(s), 13 queries , APC On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表