MicroSD卡和SPI

时间:2016-05-12 13:57:14

标签: c embedded spi atmega

我正在尝试通过程序SPI在MicroSD卡上读/写。通过示波器,我看到CS和MOSI和CLK工作正常。 通过"纠正"我的意思是CS已经启动,但是当我发送CMD时它很低,然后再次上升; MOSI在第一个CLK之前正确发送CMD,此时在MISO中我试图捕捉到一些东西; CLK:它使前沿之间的时钟大约为4 uS。 我发送的CMD0高于10 x 0xFF,我在任何CMD之后都这样做。 我发送:

SPI_send(CMD0, (unsigned long) 0x00, 0x95);
SPI_send(CMD8, (unsigned long) 0x01AA, 0x87);
SPI_send(CMD58, (unsigned long) 0x00, 0x01);

但我所看到的就是MISO上的1。

只有在读卡器中使用MicroSD卡时才会发生这种情况。如果不是,MISO总是1。

我尝试的MicroSD卡是2和4 Gb。可能是有意义的。如果我将它们连接到我的电脑,它们就可以工作。

如果它有帮助,我会在这里写代码来写字节

for(int bit = 0; bit < 8; bit++)

    {

        if (byte & 0x80)
            PORTG |=SPI_MOSI;
        else
            PORTG &= ~SPI_MOSI;
        PORTG |= SPI_CLK;
        byte |= (PINE & SPI_MISO)>>6;
        byte <<= 1;
        PORTG &= ~SPI_CLK;
    }

感谢您的帮助!

0 个答案:

没有答案