stc12c5a60s2读写sd失败

[复制链接]
 楼主| william228 发表于 2012-11-11 20:06 | 显示全部楼层 |阅读模式
自己做的pcb板。用stc12c5a60s2  I/O口推挽输出。采用电阻分压。
SD卡套上用电表测量3.3v电平正确。
但是读出的数据总是0xff
  1. unsigned char SD_spi_read(void)
  2. {
  3.         UART_Send_Str("b");//测试用
  4.         SD_SO = 1;

  5.         SD_SCL = 1;
  6.         if (is_init)        delay(DELAY_TIME);
  7.         SD_SCL = 0;
  8.         if (is_init)        delay(DELAY_TIME);
  9.         _dat7 = SD_SO;

  10.         SD_SCL = 1;
  11.         if (is_init)        delay(DELAY_TIME);
  12.         SD_SCL = 0;
  13.         if (is_init)        delay(DELAY_TIME);
  14.         _dat6 = SD_SO;

  15.         SD_SCL = 1;
  16.         if (is_init)        delay(DELAY_TIME);
  17.         SD_SCL = 0;
  18.         if (is_init)        delay(DELAY_TIME);
  19.         _dat5 = SD_SO;

  20.         SD_SCL = 1;
  21.         if (is_init)        delay(DELAY_TIME);
  22.         SD_SCL = 0;
  23.         if (is_init)        delay(DELAY_TIME);
  24.         _dat4 = SD_SO;

  25.         SD_SCL = 1;
  26.         if (is_init)        delay(DELAY_TIME);
  27.         SD_SCL = 0;
  28.         if (is_init)        delay(DELAY_TIME);
  29.         _dat3 = SD_SO;

  30.         SD_SCL = 1;
  31.         if (is_init)        delay(DELAY_TIME);
  32.         SD_SCL = 0;
  33.         if (is_init)        delay(DELAY_TIME);
  34.         _dat2 = SD_SO;

  35.         SD_SCL = 1;
  36.         if (is_init)        delay(DELAY_TIME);
  37.         SD_SCL = 0;
  38.         if (is_init)        delay(DELAY_TIME);
  39.         _dat1 = SD_SO;

  40.         SD_SCL = 1;
  41.         if (is_init)        delay(DELAY_TIME);
  42.         SD_SCL = 0;
  43.         if (is_init)        delay(DELAY_TIME);
  44.         _dat0 = SD_SO;

  45.         UART_Send_Byte(_dat);//通过串口查看总是0xFF
  46.         return _dat;
  47. }
ballack_linux 发表于 2013-8-8 19:37 | 显示全部楼层
你要先确保初始化是正确的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

152

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部