OpenEdv-开源电子网

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

再请教原子老师,改为SDIO方式后,为什么就不能正常显示JPEG格式的图片呢?

[复制链接]

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
发表于 2013-12-18 15:15:51 | 显示全部楼层 |阅读模式
    由于需要,就把战舰板的SPI方式的SD卡,改为SDIO工作方式,图片显示程序,用的也是战舰版的图片显示例题PICTURE, 移植后,发现,当显示bmp格式的图片时,正常,

可在显示同一张图片的jpe格式时,就不正常,好像在显示头几行时,还正常,往下就乱套了,无法正常显示JPEG格式的图片了。

    开始,我没把这个问题看重了,认为还是很好解决了,因为同是图片解码,既然bmp好用,这说明,初始化时的 LCD 画点,画线,画圆等接口程序肯定没有问题,问题肯定

是出在JPEG解码上,可是我费了几天时间,还是没有排除这个问题,所以还是要请教原子老师和其他能人,怎么能够解决这个问题呢?

    根据我几天的跟踪排查,问题确实是出在智能画图程序里的jpeg格式分支后,见下程序:


     u8 ai_load_picfile(const u8 *filename,u16 x,u16 y,u16 width,u16 height) //智能画图
 {
u8 res;//返回值
u8 temp;

if((x+width)>lcddev.width)return PIC_WINDOW_ERR; //x坐标超范围了.
if((y+height)>lcddev.height)return PIC_WINDOW_ERR; //y坐标超范围了. 
 
。。。。。。。。。。

        。。。。。。。。。。

//文件名传递
temp=f_typetell((u8*)filename); //得到文件的类型
switch(temp)  //根据得到的解码类型,开始解码了
{  
  case T_BMP:

res=stdbmp_decode(filename); //解码bmp
break;
//------------------------------------------------------------------------
case T_JPG:
case T_JPEG:

  res=jpg_decode(filename);    /*解码JPG/JPEG*/          【问题就出在这个分支以后了】
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

   break;
//  ---------------------------------------------------------------------
case T_GIF:
res=gif_decode(filename,x,y,width,height); //解码gif    
break;
//-------------------------------------------------------------------------
default:
res=PIC_FORMAT_ERR;   //非图片格式!!!  
break;
}     
return res;
}
//=========================================================================================================

 修改了JPEG解码程序里好多地方,还是不见效果,JPEG解码还是很复杂的,我这个小学生还能解决这么大的问题?所以还是厚着脸皮,再求教原子老师,问题出在哪里?这个和改SDIO有关系吗?

为什么bmp图片能解码成功呢?

         下面发几张解码显示的照片,第1.2张 是:''荷花" 的 bmp 和 jpeg两个格式,bmp的显示正常,jpeg的就不正常,好像开始显示几行,就乱套了,不成图片了;第3,4张是“科技之光”

 的 bmp 和 jpeg两个格式 ,bmp的女孩显示正常, jpeg的女孩就显示不正常,好像开始显示几行也是对的,往下也不行了,显示混乱啦。





 













正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-18 20:06:44 | 显示全部楼层
回复【楼主位】dong:
---------------------------------
把你代码发上来,我测试下。
是什么屏幕?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-19 23:49:02 | 显示全部楼层
回复【2楼】正点原子:
回复【楼主位】dong:
---------------------------------
把你代码发上来,我测试下。
是什么屏幕?
---------------------------------
=====================================================================
   十分感谢原子老师,能及时给予的回复!

    按你的要求,把代码发上来,请测试。

    这些代码共3个文件: 1,SD卡里要测试的图片; 2,战舰板例题42  图片显示,用这个程序,SD卡的bmp和jpeg图片都能显示,正常;

                                   3, 只是把例题42 的 SD卡改为SDIO方式,其他的例题没有改动一点,可是显示同一张照片的两种格式,jpeg就不正常了。

        经试,上述故障和屏幕大小没有关系,所以在战舰板上测试为最方便了。
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-19 23:51:26 | 显示全部楼层
原来回复模式,只能发送文本,所以测试资料,只能另发了。
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-19 23:57:46 | 显示全部楼层
测试资料在这里

jpeg图片显示不正常测试软件包.rar

16.56 MB, 下载次数: 670

回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-20 20:44:53 | 显示全部楼层
顶上去,等原子老师的测试,排障结果。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-20 23:04:12 | 显示全部楼层
回复【6楼】dong:
---------------------------------
公司这两天断网了...
狗日的电信...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-21 09:12:25 | 显示全部楼层
回复【7楼】正点原子:
回复【6楼】dong:
---------------------------------
公司这两天断网了...
狗日的电信...
---------------------------------
======================================================

   原子老师不急,慢慢测试,修改,查证。

  这也是一道有意思的游戏题,要玩的好,恐怕只有原子老师莫属啦。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-21 14:05:20 | 显示全部楼层
你用的库函数,我不用。
我有寄存器版本的,你下载测试下吧。

扩展实验2 SDIO实验.rar

896.6 KB, 下载次数: 850

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-21 15:22:04 | 显示全部楼层
回复【9楼】正点原子:
你用的库函数,我不用。
我有寄存器版本的,你下载测试下吧。
---------------------------------
谢谢老师,我下载试试。
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-21 16:16:48 | 显示全部楼层
其实,扩展试验2 SDIO实验,我买战舰板时已带有,在开始我要用SDIO时,就是用的这道例题进行移植,我记得为了这事,还发帖请教你呢,可是用战舰板使用时,

它死活不识别SD卡,老报错:PICTURE文件夹错误!无奈,我又上论坛看这方面的帖子,看有些网友说,寄存器版的SDIO不好用,挑卡严重,不如SPI的好用.....

又无奈,只得另选择不是寄存器版的SDIO进行移植,它的蓝本就是战舰版的例题42,图片显示,SPI方式在战舰板上显示流畅,别的什么也没改,只改SDIO部分

代码,上机实验,SD卡识别正常,显示bmp正常,但在显示jpeg时,就出现发帖所示的故障,开始我认为这是“小菜一盘”,在老师的指导下,有这么强大的论坛

排除这个故障不难,错误认为既然能显示bmp图片,说明基本的sd卡文件系统,画点,画线等功能已经通过,问题仅仅出在jpeg译码以后的程序里,就开始修改

这部分程序,连续干了5天,不见成果,这才觉的自己是个小学生,这个问题不简单,再闷几日也没有用,还是厚着脸皮,请教老师了。

        我还换过几种尺寸的屏幕,和在战舰板上都是一样的结果,当然,在试SDIO的例题,要按战舰版的说明,先把SD卡的接口改过来才行。

         今天这个例题我也下载了,原认为原子老师对这道例题有什么改进,编译下载到战舰板上“涛声依旧”,还是报错:"PICTURE文件夹错误!"

        我还是希望,老师能把我发上去的例题下载到战舰板上试一下,这也能解决网友们的反映:寄存器版的SDIO不适卡的问题,对其他网友的答疑也很有帮助

       能收到“一箭多鵰”的效果。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-21 21:55:50 | 显示全部楼层
回复【11楼】dong:
---------------------------------
换SD_POLLING_MODE模式吧。
这个模式可以
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-22 01:38:58 | 显示全部楼层
回复【12楼】正点原子:

回复【11楼】dong:
---------------------------------
换SD_POLLING_MODE模式吧。
这个模式可以

====================================================================================
  不怕老师笑话,没懂你的意思,SD_POLLING_MODE模式是什么?你的战舰板没有这道例题吧?能否发个例题让我参考一下?

 不然,战舰版的SDIO例题用不了,用别人的SDIO,jpeg又显示不出来,这可怎么办啊 ?
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-22 08:57:29 | 显示全部楼层
我发上去的SDIO测试程序已经下载26次了,这说明我提出的问题带有共性,说明战舰版提供的寄存器版SDIO程序确实有问题,这也是道很有意思的游戏,

 我发上去的资料很全,只要有块战舰版,下载解压后,把SD卡的内容拷贝过去,把编译后的HEX(实际已编译过)下载到战舰板里,当然,可不要忘记把

 SD卡的接口,改为SDIO方式的接线了,这时可以看到屏上显示美丽的荷花和美女,可是在显示jpeg格式时,就惨了,荷花只显示个顶顶,美女下身也

没了。由于我用的是横屏,所以显示的图片会小一点,但这没有关系,能说明问题就行。 

       网友朋友肯定有高人,你们下载测试和修改后的结果一定发上来,大家可共享啊,也可以帮助战舰版改正SDIO程序有瑕疵的问题,还帮助原子老师

实在太忙,要做的事太多,一时半会不可能花费更多的时间来详细剖析,解答这个问题的问题,当然我还是在耐心等待原子老师的答疑。

        我提供的SDIO方案,经过我测试,去了不能显示jpeg文件以外,其他工作很流畅,在UCGUI等软件的工作中表现出色,显示bmp照片的速度

确实比SPI方式的sd卡快了不少,完全可以用到产品开发工作中,这也算我对本坛一点贡献吧。

       实际这个SDIO工作软件,是我在战舰板的SDIO例题不好用后,到处“求医”,下载很多例题,进行试用,结果都不满意,一天在本坛里发现一个

网友发上来这道例题,下载后,稍加修改后试用,很爽,就用下来,在此我特向这位不知名的网友表示谢意!!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-22 10:02:52 | 显示全部楼层
回复【13楼】dong:
---------------------------------
我下载了2次。
我前面说的,设置为:SD_POLLING_MODE,可以用。
那是我测试过你的代码,用SD_DMA_MODE,是和你说的一个问题,但是换成SD_POLLING_MODE,那就可以了。
改的方法很简单,在
SD_Error SD_Init(void)
{
  SD_Error errorstatus = SD_OK;
  
  /* SDIO eripheral Low Level Init */
  SD_LowLevel_Init();

  SDIO_DeInit();  //SDIO外设寄存器设置为默认值 

  errorstatus = SD_PowerON();

  if (errorstatus != SD_OK)
  {
    /*!< CMD Response TimeOut (wait for CMDSENT flag) */
    return(errorstatus);
  }

  errorstatus = SD_InitializeCards();

  if (errorstatus != SD_OK)
  {
    /*!< CMD Response TimeOut (wait for CMDSENT flag) */
    return(errorstatus);
  }

  /*!< Configure the SDIO peripheral */
  /*!< SDIOCLK = HCLK, SDIO_CK = HCLK/(2 + SDIO_TRANSFER_CLK_DIV) */ 
  SDIO_InitStructure.SDIO_ClockDiv = SDIO_TRANSFER_CLK_DIV; 
  SDIO_InitStructure.SDIO_ClockEdge = SDIO_ClockEdge_Rising;
  SDIO_InitStructure.SDIO_ClockBypass = SDIO_ClockBypass_Disable;
  SDIO_InitStructure.SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable;
  SDIO_InitStructure.SDIO_BusWide = SDIO_BusWide_1b;
  SDIO_InitStructure.SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable;
  SDIO_Init(&SDIO_InitStructure);
  
  if (errorstatus == SD_OK)
  {
    /*----------------- Read CSD/CID MSD registers ------------------*/
    errorstatus = SD_GetCardInfo(&SDCardInfo);
  }

  if (errorstatus == SD_OK)
  {
    /*----------------- Select Card --------------------------------*/
    errorstatus = SD_SelectDeselect((uint32_t) (SDCardInfo.RCA << 16));
  }

  if (errorstatus == SD_OK)
  {
    errorstatus = SD_EnableWideBusOperation(SDIO_BusWide_4b);
  }  

  /* Set Device Transfer Mode to DMA */
  if (errorstatus == SD_OK)
  {  
    errorstatus = SD_SetDeviceMode(SD_DMA_MODE);
  }
  
  return(errorstatus);
}

errorstatus = SD_SetDeviceMode(SD_DMA_MODE);

改为:
errorstatus = SD_SetDeviceMode(SD_POLLING_MODE);
就可以用
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-22 17:29:26 | 显示全部楼层
原子老师:

           按上述方法,把  errorstatus = SD_SetDeviceMode(SD_DMA_MODE);

                   改为:errorstatus = SD_SetDeviceMode(SD_POLLING_MODE);

               实际是改了一下SD卡的工作模式吧?还是不行,好像问题比过去更严重,连PICTUER文件夹都打不开了,我还认为改一个SD_POLLING_MODE不行,把程序中

  相关的SD_DMA_MODE都改过来,还是不行,是我的操作有问题吗?请老师斧正。

               我个人认为,这个问题的出现,好像和SD卡的工作模式没有关系,因为其他的都好用,只是在显示jpeg文件格式时,出现的问题,所以问题还是出现在jpeg的解码,

 显示这段程序里吧?在这里查找问题,才能正解。我开始也是这样做的,可是限于技术水平,干了5天,不见效果,慌了手脚,才来求师解难。

               战舰板还有个毛病,就是带着串口,启动程序,想看看初始化时,各部件的工作情况,就会黑屏死机!这可能是个案,只是在我这一块开发板出现的问题?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-22 20:14:09 | 显示全部楼层
分频改大点。
给你附上我修改好的代码。

战舰板-SDIO-显示图片-jpeg 正常了.rar

980.04 KB, 下载次数: 846

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-23 01:16:29 | 显示全部楼层
再次谢谢原子老师的解答!

    本程序我下载后,下载到战舰版上,确实显示jpeg格式正常了,可是用到大一点屏大程序里,SD卡初始化通过了,可就是打不开PICTUER

文件夹。原先这大,小屏都是使用这套文件系统,只是尺寸有区别,今晚复制文件系统相关文件,反复对照两个程序,没有发现什么问题,

而且只要把errorstatus = SD_SetDeviceMode(SD_POLLING_MODE); 改回:errorstatus = SD_SetDeviceMode(SD_DMA_MODE);

就好用了,好像没改过似的。

     再请原子老师,稍微再占你点时间,说说:分频改大点,都改在什么地方?SD_POLLING_MODE模式,就修改哪些地方?我想可根据

老师的提示,查清大屏程序为什么SD卡初始化通过了,缺打不开文件夹的问题?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-23 12:00:35 | 显示全部楼层
回复【18楼】dong:
---------------------------------
时钟是改:SDIO_TRANSFER_CLK_DIV
这里直接控制SDIO_CK的频率的.

你换屏换代码了,你检查代码吧,估计移植有点问题,或者是不是你分频没改过来?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-24 00:50:26 | 显示全部楼层
再次跪谢原子老师的解答!!!

  至看到老师上面几行字的回帖起,就忙乎起来,折腾差不多一天时间,刚才才把程序调通,能够显示jpeg文件了。

       做完此道“作业题”,更加仰慕原子老师了,我仅仅为了这么一个小问题,翻遍整个程序,甚至把SD卡相关的几个文件换了几次,都没有解决问题,

 最后还是在stm3210e-eval.h中找到关于SD卡使用频率的设置语句,问题得以解决。

       原子老师懂的那么多的知识,真是了不得,我照葫芦画瓢还这么难,真是小学生水平。不过,我会老老实实跟着原子老师更加刻苦地学习,

从现在开始,重新复习战舰版的每一道例题,练好基本功,掌握基本概念,不要再出现像今天这样,老师说一句,我却要翻遍整个程序,当然,

也希望老师解答问题能更贴近一些,在不费你更多时间的前提下,多说几句,比如,上题如果能告诉我:时钟是改:SDIO_TRANSFER_CLK_DIV,

在stm3210e-eval.h里,就行,我可能就不用再费那么多的时间了。老师可能认为这么一提,学生就能领会。岂不知学生的水平太糠,要不然

他不会去买这块开发板去充充电的,为的就是学习STM32的开发技术。

       不知原子老师下一步会卖什么板子,现在有107 ,407等更高级的芯片,我们都需要,如果你能开发出更高级的板子,我们还会跟你学习,

买你下一个产品,因为你的板子最好,含金量最高,售后服务是最好的,我们会跟定你了,拜你为师的。


      还有一个小问题要请教你,今天的图片jpeg能显示后,由于把原来的mmc_sd.c换成 stm32_eval_sdio_sd.h了,所以造成本来好用的

USB读写SD卡程序失效了,表现,当插入电脑USB口以后,W25Q64的文件系统仍然正常,可读可写;而SD卡只能看到盘符,但不可读写,我判断

是:Mass_Memory_Size[0]=(long long)SD_GetSectorCount()*512; 这一句造成的 SD_GetSectorCount()是得到SD卡的扇区数,在

mmc_sd.c中有对应的函数,可是在stm32_eval_sdio_sd.c中是哪个函数呢?我又折腾好长时间,先后找了几个函数填到上面的代码里,都不好用

故障依旧,请教老师,到底使用哪个函数,能够使USB成功读写SD卡呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-24 01:30:41 | 显示全部楼层
方法很重要.
我大学里面学到最重要的就是4个字:学会学习.

东西是学不完的,但是做任何事情都是有方法或者可以找规律的.
而且很多事情都是有共性的,也就是所谓的:举一反三.

具体到你的问题:SDIO_TRANSFER_CLK_DIV找不到,或者找了很久才找到.
那就是你的方法不对了.
给你个方法:
1,mdk是有支持全工程查找的.
点击小望远镜图标,就会弹出选项卡,你输入SDIO_TRANSFER_CLK_DIV,默认是在所有文件里面查找(.S/.txt什么的都包含了),你可以只在.c/.h里面查找,从而提高准确度,其他不相干的可以去掉. 点击find按钮,立刻就把所有的有:SDIO_TRANSFER_CLK_DIV的地方都列出来了.然后随便双击一个,自动定位到目标行.
2,右键-->goto definition. 即可找到SDIO_TRANSFER_CLK_DIV的定义了.

就两步,解决所有问题. 

至于你说的得到sd卡容量的问题,其实你要是好好看过我们的例程(寄存器的SDIO例程),那么就应该知道,我们的例程,会在串口打印容量信息的.
这是怎么做到的呢?
有了这个疑问,你看我们main函数,就可以找到show_sdcard_info();//打印SD卡相关信息  
这个函数,看代码,你就知道SDCardInfo.CardCapacity,就是存放了SD卡的容量
然后在SDCardInfo上面,继续运用前面教你的第二个方法:右键-->goto definition.
找到定义.
最终你会找到:
  long long CardCapacity;   //SD卡容量,单位:字节,最大支持2^64字节大小的卡.
这个CardCapacity就代表了SD卡的容量.

所以,你的:
Mass_Memory_Size[0]=(long long)SD_GetSectorCount()*512;
可以写成:
Mass_Memory_Size[0]=(long long)SDCardInfo.CardCapacity;
就OK了.


记得小时候我父母就教育我:有样学样,没样学式样.

楼主可以好好体会下这句话的含义.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-24 02:23:51 | 显示全部楼层
老师现在还没睡呀,回帖很快!

       从上帖中既学到了技术,又学到方法,还学到做人做事的道理,真是受益匪浅!

 本坛真是个好坛子,我真是越来越离不开她了,除非出差,只要有空,不管有没有事,我都会来瞅一眼,

     学生我在24日的初夜2时21分,再次跪谢原子老师!!!
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-12-20
在线时间
0 小时
发表于 2013-12-29 22:58:39 | 显示全部楼层
回复【22楼】dong:
---------------------------------
我也有同样的问题···· 请教一下原子哥改了什么地方?
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-30 15:53:47 | 显示全部楼层
你把16楼的例题下载使用看看,这个是我用的例题,只改SD卡的模式

 把 stm32_eval_sdio_sd.c 约278行 SD_SetDeviceMode(SD_DMA_MODE) 改为 :

        SD_SetDeviceMode(SD_POLLING_MODE); 查询模式

 把stm3210e_eval.h约 228行的分频系数:#define SDIO_TRANSFER_CLK_DIV        ((uint8_t)0x1) 改为 :

    #define SDIO_TRANSFER_CLK_DIV ((uint8_t)0x4)    即可
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2013-12-31 13:58:52 | 显示全部楼层
回复【23楼】xwx:

回复【22楼】dong:
---------------------------------
我也有同样的问题···· 请教一下原子哥改了什么地方?

///////////////////////////////////////////////////////////////////////////////////////
  难道此题的发问者:xwx  现在也没看到我给你的解答?既然看到了,问题也解决了,连个回声都没有???

  这是论坛,应该感谢原子老师为我们建立这个好坛子,在互联网时代,我们这些共同兴趣的网友聚集在这里,虽然是个虚拟的世界,但是

我们这些网友都是活生生的人物,大家虽然都用虚拟名字,但会反映出一个人的精神品貌,大家文明上网,互利互助,共同学习,协助原子老师

把本坛办成既有精神文明,又有技术提高的好坛子。

       xwx 通过你的发帖,可以看出你对这个问题解决,已经到了山穷水尽的地步,如果没有别人的帮助,你这个问题是没有办法解决的,所以

我才给了你的回帖,这也是感激原子老师对我的帮助,那你把这问题也排除了,你就应该回个帖,谈谈感受,也是对后来某位网友的帮助,因为

关于SD卡的SDIO方式的提问还会很多的,我们共同努力,友好互动,对谁都会有好处的。
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2015-7-22
在线时间
3 小时
发表于 2015-7-22 16:53:41 | 显示全部楼层
我也是用拓展例程,出错了。下载原子哥上传的新的就好了。
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2015-4-6
在线时间
14 小时
发表于 2015-12-31 12:06:30 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 00:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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