LM3S9B96 ADC+uDMA 采样率与传输数量问题

2019-03-24 12:50发布

使用硬件平台DK_LM3S9B96,软件平台IAR 6.40
我想要以200~300Hz的采样率对PE5口输入的模拟信号进行采样:
//Set sample rate
SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS);
ADCReferenceSet(ADC0_BASE,ADC_REF_INT);
ADCHardwareOversampleConfigure(ADC0_BASE,64);
ADCSoftwareOversampleConfigure(ADC0_BASE,0,8);
这时得到的采样率为125K/64/8≈244Hz?对不对?
采用处理器触发,并进行如下配置:
MAP_uDMAChannelControlSet(UDMA_CHANNEL_ADC0 | UDMA_PRI_SELECT,
                                                             UDMA_SIZE_32 | UDMA_SRC_INC_NONE |
                                                                UDMA_DST_INC_32 | UDMA_ARB_1024);
每触发一次传输1024个数据.
但是实验显示:
调用一次 ADCProcessorTrigger(ADC0_BASE, 0) 函数,传输1024个数据,但 data[1] 到 data[1023] 都是相同的.

原因是不是uDMA 通道读取 ADC_O_SSFIFO0过于频繁,1024个数据并未采样结束?导致相同数据进行了多次传输?

如果将UDMA_ARB_1024改成UDMA_ARB_1,并以一定时间间隔调用
  MAP_ADCProcessorTrigger(ADC0_BASE, 0)函数,则可以得到正确的采样结果,但这样uDMA功能完全得不到发挥啊?
那么我应该怎么做才能每触发一次就能传输1024个数据,并且保证我想要的采样率?
谢谢!
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
Study_Stellaris
1楼-- · 2019-03-24 20:56
要设置采样标志,当采样完成才启动 DMA 吧。

一周热门 更多>

相关问题

    相关文章