搜索
bottom↓
回复: 23

【分享】基于LPC1788+FatFs+SD的数据采集

  [复制链接]

出0入0汤圆

发表于 2014-6-8 16:24:29 | 显示全部楼层 |阅读模式
本帖最后由 kongethan 于 2014-6-8 16:24 编辑

        项目需要,开始学习基于SD卡的数据采集,从接手到现在折腾了两个多月,原先基础不怎好,没有开发过SD card,更别提文件系统了,一切都是从零开始。学习的过程中参考了大量论坛大神的例子、经验,现在终于出了一些结果,于是把自己的历程总结一下,算是对过去几个月的总结,也给对SD+FatFs感兴趣的小伙伴们一些参考。其中用到各位大神的例程啥的就不一一列出出处了,还望各位大神海涵,另外总结中有不对的地方也请各位大神指正
        平台:LPC1788
        软件:Keil uVision4
总结:
        基于LPC1788+FatFs+SD的数据采集主要包括SPI接口、SD卡驱动、FatFs文件系统以及主芯片对采集到数据的处理,现在分步介绍
1、SPI接口
        SD卡提供SDIO及SPI两种接口,SPI接口由于操作相对简单。对SPI接口的操作包括硬件管脚设置,以及SPI读写函数的编写,直接参考LPC1788datasheet就好;
2、SD卡接口
        SD卡有详细的操作说明,基本上通读一下基本上就能明白,而且网上有很多现成的SD驱动,直接下载就好。这里想起论坛哪位大神的话,移植不是抄袭,移植的精髓是理解,修改,为我所用。因此建议先下载一份SD卡驱动,通读一下文件,肯定有很多地方不理解,尤其是操作SD卡的指令,不过不要紧,看完程序再看SD卡操作说明,看程序时的疑问便都能解决,而且理解会更深。
注:SD卡操作说明有V1和v2,对应程序看的时候一定要区分程序是按照哪个版本写的,我当时就是下了个2.0的程序拿着1.0的操作说明看,那叫一个郁闷啊,还直道自己英语水平有限,没有完全看懂……
        附件中给出了SD卡的操作说明
3、FatFs文件系统
        FatFs官网:http://elm-chan.org/fsw/ff/00index_e.html,直接需要的文件系统版本。其中官网页面上Resources--FatFs User Forum给出了好多的问题提问以及解答,遇到问题是可以去参考。Resources--FatFs module application note 给出了FatFs的介绍操作啥的,还是不错的。
        我主要参考的例程有:  http://www.amobbs.com/forum.php? ... amp;highlight=FatFs
                                        http://www.amobbs.com/forum.php? ... amp;highlight=FatFs
                                        http://www.amobbs.com/forum.php? ... amp;highlight=FatFs
                                        http://www.amobbs.com/forum.php? ... amp;highlight=FatFs
        FatFs文件系统刚开始接触时可能感觉云里雾里搞不清,都后来能使用时回头再看,会发觉其实并不是那么复杂,主要是对diskio.c文件的更改,其中最重要的是disk_initialize、disk_read、disk_write函数,disk_initialize实现初始化SD,disk_read、disk_write调用SD卡读写函数,如果移植出现了问题,首先要分析SD卡读写函数是否正确。个人建议是步步为营,先完成SPI+SD的编写,验证,再移植FatFs文件系统。附件中也给出了LPC1788+SD+FatFs的工程文档。
        移植完成文件系统,实现 初步功能后要做的就是优化,实现更高的读写速度以及降低误码率
        提高读写速度,主要是优化SD卡读写函数,以及FatFs函数每次写的数据量尽量大,每次写尽量在一个连续的簇内进行,连续写时定期使用f_sync,至于还有没有其他更好的办法,还得请教论坛各位大神了??
4、数据的采集与处理
        由于项目还没有完全完工,就先不贴代码了,只说一下思路。
        通过标志位区分是单通道采集还是多通道采集,数据的采集在中断中完成,写SD卡在主函数进行,由于采样率不是很高,因此没有使用DMA;
        每次采集自动建立一个新的文件。新文件是在上次文件结束时建立的,避免在采集过程中建立文件。如果接收到实验结束命令,则删除刚刚建立的空文件,否则将采集到的数据写入刚才建立的文件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-6-8 16:55:29 | 显示全部楼层
mark  mark  mark

出0入9汤圆

发表于 2014-6-9 07:24:00 来自手机 | 显示全部楼层
楼主不错啊。有空搞搞nandflash的文件系统。

出0入0汤圆

发表于 2014-6-9 08:52:12 | 显示全部楼层

出0入0汤圆

发表于 2014-6-9 10:46:47 | 显示全部楼层
很详细!

出0入0汤圆

 楼主| 发表于 2014-6-9 19:19:20 | 显示全部楼层
sokou 发表于 2014-6-9 07:24
楼主不错啊。有空搞搞nandflash的文件系统。

期待着你的大作

出0入0汤圆

 楼主| 发表于 2014-6-9 19:19:46 | 显示全部楼层

重在交流哈

出0入0汤圆

发表于 2014-6-11 16:43:47 | 显示全部楼层
有没有LPC1766的SD相关的例程?有的话能发我一份吗?823439775@qq.com

出0入0汤圆

 楼主| 发表于 2014-6-12 09:16:53 | 显示全部楼层
jasongwq 发表于 2014-6-11 16:43
有没有LPC1766的SD相关的例程?有的话能发我一份吗?

没有1766,但是FatFs官网上面有LPC176X的例程,见附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-6-12 10:56:11 | 显示全部楼层
kongethan 发表于 2014-6-12 09:16
没有1766,但是FatFs官网上面有LPC176X的例程,见附件

嗯  谢了  !LPC1788程序里的  disk_timerproc()函数  和  SD_ReadConfiguration()函数没用到吗     disk_timerproc()函数 中涉及Timer1和Timer2 是放在10ms的中断里吧   但发的程序里貌似找不到这个函数所使用的地方?

出0入0汤圆

发表于 2014-6-12 11:24:38 | 显示全部楼层
FATFS的作者有分享他在LPC4088上面的FATFS的移植,可以直接在1788上面跑。

出0入0汤圆

 楼主| 发表于 2014-6-12 11:27:56 | 显示全部楼层
nongxiaoming 发表于 2014-6-12 11:24
FATFS的作者有分享他在LPC4088上面的FATFS的移植,可以直接在1788上面跑。

出0入0汤圆

 楼主| 发表于 2014-6-12 11:31:20 | 显示全部楼层
nongxiaoming 发表于 2014-6-12 11:24
FATFS的作者有分享他在LPC4088上面的FATFS的移植,可以直接在1788上面跑。

请问你说的文件在哪里找,官网上没有看到啊,莫非是打开方式不对……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-6-12 11:32:56 | 显示全部楼层
jasongwq 发表于 2014-6-12 10:56
嗯  谢了  !LPC1788程序里的  disk_timerproc()函数  和  SD_ReadConfiguration()函数没用到吗     disk ...

我们这边的应用文件建立时间什么的是通过GPS过来的,因此没有用到该函数……

出0入0汤圆

发表于 2014-6-12 11:36:14 | 显示全部楼层
kongethan 发表于 2014-6-12 11:31
请问你说的文件在哪里找,官网上没有看到啊,莫非是打开方式不对……

在他的网盘里面,作者有分享一个微软的云网盘,里面有软件包,还有一些展示图片。

出0入0汤圆

发表于 2014-6-12 13:04:25 | 显示全部楼层
kongethan 发表于 2014-6-12 11:32
我们这边的应用文件建立时间什么的是通过GPS过来的,因此没有用到该函数…… ...

嗯  了解!

出0入0汤圆

 楼主| 发表于 2014-6-12 14:32:32 | 显示全部楼层
nongxiaoming 发表于 2014-6-12 11:36
在他的网盘里面,作者有分享一个微软的云网盘,里面有软件包,还有一些展示图片。 ...

方便给一下地址吗,谢谢

出0入0汤圆

发表于 2014-6-17 18:01:13 | 显示全部楼层
kongethan 发表于 2014-6-12 14:32
方便给一下地址吗,谢谢

好像是这个:https://onedrive.live.com/?cid=3 ... D1230F8A673C%213827   ,还有你这个SD卡是用SPI接口驱动的吧?这个要慢了。LPC1788是有MCI接口的,四线的,很快。是NXP的多媒体卡接口,类似SDIO。

出0入0汤圆

 楼主| 发表于 2014-6-17 22:40:21 | 显示全部楼层
nongxiaoming 发表于 2014-6-17 18:01
好像是这个:https://onedrive.live.com/?cid=36F4D1230F8A673C&id=36F4D1230F8A673C%213827   ,还有你 ...

万分感谢

出0入0汤圆

发表于 2014-7-13 20:18:02 | 显示全部楼层
顶,楼主

出0入0汤圆

发表于 2014-7-13 21:57:37 | 显示全部楼层
很不错,收藏一下

出0入0汤圆

发表于 2016-5-10 08:38:02 | 显示全部楼层
最近正好需要,先下载学习下,谢谢。

出0入0汤圆

发表于 2016-5-20 16:17:31 | 显示全部楼层
好东西,标记一下

出0入0汤圆

发表于 2017-7-18 10:43:43 | 显示全部楼层
MARK  基于LPC1788+FatFs+SD的数据采集
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 14:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表