alexey123_45 0 22 февраля, 2018 Опубликовано 22 февраля, 2018 · Жалоба А какая необходима минимальная пауза? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 22 февраля, 2018 Опубликовано 22 февраля, 2018 · Жалоба А какая необходима минимальная пауза? Точных данных нет. У меня сделано костыльно: в функции записи смотрю - если перед этим было чтение, то тупо делаю 500 раз SDIO_Delay(). Но уму в такой ситуации нужно запускать задержку в фоне, возвращать управление из функции, при сработке задержки делать запись и в конце рапортовать через callback-функцию. Но потом забросил отладку записи и не стал ничего переделывать. void SDIO_Delay(void) { volatile int i; for(i = 0; i < 0x20; i++); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexey123_45 0 22 февраля, 2018 Опубликовано 22 февраля, 2018 · Жалоба Понятно, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pokk 0 16 марта, 2018 Опубликовано 16 марта, 2018 · Жалоба Как победить - не знаю. Я сделал костыль: в функции "записать сектор" смотрю, если перед этим была операция чтения, то выжидаю некую паузу. Выше слегка наврал: проблема происходит после запись-чтение-запись. Если сделать запись-чтение-пауза-запись, то все ок. А как у вас запись чтение происходит ? одним блоком или мультиблочно? У меня похожая проблема(на SDIO), посекторно пишет считывает, без проблем(пробовал всякие комбинации R-W-R), как только начал использовать FAT сразу повисла, вот задумался если, переделать на мультипольный вариант даже для 1 сектора, и гнать в конце команду CMD12, что нибудь измениться или нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 16 марта, 2018 Опубликовано 16 марта, 2018 · Жалоба А как у вас запись чтение происходит ? одним блоком или мультиблочно? У меня похожая проблема(на 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться