单片机处理ADC采集的数据,如果采样率是200KSPS的,单片机要如何做才能处理的这么快呢?

最近在做一个项目,用到的ADC的型号是ADS7817,我看到Datasheet上写的最高200KHz的采样率,外部时钟DCLK要达到3.2MHz,我的单片机晶振用的是11.0592MHz,处理一条语句要1uS多一点,我看到时序图上如果DCLK有16个脉冲,那么在Dout上就会有一个数据输出,这样如果是200KHz的采样率,岂不是5uS就可以采集一个数据,单片机还要去做别的事情啊,比如扫按键,把采集到的数据转换,滤波求平均,送显示等,这些都要占用大量的时间的,单片机哪里还有可能真的1S钟处理200K个数据呢?还是说我的理解有误,请高手帮忙分析下,谢谢!

有些单片机有SPI外设。主程序里只需要发送和接收数据,不需要去处理具体的发送接收过程。这样可以为单片机节省一些指令周期。
话说,你那单片机还12个CLK一指令,如果要处理200KHz的数据,那确实太慢了。
建议提速单片机或降速AD。追问

这款AD不是SPI的,只要给其DCLK管脚有够16个脉冲,就会在Dout脚收到一个12位的数据,Datasheet上用的例子都是MCU,没有说要用DSP之类才可以!另,单片机发送脉冲和接收数据其实用时很短,关键是收到数据后距下次接收只有几uS,单片机没有时间去做别的事情,如果只接收不处理,就没有意义了!另提速mcu就算提速到24M,只是多了几uS时间去处理数据,还是差太多;降速AD达不到测量要求

追答

如果不能降速AD,那就得换MCU了。
正常情况下,是不允许AD数据丢失的,因此在你的系统里,AD数据的读取任务应该拥有较高的优先级。其它按键,显示之类的任务优先级低些。
简单点说,每次AD数据来了,就得先读出来。其它所有事情在两次AD数据之间的空隙完成。如果完成不了,换MCU。

追问

AD输出中间只有5uS的空隙,期间要把采集到的数据去排序,去比较看哪个是噪声污染的错误结果,要滤除的,再把好的结果求平均再输出到显示,也就是采集到的数据要作滤波处理的,中间的这5uS的间隙,不是说现在的MCU太慢,我至少要采集200个数据才能去处理,这个处理的时间要很长的,所以就算这5uS里MCU能执行100条语句都不够快!5uS也就能把采集到的数据送去特定的数组里这样!

追答

    用ARM处理,一般ARM都能运行72M或更高频率,带单周期乘法器等,也许能满足你的需求。

    换个数据处理思路,比如集到10个数就进行比较运算之类的。

    双单片机,一个专门采集,另一个负责运算及其它任务。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-12
C8051F系列就直接带有200K的AD转换器,都不要自己再安装其他的AD芯片了

单片机可以由AD采集器的中断信号分时处理数据,其他的事件去做其他的事情

C8051F330 工作在25MHz(6元)

C8051F410 工作在50Mhz都没问题(12元)

STM32F系列的是Arm,工作在72Mhz(19元)

都是不错的选择