TI中文支持网
TI专业的中文技术问题搜集分享网站

EK-TM4C129gxL使用udma读取ADC时无法忽略数据个数?

程序如下

static uint8_t pui8ControlTable[1024] __attribute__ ((aligned(1024)));
static uint16_t ADC_TEMPERATURE_BUF[1];

uDMAEnable();
uDMAControlBaseSet(pui8ControlTable);
uDMAChannelAttributeDisable(14, UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST | UDMA_ATTR_HIGH_PRIORITY | UDMA_ATTR_REQMASK);
ROM_uDMAChannelControlSet(14 | UDMA_PRI_SELECT, UDMA_SIZE_16 | UDMA_SRC_INC_NONE | UDMA_DST_INC_16 | UDMA_ARB_1024 | UDMA_NEXT_USEBURST);
uDMAChannelTransferSet(14 | UDMA_PRI_SELECT, UDMA_MODE_BASIC, (void *) (0x40038000 + 0x048), (void*) &ADC_TEMPERATURE_BUF, 1);
uDMAChannelEnable(14);
ADCSequenceEnable(ADC0_BASE,0);

 

我希望dma能自发的将温度的数据送入ADC_TEMPERATURE_BUF中,这样在任何时刻程序读取ADC_TEMPERATURE_BUF得到的总是最近的值,但是DMA总是在传完了1个数据之后就不再继续传了,我在手册中找到了下面一段话:

BASIC mode can be programmed to ignore when XFERSIZE reaches 0x000 and continue copying
on request until the channel is stopped manually. If the NXTUSEBURST bit in the uDMA Channel
Control Word (DMACHCTL) register is set while in BASIC mode and the XFERSIZE reaches 0x000
and is not written back, transfers continue until the request is deasserted by the peripheral

按照手册中的意思,只要NXTUSEBURST被置位,XFERSIZE 就会被忽略,但是我已经将NXTUSEBURST位置位了呀,是还有什么其他要注意的问题吗?

Jacky Xu:

去参考下我们的DMA例程

赞(0)
未经允许不得转载:TI中文支持网 » EK-TM4C129gxL使用udma读取ADC时无法忽略数据个数?
分享到: 更多 (0)