5809|15

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

ADC的一个想法,大家看能否实现。 [复制链接]

已知条件:
1、我用的是stm32f103vct6 的内部ADC ,外接了一片SPI FLASH M25P64, 做数据存储;
2、我的目的是做持续的ADC转换并保存,ADC的转换频率为2K;
3、M25P64的页编程时间为1.4ms;页大小为256
4、我打算先把ADC的转换数据放到片内的内存里,到了256时在DMA传到FLASH中
求:
1、是否能通过DMA传输,完成不间断的数据采集呢?
2、如果能,大家给我出出主意,如果不能大家说说理由。

致谢:对所有回帖、不回贴的网友表示感谢。
此帖出自stm32/stm8论坛

最新回复

                                 谢谢 ,我试验下。  详情 回复 发表于 2010-7-4 11:55
点赞 关注
 

回复
举报

56

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 感觉不太显示,我没做过,值说考虑,把数据从adc存到RAM,没有任何问题,2k采样不算高,从ram到flash只能在CPU的干预下才能完成存储。
此帖出自stm32/stm8论坛
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 


不是偶DMA么?
ram到 flash 不行?

还有别的方法么??
把adc的值连续传到flash中??? 我主要担心的是 把adc的结果写到flash时,占用太多的时间,影响了adc正常采样
此帖出自stm32/stm8论坛
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 似乎不太现实
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 不过可以尝试一下
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 SPI Flash 是命令操作的,按页写。肯定要使用CPU管理。这要实现只能用缓冲形式。而且得保证采样速度不能高于Flash的编程速度。
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

7
 
那能否用stm32的内部资源做缓冲呢,因为我的板子没做这块。
谢谢。在下不才,还请多多指教。
一直以为有了DMA就可以不用CPU参与(或很少参与)SPI FLASH的命令操作呢。。。。
悲剧了!!!
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

8
 
这种传感器采集送大容量存储的模式是很常用的,不间断采集是必须的要求,一般这种东西的做法都是通过设置中断优先级来完成的,也就是ADC采样享有不可中断的高优先级,其它函数的优先级要低且可以被中断。
具体做法就是按相应的时间间隔采样,保存到RAM中,缓冲的大小视你的资源而定,采到满一个缓冲后启动写FLASH的程序保存数据。缓冲至少要设置两个交换页,或者用环形队列的方式工作(以最小写入长度为一个单位),以减小每次写FLASH的时间。

DMA是由DMA控制器代替CPU操作内存方式工作的,是通过数据总线完成的。你使用SPI口的FLASH是肯定用不了DMA的,换成NOR FLASH也许可以,但是没用过你的控制器不知道是否支持。
此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 SPI 使用DMA模式我已经试过了,行得通的。就是将每页要写的数据放在一个缓冲区,然后由MDA负责将数据搬移到SPI_DR,这样做可以减少SPI中断发生的次数。至少不比每发送一个字节中断一次。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 既要用SPI传送,又要采用DMA模式?
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 恩,DMA只负责将要发送的数据搬移到SPI_DR,然后由SPI控制SPI传送。
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 9楼说的正确。
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

13
 
一知半解啊,是时候手做做了。
hgjinwei  能否共享一下你的代码??

spi通讯 需要2个步骤:1、将数据放到 SPI_DR 2.由SPI控制器 发送???从上面看spi 写flash 是必须用cpu了。不知道还能剩多少时间来控制ADC 并保证不间断采集。
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

14
 
简单:
1,ADC用DMA+循环缓冲,此循环缓冲是由2个乒乓缓冲组成,ADC的DMA设置半满中断和满中断;
2,ADC DMA中断后,SPI FLASH写
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

15
 
                                 SPI也采用DMA传输,下一个写之前需要查询上次写是否READY。要保证写入时间小于ADC DMA中断间隔,如果写入时间太长,可以采用ADC数据存满一个PAGE之后再写入。
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

16
 
                                 谢谢 ,我试验下。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表