Перейти к содержанию

    
А какая необходима минимальная пауза?

Точных данных нет. У меня сделано костыльно: в функции записи смотрю - если перед этим было чтение, то тупо делаю 500 раз SDIO_Delay().

Но уму в такой ситуации нужно запускать задержку в фоне, возвращать управление из функции, при сработке задержки делать запись и в конце рапортовать через callback-функцию.

Но потом забросил отладку записи и не стал ничего переделывать.

 

void SDIO_Delay(void)
{
    volatile int    i;
    for(i = 0; i < 0x20; i++);
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Как победить - не знаю.

Я сделал костыль: в функции "записать сектор" смотрю, если перед этим была операция чтения, то выжидаю некую паузу.

Выше слегка наврал: проблема происходит после запись-чтение-запись.

Если сделать запись-чтение-пауза-запись, то все ок.

А как у вас запись чтение происходит ? одним блоком или мультиблочно? У меня похожая проблема(на SDIO), посекторно пишет считывает, без проблем(пробовал всякие комбинации R-W-R), как только начал использовать FAT сразу повисла, вот задумался если, переделать на мультипольный вариант даже для 1 сектора, и гнать в конце команду CMD12, что нибудь измениться или нет.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А как у вас запись чтение происходит ? одним блоком или мультиблочно? У меня похожая проблема(на SDIO), посекторно пишет считывает, без проблем(пробовал всякие комбинации R-W-R), как только начал использовать FAT сразу повисла, вот задумался если, переделать на мультипольный вариант даже для 1 сектора, и гнать в конце команду CMD12, что нибудь измениться или нет.

Использую CMD18_READ_MULTIPLE_BLOCK + CMD12_STOP_TRANSMISSION для чтения,

и ACMD23_SET_WR_BLK_ERASE_COUNT + CMD25_WRITE_MULTIPLE_BLOCK + CMD12_STOP_TRANSMISSION для записи.

Перед и после операций - CMD13_SEND_STATUS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация