打印
[ZLG-ARM]

周公:SD卡程序初始化不成功,

[复制链接]
3001|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
l_yx123|  楼主 | 2008-2-22 01:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SDSD卡程序初始化不成功,返回错误号码为0x04,表示卡不支持3.3V电压,但是我的卡是可以在读卡器里面工作的啊。为什么会出现这个问题?

如果把3.3V电压的程序注释掉后,发现读会发生0x21,写会发生0x22,擦除会发生0x33的错误,是什么道理啊?

我的接线为LPC2138
P0.4   SD_SCK
P0.5   SD_MISO
P0.6   SD_MOSI
P1.24  SD_POWER
P1.25  SPI_CS
P0.3   SD_INSERT
P0.2   SD_WP

sdconfig.h的程序如下:
/* SCK引脚 */
#define  SPI_SCK                (0x01 << 4)                        
#define  SPI_SCK_GPIO()            PINSEL0 &= ~(0x03 << 8)            /* 设置 SCK 口为GPIO口 */
#define  SPI_SCK_OUT()            IODIR |= SPI_SCK                /* 设置 SCK 口为输出口 */
#define     SPI_SCK_CLR()            IOCLR = SPI_SCK                    /* 置 SCK 为低电平 */    

/* MISO 引脚 */    
#define  SPI_MISO                (0x01 << 5)                        
#define  SPI_MISO_GPIO()        PINSEL0 &= ~(0x03 << 10)        /* 设置 MISO 口为GPIO口 */
#define  SPI_MISO_OUT()            IODIR |= SPI_MISO                /* 设置 MISO 口为输出口 */
#define     SPI_MISO_CLR()            IOCLR = SPI_MISO                /* 置 MISO 为低电平 */

/* MOSI 引脚 */    
#define  SPI_MOSI                (0x01 << 6)
#define  SPI_MOSI_GPIO()        PINSEL0 &= ~(0x03 << 12)        /* 设置 MOSI 口为GPIO口 */
#define  SPI_MOSI_OUT()            IODIR |= SPI_MOSI                /* 设置 MOSI 口为输出口 */
#define     SPI_MOSI_CLR()            IOCLR = SPI_MOSI                /* 置 MISO 为低电平 */

/* CS 引脚 */        
#define  SPI_CS                  (0x01 << 25)                       
#define  SPI_CS_GPIO()            PINSEL2 = 0x04         /* 设置 CS 口为GPIO口 */
#define  SPI_CS_OUT()            IODIR |= SPI_CS;                 /* 设置 CS 口为输出口 */
#define     SPI_CS_SET()            IOSET |= SPI_CS;                /* 置 CS 为高电平 */
#define     SPI_CS_CLR()            IOCLR |= SPI_CS;                /* 置 CS 为低电平 */

/* 初始化 IO 口为SPI接口 */
#define  SPI_INIT()                PINSEL0 &= ~((0x03 << 8) + (0x03 << 10) + (0x03 << 12)); 
                                PINSEL0 |= (0x01 << 8) + (0x01 << 10) + (0x01 << 12);
                                                                
/* 电源控制引脚 */
#define  SD_POWER                (0x01 << 24)    
#define  SD_POWER_GPIO()        PINSEL2 = 0x04        /* 设置 POWER 口为GPIO口 */
#define  SD_POWER_OUT()            IODIR |= SD_POWER                /* 设置 POWER 口为输出口 */
#define  SD_POWER_OFF()            IOSET = SD_POWER                /* 置 POWER 为高电平 */
#define  SD_POWER_ON()            IOCLR = SD_POWER                /* 置 POWER 为低电平 */

/* 卡完全插入卡座检测引脚 */
#define  SD_INSERT                (0x01 << 3)        
#define  SD_INSERT_GPIO()        PINSEL0 &= ~(0x03 << 6)        /* 设置 INSERT 口为GPIO口 */    
#define  SD_INSERT_IN()            IODIR &= ~SD_INSERT                /* 设置 INSERT 口为输出口 */    
#define  SD_INSERT_STATUS()      (IOPIN & SD_INSERT)                /* 读取 INSERT 口的状态 */

/* 卡写保护检测引脚 */
#define  SD_WP                    (0x01 << 2)        
#define  SD_WP_GPIO()            PINSEL0 &= ~(0x03 << 4)        /* 设置 INSERT 口为GPIO口 */    
#define  SD_WP_IN()                IODIR &= ~SD_WP                    /* 设置 INSERT 口为输出口 */    
#define  SD_WP_STATUS()          (IOPIN & SD_WP)                    /* 读取 INSERT 口的状态 */

其他地方没有动,然后采用的是SDExample.exe来测试,发现了如上的结果,是硬件的问题么,还是软件的问题?

同事可以说明的是,在这个板子上和同样一个SD卡上曾经可以建立文件和文件夹,但是只看到了一次,后面就再也不行了。

能告知么?

相关帖子

沙发
zlgarm| | 2008-2-22 23:36 | 只看该作者

re

   你的电路中要增加控制卡电源的MOS管,请见我们给出的原理图.
                                          by zlgarm_zmy

使用特权

评论回复
板凳
l_yx123|  楼主 | 2008-2-25 14:05 | 只看该作者

原理图在图片中

看看是硬件的问题么?

在调试的时候,曾经只几个给sd卡的VDD供电3.3V也不行,出现的问题还是如一楼一样

https://bbs.21ic.com/upfiles/img/20082/200822514422733.jpg
相关链接:https://bbs.21ic.com/upfiles/img/20082/200822514422733.jpg

使用特权

评论回复
地板
l_yx123|  楼主 | 2008-2-25 14:14 | 只看该作者

难道是MOS管被9013代替就不行了?

9013的电流够吧
10ma呢

使用特权

评论回复
5
zlgarm| | 2008-2-25 16:27 | 只看该作者

SD卡

l_yx123 您好:
   9013上的限流电阻太大,一般操作SD卡时至少要45mA电流的供给能力才可以。
                               on duty:zlgarm_zhanghuping

使用特权

评论回复
6
l_yx123|  楼主 | 2008-2-27 08:46 | 只看该作者

我直接将SD卡的VDD脚接在3.3V上也不行

很纳闷

使用特权

评论回复
7
liwenz| | 2008-2-27 09:29 | 只看该作者

会不会你的电路有问题?

我第一次试的时候电路错了,结果出现这种问题。
我当时用zlg的SD读卡接口没问题,自己做的时候就出现了。
我是按照zlg的电路作的,但印板脚对应错了。
那个图容易看错。后来改过来就好了

使用特权

评论回复
8
l_yx123|  楼主 | 2008-2-27 09:37 | 只看该作者

本SD卡可以被读卡器格式化,读写均正常,

本SD卡是那种电子市场上最基本的,1GB容量。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

23

帖子

0

粉丝