智能车制作

标题: SD卡、、、、新手求教!! [打印本页]

作者: 淡淡的忘记    时间: 2012-12-7 20:24
标题: SD卡、、、、新手求教!!
   最近在研究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;
}


作者: sdlibin007@qq.c    时间: 2012-12-7 21:00
说实话,真没看明白划红线的那句是干什么的??
作者: 淡淡的忘记    时间: 2012-12-7 21:45
sdlibin007@qq.c 发表于 2012-12-7 21:00
说实话,真没看明白划红线的那句是干什么的??

   SPIF 是128芯片SPI模式的一个寄存器、、、、
作者: yukunlinykl    时间: 2012-12-7 21:47
那是硬件电路上的问题了,永示波器看看吧。
作者: Tonywuke    时间: 2013-2-7 11:12
yukunlinykl 发表于 2012-12-7 21:47
那是硬件电路上的问题了,永示波器看看吧。

为什么说是硬件电路上的问题,如何用示波器查看
作者: 严鸿雁    时间: 2013-2-8 20:09
路过
作者: 通联物网    时间: 2013-2-18 16:54
你要首先弄明白这个寄存器的这一位的作用,然后去推断这个循环的作用,比如是等待数据的发送完成等?才能确定问题出在什么地方。
作者: 846375642    时间: 2013-3-18 11:27
那一行不过说明传输正在进行或根本没有传输




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2