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条回答
yyx112358
2019-10-15 22:54
624467649 发表于 2017-1-17 12:24
SD卡改DMA改失败了。原子哥的例程,我只改这一句话,就死了。

你说“死了”是什么?没有反应?HARDFAULT?你不可能只改一句的,至少初始化和读写的地方都要改
还有,fprintf写出来的是文本文件,你写成二进制的话可以用fwrite、fread配合联合体来读。电脑上读取当然不能用记事本,可以自己写个小程序或者用winhex,也可以用单片机读然后串口发回来

一周热门 更多>