void initSPI (void)
{
P5SEL |= 0x0E; // P5.1,2,3 USCI_B1 option select
P5DIR |= 0x01;
P5OUT |= 0x0F;
// 3-pin, 8-bit SPI master
UCB1CTL0 |= UCCKPL + UCMSB + UCMST + UCSYNC;
UCB1CTL1 |= UCSSEL_2; // SMCLK
UCB1BR0 |= 0x02; // BRCLK = SMCLK/2
UCB1BR1 = 0; //
UCB1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
UC1IE |= UCB1RXIE; // Enable USCI1 RX interrupt
}
void mmcSendCmd (const char cmd, unsigned long data, const char crc)
{
char frame[6];
char temp;
int i;
frame[0]=(cmd|0x40);
for(i=3;i>=0;i--){
temp=(char)(data>>(8*i));
frame[4-i]=(temp);
}
frame[5]=(crc);
for(i=0;i<6;i++)
spiSendByte(frame[i]);
}
main()
{
int i;
unsigned char data;
WDTCTL = WDTPW + WDTHOLD;
//P6DIR &= ~BIT5;
//Initialisation of the MMC/SD-card
//Init_KeyINT();
//KEY_OFF();
initSPI();
while(1)
{
//initialization sequence on PowerUp
CS_HIGH();
for(i=0;i<=9;i++)
spiSendByte(0xff);
__delay_cycles(10);
CS_LOW();
__delay_cycles(10);
mmcSendCmd(MMC_GO_IDLE_STATE,0,0x95);
__delay_cycles(10);
data = spiSendByte(0xff);
__delay_cycles(10);
// spiSendByte(0xff);
__delay_cycles(10000);
}
}
为什么我用示波器抓不到SD卡返回的0x01呢
data值显示为0XDE。
我使用的是CCS6.0
求大侠帮助,或者有没有SD卡的例程,最好有详细介绍SPI设置的,谢谢。