智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1951|回复: 7
打印 上一主题 下一主题

[讨论] SD卡、、、、新手求教!!

[复制链接]

1

主题

52

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3931
威望
1780
贡献
1097
兑换币
836
注册时间
2012-3-17
在线时间
527 小时
跳转到指定楼层
1#
发表于 2012-12-7 20:24:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   最近在研究SD卡(SPI总线方式),一头雾水啊!!下面是我试验的一个程序,程序总是停在红色那一句,试了很多种方法,都不管用,求大神指导,这是神马原因啊!?!?   硬件还是软件问题啊!?!?

//SPI初始化
void SPI_Init (void)  {        
    MODRR_MODRR4    = 0x00;         //SPI0位于PS4-PS7
   
    SPI0CR1_SPE     = 0x00;         //禁止SPI0中断
    SPI0CR1_SPIE    = 0x00;         //禁止SPI0接收中断
    SPI0CR1_SPTIE   = 0x00;         //禁止SPI0发送中断
    SPI0CR1_MSTR    = 0x01;         //SPI0为主模式
    SPI0CR1_CPOL    = 0x00;         //SCK空闲下为高
    SPI0CR1_CPHA    = 0x00;         //在SCK时钟的偶数沿采样
    SPI0CR1_SSOE    = 0x00;         //SS不作为SPI的输出
    SPI0CR1_LSBFE   = 0x00;         //高位先出
   
    SPI0CR2_XFRW    = 0x00;         //8位传送格式
    SPI0CR2_MODFEN  = 0x00;         //SS不作为SPI的输出
    SPI0CR2_BIDIROE = 0x00;         //在SPC0为0情况下,此位无意义
    SPI0CR2_SPISWAI = 0x00;         //等待模式下SPI正常运行
    SPI0CR2_SPC0    = 0x00;         //使用MISO

    SPI0BR  = 0x07;                 //

          SPI0CR1_SPE=0x01;         //使能SPI0
}



//SPI发送一个字节
void SPI_Send_byte (UINT8 SendData)
{
         while(!SPI0SR_SPTEF);
        (void)SPI0SR;
        SPI0DRL        = SendData;
        while(!SPI0SR_SPIF);
        (void)SPI0DRL;
}

53

主题

2469

帖子

0

精华

跨届大侠

狙击手

Rank: 10Rank: 10Rank: 10

积分
11290

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章论坛骨干奖章资源大师奖章

威望
4701
贡献
3671
兑换币
2368
注册时间
2012-3-12
在线时间
1459 小时
2#
发表于 2012-12-7 21:00:05 | 只看该作者
说实话,真没看明白划红线的那句是干什么的??
回复 支持 反对

使用道具 举报

1

主题

52

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3931
威望
1780
贡献
1097
兑换币
836
注册时间
2012-3-17
在线时间
527 小时
3#
 楼主| 发表于 2012-12-7 21:45:54 | 只看该作者
sdlibin007@qq.c 发表于 2012-12-7 21:00
说实话,真没看明白划红线的那句是干什么的??

   SPIF 是128芯片SPI模式的一个寄存器、、、、
回复 支持 反对

使用道具 举报

38

主题

1651

帖子

0

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
8770
威望
4444
贡献
2638
兑换币
1818
注册时间
2010-12-29
在线时间
844 小时
4#
发表于 2012-12-7 21:47:40 | 只看该作者
那是硬件电路上的问题了,永示波器看看吧。
回复 支持 反对

使用道具 举报

12

主题

68

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5051
威望
2506
贡献
1483
兑换币
1187
注册时间
2011-11-20
在线时间
531 小时
5#
发表于 2013-2-7 11:12:22 | 只看该作者
yukunlinykl 发表于 2012-12-7 21:47
那是硬件电路上的问题了,永示波器看看吧。

为什么说是硬件电路上的问题,如何用示波器查看
回复 支持 反对

使用道具 举报

28

主题

1169

帖子

0

精华

常驻嘉宾

如来佛

Rank: 8Rank: 8

积分
3960

论坛元老奖章优秀会员奖章活跃会员奖章在线王奖章

QQ
威望
2706
贡献
150
兑换币
127
注册时间
2012-10-23
在线时间
552 小时
6#
发表于 2013-2-8 20:09:25 | 只看该作者
路过
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

注册会员

Rank: 2

积分
95
威望
44
贡献
37
兑换币
7
注册时间
2012-10-16
在线时间
7 小时
毕业学校
北京航空航天大学
7#
发表于 2013-2-18 16:54:05 | 只看该作者
你要首先弄明白这个寄存器的这一位的作用,然后去推断这个循环的作用,比如是等待数据的发送完成等?才能确定问题出在什么地方。
回复 支持 反对

使用道具 举报

6

主题

49

帖子

0

精华

高级会员

Rank: 4

积分
564
威望
301
贡献
145
兑换币
185
注册时间
2013-2-18
在线时间
59 小时
8#
发表于 2013-3-18 11:27:05 | 只看该作者
那一行不过说明传输正在进行或根本没有传输
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-22 07:02 , Processed in 0.073193 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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