hd44780 0 24 февраля, 2013 Опубликовано 24 февраля, 2013 (изменено) · Жалоба Здравствуйте, уважаемые :rolleyes: Вот пытаюсь запустить :( Все инициализации, размер карты (CSD) - всегда без проблем. Использую драйвер, взятый отсюда Его исходник приложил. Модификации, проведенные мною в нём - добавил в него все функции низкоуровневой инициализации, типа SD_LowLevel_DMA_RxConfig. В той ссылке оно разбросано по разным файлам. Вот почитал инструкции в sdio_sd.c, немного поэкспериментировал. Получился код: // Init SD card sdErr = SD_Init ( ); ................ // SDIO Interrupt ENABLE NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init ( &NVIC_InitStructure ); // DMA2 STREAMx Interrupt ENABLE NVIC_InitStructure.NVIC_IRQChannel = SD_SDIO_DMA_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_Init ( &NVIC_InitStructure ); sdErr = SD_ReadMultiBlocks ( sectorBuffer, i, 512, 1 ); sdErr = SD_WaitReadOperation ( ); while ( 1 ) { state = SD_GetStatus(); if ( state == SD_TRANSFER_OK ) break; } // while ........................ void SDIO_IRQHandler(void) { // SD_ProcessIRQ(); -- это в инструкции, но такой функции нет SD_ProcessIRQSrc ( ); } void SD_SDIO_DMA_IRQHANDLER(void) { SD_ProcessDMAIRQ(); } Все инициализации, размер карты (CSD) проходят всегда без проблем. Проблема в следующем. 0-й сектор (MBR) всегда читается идеально, оба прерывания вызываются и отрабатывают. На всех других секторах прерываний нету, SD_WaitReadOperation висит во внутреннем цикле (смотрел отладчиком): while ((DMAEndOfTransfer == 0x00) && (TransferEnd == 0) && (TransferError == SD_OK) && (timeout > 0)) { timeout--; } Т.е. флаги не сброшены - прямое следствие неотработавших прерываний DMA. От номера сектора никак не зависит. Единственное исключение - MBR. Соответственно и FatFs сразу обламывается и прочие гадости. Пробовал 2 SD карты, одна 32МБ "демка" от фотоаппарата Canon, 2-я 4ГБ Transcend (не SDHC!!) - одинаково. Монтаж - на проводках, примерно такой же, как и в ST-шной ссылке выше. Датчики разъёма не опрашиваю, плату криво спаял, они оба всегда замкнуты. Но это мелочи - кнопки опрашивать я умею. Кто-нибудь может сказать, в чём здесь дело? Спасибо. sdio_sd.zip Изменено 24 февраля, 2013 пользователем IgorKossak [codebox] для длинного кода, [code] - для короткого!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 27 февраля, 2013 Опубликовано 27 февраля, 2013 · Жалоба Многосекторные операции запустил. Кому интересно - см. http://forum.easyelectronics.ru/viewtopic....=250912#p250912 - подробности. Сорри за внешний ресурс, но так вышло .... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться