реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> проблемы с SDHC
alexey123_45
сообщение Feb 22 2018, 06:19
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 69
Регистрация: 1-03-13
Пользователь №: 75 850



А какая необходима минимальная пауза?
Go to the top of the page
 
+Quote Post
adnega
сообщение Feb 22 2018, 07:09
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(alexey123_45 @ Feb 22 2018, 09:19) *
А какая необходима минимальная пауза?

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

Код
void SDIO_Delay(void)
{
    volatile int    i;
    for(i = 0; i < 0x20; i++);
}
Go to the top of the page
 
+Quote Post
alexey123_45
сообщение Feb 22 2018, 07:13
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 69
Регистрация: 1-03-13
Пользователь №: 75 850



Понятно, спасибо.
Go to the top of the page
 
+Quote Post
pokk
сообщение Mar 16 2018, 02:06
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 3-07-11
Пользователь №: 66 028



Цитата(adnega @ Feb 20 2018, 13:33) *
Как победить - не знаю.
Я сделал костыль: в функции "записать сектор" смотрю, если перед этим была операция чтения, то выжидаю некую паузу.
Выше слегка наврал: проблема происходит после запись-чтение-запись.
Если сделать запись-чтение-пауза-запись, то все ок.

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

Go to the top of the page
 
+Quote Post
adnega
сообщение Mar 16 2018, 06:29
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(pokk @ Mar 16 2018, 05:06) *
А как у вас запись чтение происходит ? одним блоком или мультиблочно? У меня похожая проблема(на 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.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th July 2025 - 10:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01411 секунд с 7
ELECTRONIX ©2004-2016