ajfan 发表于 2013-7-11 12:55:34

大数量ADC结果数组存放在单片机哪里比较合适?

本帖最后由 ajfan 于 2013-7-11 12:58 编辑

请教有经验的同学,目前用C8051F320驱动ADS7871(48K,14BIT ADC)做数据采集及IO控制,用串口送命令及取数据,

准备 让ADC采集500次或更多数量后结果依次在单片机内做暂存,所有采集完成后1次性通过串口送出,尝试按标准变量存放在RAM区,但容量超出范围,如果将数组放在flash区是否可行?(每次采集前需要先全部清零数组,然后将ADC结果依次存入flash内数组)

因为目前暂还不是太熟悉单片机内部USB FIFO操作,所以目前不考虑用该FIFO做数据暂存,请问下是否还有比较好的方式或对单片机操作可以做类似大容量的数据暂存?



ajfan 发表于 2013-7-11 15:19:55

本帖最后由 ajfan 于 2013-7-11 15:24 编辑

是不是放flash 区域不太现实?flash区域理论上应该是只读或通过命令小量修改,且如果频繁的读取擦写对寿命也有问题?
难道需要考虑外部FIFO?

zhugean 发表于 2013-7-11 15:27:35

换MCU
外扩RAM

mbass51 发表于 2013-7-11 15:33:56

用STM32了

Excellence 发表于 2013-7-11 15:55:56

FLASH是只读的。

Excellence 发表于 2013-7-11 15:56:36

zhugean 发表于 2013-7-11 15:27 static/image/common/back.gif
换MCU
外扩RAM

+10086.


               

ajfan 发表于 2013-7-11 16:01:42

看datasheet好像有XRAM外部数据存储区,这个是否可以用来做数据暂存啊?

xianhuajun 发表于 2013-7-11 16:08:38

你要把数据传给哪位大侠啊,还是大瞎啊

ajfan 发表于 2013-7-11 16:17:08

本帖最后由 ajfan 于 2013-7-11 16:43 编辑

楼上见笑,这就是大侠与大瞎的差异啊
即使XRAM外部数据存储区能用,1024字节,按int格式来存放数据(14位ADC),也就能放500多组,本意是让这个存储区域尽可能大点,采集完数据1次性将数组上传到PC,对上位机来讲一次性中断,开销会小一点(不做成采集1次,上传1次的方式),看样子只能用USB FIFO(也只有500多组数据)或外扩RAM,FIFO了。

对了,外扩RAM,FIFO芯片大家有了解的么?哪种型号比较常用?谢谢。

lgg88 发表于 2013-7-11 21:51:53

干嘛要500次,100次或者少一点   采集完了就发送出去然后在接着采集。。。和你一次采集500次在弄出去   效率应该不会低太多。。

ajfan 发表于 2013-7-12 04:16:46

ADC采样率48KHZ,串口用9600,如果需要采集数量比较大的时候(如1000个数据),很容易出现串口在忙着送上一批数据,ADC在等待,出现采集空挡。

ajfan 发表于 2013-7-17 09:00:42

来顶一下,看看大侠们是否有做过类似的数据上传应用,怎么处理的。

wuha 发表于 2013-7-17 09:06:11

ajfan 发表于 2013-7-12 04:16 static/image/common/back.gif
ADC采样率48KHZ,串口用9600,如果需要采集数量比较大的时候(如1000个数据),很容易出现串口在忙着送上一 ...

串口传输和AD采集有冲突吗?这俩功能貌似都不占用CPU吧,仅在传输完一字节,或者AD采集完成,CPU去放入下一个字节,或者读取一下AD结果而已。

takashiki 发表于 2013-7-17 09:39:46

ajfan 发表于 2013-7-12 04:16 static/image/common/back.gif
ADC采样率48KHZ,串口用9600,如果需要采集数量比较大的时候(如1000个数据),很容易出现串口在忙着送上一 ...

ADC采样率那么高,串口速率那么低,无论你怎么暂存,都会出现串口在忙着送上一批数据,ADC在等待,出现采集空挡。而且暂存的越多,等待的时间越长。
解决办法就是提高串口速率,或降低采样率,或忍受采集空挡。
最简单的办法,同步采样发送,每采样一次足够发送2个字节。你的上位机是PC?那他自己就有FIFO,而且操作系统可以调节缓冲区大小,默认是2048Byte还是多少,比起你的区区500次采样来说那是绰绰有余了。
真不明白你所谓的上位机是什么,为什么需要频繁中断?

ajfan 发表于 2013-7-17 09:45:25

本帖最后由 ajfan 于 2013-7-17 09:47 编辑

adc采样率高,串口传输慢,担心来不急上传数据。
如需要连续采样1000个数据,如果采样一个传送一个,很有可能出现采样的1000个值是不连续的,因为串口传输时间长,导致ADC在等待。。。。。。

ajfan 发表于 2013-7-17 10:04:49

谢谢takashiki
上位机一般用labview编程,目前做的这个只是想学习NI的数采卡,他们的方案也是用C8051F320进行采样控制,但通过USB传输,因为相对传输数据快,不知道是否能做到采集,传输实时。
目前看如果用串口的话,好像是不能做到非常完美的实时,除非提高串口速度(但考虑到会增加485端口,所以也不可能无限制提速),否则肯定有采集空挡。

tragedy 发表于 2013-7-17 14:04:57

一般要对你采样的数据进行处理后再传给上位机吧。干嘛要实时显示
页: [1]
查看完整版本: 大数量ADC结果数组存放在单片机哪里比较合适?