OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4794|回复: 6

往SD卡文件里写内容时 发现内容有损坏

[复制链接]

13

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2012-7-4
在线时间
0 小时
发表于 2014-9-1 17:07:17 | 显示全部楼层 |阅读模式
5金钱
前期测试还没有问题 后来发现写数据多的时候 出现了与程序代码不符的现象 如下:


我存的数据是8个字节一组 发现有少的 也有多的 还有乱码的 这个是怎么回事呢 我的程序原来操作U盘 内容都不会错的 写SD是用SDIO方式

最佳答案

查看完整内容[请看2#楼]

问题暂时解决了  每次我只写200个字节  我估计是大于255 出错了  但是看程序函数入口都是u16  先这样吧
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2012-7-4
在线时间
0 小时
 楼主| 发表于 2014-9-1 17:07:18 | 显示全部楼层
问题暂时解决了  每次我只写200个字节  我估计是大于255 出错了  但是看程序函数入口都是u16  先这样吧
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-1 22:06:53 | 显示全部楼层
SDIO操作SD 卡的时候,不能被中断打断,你看看是不是这个引起的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2012-7-4
在线时间
0 小时
 楼主| 发表于 2014-9-2 09:11:04 | 显示全部楼层
我写SD卡之前都关了中断 TIM_Cmd(TIM2, DISABLE);TIM_Cmd(TIM3, DISABLE); 
而且有时候汉字写的是对的 有时候汉字是乱码  比如应该是A相有功功率 但写出来是(A螦相有功功率)
这是什么原因呢
回复

使用道具 举报

13

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2012-7-4
在线时间
0 小时
 楼主| 发表于 2014-9-2 10:28:53 | 显示全部楼层
我是把一组数转换成字符串 操作写函数  然后再一组数转换成字符串 再操作写函数 以此类推  
然后我发现个规律 就是操作第二写函数的时候第一个数据肯定错   就是像第三张图片那样
u8 D[4000],table[2];
strcat(D,"A相电压");
strcat(D,"\r\n");
for(i=1;i<number+1;i++)  //1-200
{
sprintf(table,"%02x",UA.a[3]);  
strcat(D,table);

sprintf(table,"%02x",UA.a[2]);
strcat(D,table);

sprintf(table,"%02x",UA.a[1]);
strcat(D,table);

sprintf(table,"%02x",UA.a[0]);
strcat(D,table);

strcat(D,"\r\n");

f_write(&fdst, D, strlen(D), &bw);   //写数据

*D=0;
strcat(D,"B相电压");
strcat(D,"\r\n");
for(i=1;i<number+1;i++)
{
sprintf(table,"%02x",UB.a[3]);  
strcat(D,table);

sprintf(table,"%02x",UB.a[2]);
strcat(D,table);

sprintf(table,"%02x",UB.a[1]);
strcat(D,table);

sprintf(table,"%02x",UB.a[0]);
 strcat(D,table);

strcat(D,"\r\n");

f_write(&fdst, D, strlen(D), &bw);          //写数据>
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-2 12:22:17 | 显示全部楼层
回复【4楼】石头:
---------------------------------
将数据printf出来吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2012-7-4
在线时间
0 小时
 楼主| 发表于 2014-9-2 13:22:32 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
不是那个问题 可能是写函数长度的问题 我把number改成50  就没问题 我再试试
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-2 03:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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