6通道ADC+SD卡,2Khz存储不过来

2019-10-15 06:32发布

本帖最后由 624467649 于 2017-1-16 11:04 编辑

理想状态是6通道ADC+DMA(6个字节),采样频率2khz,保存到SD卡txt里,格式数据为10:40:39  4095 2315 1235 1236 1236 2365我的程序是主循环是3个按键(创建新txt,开始存储,暂停存储)。定时器500us中断:sprintf-DMA数据,然后存储到txt里,1秒改变LED(实际7,8秒才变一次)。
ADC是6通道循环规则采样,采样周期最大239.5周期,所以完全够2khz采样,所以就不定时开启采样,直接定时器中断来用DMA数据就好。(假2khz采样)
可是实际保存的数据算起来1s大概170组数据。按键完全失效。感觉问题就是还没存好txt数据,下一次中断又来了。
有什么解决办法吗。如果要DMA存多点,然后一起存的话,还是要多次sprintf,然后多次f_write(不知道怎么一次f_write),速度应该差不多。还有个小问题,我没有get_RTC数据,时间会自动变?
f1战舰版: FATFS实验 6ADC_1 RTC 定时器_存储不过来.zip (9.65 MB, 下载次数: 230) 2017-1-16 11:02 上传 点击文件名下载附件


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
624467649
1楼-- · 2019-10-15 08:58
顶下~SDHC持续传输速度4MB/s
624467649
2楼-- · 2019-10-15 09:43
yklstudent 发表于 2017-1-17 08:51
想要快就别用sprintf了

那用什么?我现在用f_printf。后缀很长很长。不知道还有什么其他办法。求指教
624467649
3楼-- · 2019-10-15 09:59
有什么好办法吗?
QQ截图20170117110900.png
624467649
4楼-- · 2019-10-15 13:08
 精彩回答 2  元偷偷看……
yyx112358
5楼-- · 2019-10-15 13:40
你先把SD卡读写驱动用DMA改写一下,不要一直等待传输完成。还有就是把FATFS的缓冲区改大一点,比如4096B
624467649
6楼-- · 2019-10-15 17:24
yyx112358 发表于 2017-1-17 11:22
你先把SD卡读写驱动用DMA改写一下,不要一直等待传输完成。还有就是把FATFS的缓冲区改大一点,比如4096B

QQ截图20170117122246.png SD卡改DMA改失败了。原子哥的例程,我只改这一句话,就死了。

一周热门 更多>