完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用硬件平台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个数据,并且保证我想要的采样率? 谢谢! |
|
相关推荐
3 个讨论
|
|
楼主只调用一次ADCProcessorTrigger(ADC0_BASE, 0) 函数只能触发一次采样序列0的采集。建议楼主使用定时器触发ADC,而不要使用软件触发,这样就可以自动的连续触发采样序列的采样了。
而uDMA的arbitration size设置成8,,也能够自动完成采样数据的传输。这样当ADC采样序列0完成后会触发一次uDMA传输,将8个items的数据通过uDMA传到目的地址。 但是1024个数据比较多,ADC没有这么长的FIFO,所以最多是8个数据采集到了再触发一次uDMA传输。建议楼主通过多次uDMA传输来达到1024个数据的数量。 至于采样率,楼主在代码中使用的ADCHardwareOversampleConfigure(ADC0_BASE,64);是过采样平均的功能,可以认为是对采样率的分频,至于语句ADCSoftwareOversampleConfigure(ADC0_BASE,0,8);是软件过采样,需要调用相应的API函数获得采样值。所以建议楼主使用硬件过采样,然后设置定时器触发的时间间隔来达到想要的采样率。 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
1897 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3647 浏览 4 评论
5031 浏览 0 评论
请问如何用DM368对RGB格式的图片数据进行编码生成JPEG格式图片?
1734 浏览 1 评论
9372 浏览 8 评论
CC3100BOOST使用CC3200lunchXL进行烧录
669浏览 2评论
714浏览 1评论
TMS320F28034: 利用C2prog通过SCI给TMS320F28034烧录程序,出现错误提示:Bootloading... failed (invalid echo)!
675浏览 1评论
求DLPC350 Programmer’s Guide User's Guide 中文版说明书
1197浏览 1评论
1771浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 10:09 , Processed in 0.717228 second(s), Total 71, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号