ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 июля
275579 Топик полностью
koyodza (29.09.2011 22:09, просмотров: 183) ответил Гудвин на Может быть и не 100 - лень вспоминать/думать ;) Проще было найти заведомо рабочий кусок кода (мега тактируется от встроенного генератора 8 МГц):
слишком много магических чисел у меня как-то так: static SD_Error SD_GoIdleState(void) { Pins(CARD_CS, LOW); SD_SendCmd(SD_CMD_GO_IDLE_STATE, 0, 0x95); // CMD0 (SD_CMD_GO_IDLE_STATE) to put SD in SPI mode if (SD_GetResponse(SD_IN_IDLE_STATE)) // Idle State Response (R1 Format) 0x01 return SD_RESPONSE_FAILURE; do { Pins(CARD_CS, HIGH); SD_WriteByte(SD_DUMMY_BYTE); Pins(CARD_CS, LOW); SD_SendCmd(SD_CMD_SEND_OP_COND, 0, 0xFF); // CMD1 (Activates the card process) } while (SD_GetResponse(SD_RESPONSE_NO_ERROR)); Pins(CARD_CS, HIGH); SD_WriteByte(SD_DUMMY_BYTE); // SetHighSpeed while(SPI_I2S_GetFlagStatus(CARD_SPI, SPI_I2S_FLAG_TXE) == RESET); CARD_SPI->CR1 = (CARD_SPI->CR1 & (~SPI_BaudRatePrescaler_256)) | SPI_BaudRatePrescaler_2; CARD_READY = TRUE; return SD_RESPONSE_NO_ERROR; } SD_Error SD_Init(void) { SD_LowLevel_Init(); Pins(CARD_CS, HIGH); for (int i = 0; i < 10; i++) SD_WriteByte(SD_DUMMY_BYTE); return SD_GoIdleState(); }