搜索
bottom↓
回复: 13

SD卡存储数据

[复制链接]

出0入0汤圆

发表于 2013-11-9 17:52:06 | 显示全部楼层 |阅读模式
想用SD卡存储采样的数据,采样周期是125us,想要采一个字节存储一个字节,但是现在只会一个一个扇区存储,不知道怎么写,求大神帮帮忙~

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出130入129汤圆

发表于 2013-11-9 17:59:28 | 显示全部楼层
存到RAM中,凑够数据再往SD卡写,不然每次都擦写,影响SD卡寿命

出0入0汤圆

 楼主| 发表于 2013-11-9 18:03:51 | 显示全部楼层
68336016 发表于 2013-11-9 17:59
存到RAM中,凑够数据再往SD卡写,不然每次都擦写,影响SD卡寿命

我用的是256KB RAM的51,不想外扩RAM,能不能在写入的函数中写数据块的时候把512KB的循环写入改成定时器控制单字节写入512次,这样就能采一个写一个。当然这只是构想,我也不大会改。

出0入442汤圆

发表于 2013-11-9 19:21:31 | 显示全部楼层
68336016 发表于 2013-11-9 17:59
存到RAM中,凑够数据再往SD卡写,不然每次都擦写,影响SD卡寿命

SD卡只能以块为单位写,不能字节寻址。

出0入442汤圆

发表于 2013-11-9 19:23:02 | 显示全部楼层
忘记姓名的路人 发表于 2013-11-9 18:03
我用的是256KB RAM的51,不想外扩RAM,能不能在写入的函数中写数据块的时候把512KB的循环写入改成定时器 ...

那是256B,不是256KB。没办法,RAM太小,你可能必须得外扩什么东西了。推荐8脚的铁电,128KB足够,每次写入128KB的块。价格稍微贵点。要不然看看有没有512字节到8KB的便宜的串行SRAM,用SRAM功耗大点。

出0入0汤圆

 楼主| 发表于 2013-11-9 20:33:36 | 显示全部楼层
wye11083 发表于 2013-11-9 19:21
SD卡只能以块为单位写,不能字节寻址。

开始先读取一次块的首地址,在连续写块数据的时候用计时器中断代替不能么?(做到125us进中断读数据存数据)

出0入442汤圆

发表于 2013-11-9 22:01:33 | 显示全部楼层
忘记姓名的路人 发表于 2013-11-9 20:33
开始先读取一次块的首地址,在连续写块数据的时候用计时器中断代替不能么?(做到125us进中断读数据存数 ...

如果你能控制时序的话,这倒是个好主意,发送一个写指令,然后地址,然后每次发送一个字节,程序计数达到512时刷新一次SD卡。但是一旦掉电,最后一个扇区数据将丢失。而FRAM则不会丢数据。

出0入0汤圆

发表于 2013-11-9 22:39:28 | 显示全部楼层
PetitFat文件系统可以支持ram小的单片机

出0入0汤圆

发表于 2013-11-9 22:56:11 | 显示全部楼层
以前用过一款51内核的片子,有可以扇区自编程,
在写入前,要先擦除一个扇区,擦除后变为全零,
后经实验发现,全为0时,写入什么数据,就会正确写入,
若写入的地址上的数据有为1的位,往这个地址上写数据,若为1位要写为0,不可以实现,
得出结论:这个芯片的flash,若要写入数据,可以从0写为1,但不可以从1写为0,要想改为0,就必须要先擦除整个扇区。
sd卡是不是这个情况,额~~~没试验过,LZ可以实验下,
如果和上面的情况是一样的话,并且并不需要更改存储的数据,可以擦出一变后直接写,下次写入一个字节也不需要重新擦除整个扇区~~~

出0入0汤圆

发表于 2013-11-9 23:32:41 来自手机 | 显示全部楼层
JOjiiio记号,sd卡

出0入0汤圆

发表于 2013-11-9 23:44:33 | 显示全部楼层
存满一个扇区512字节再存咯

出0入0汤圆

发表于 2013-11-9 23:59:43 | 显示全部楼层
反正SD卡那么大,每个block就浪费一些也无所谓嘛。

出0入0汤圆

 楼主| 发表于 2013-11-10 00:21:39 | 显示全部楼层
wye11083 发表于 2013-11-9 22:01
如果你能控制时序的话,这倒是个好主意,发送一个写指令,然后地址,然后每次发送一个字节,程序计数达到 ...

SD卡一次快数据写入必须在写完最后的两位CRC校验码之后才能存进去吗?之前一个一个字节不是已经写入了block,为什么会丢失呢?

出0入442汤圆

发表于 2013-11-10 12:50:33 | 显示全部楼层
忘记姓名的路人 发表于 2013-11-10 00:21
SD卡一次快数据写入必须在写完最后的两位CRC校验码之后才能存进去吗?之前一个一个字节不是已经写入了blo ...

你在配置时关掉CRC就不用管CRC了。
SD卡刷新是在写满一个页(可以是512字节,8KB,2KB,1KB,===,看SD卡型号了,老的还有ECC给你写,新的SDHC这块就没有了),然后拉高CS,SD卡开始执行写入操作。
如果CS不拉高,那么SD卡是不会真正写入的。SD卡内部有个页大小的SRAM缓存的。只有刷新时才会把里面的数据拷到FLASH中。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-8-26 09:45

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

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