zltigo 2 8 ноября, 2008 Опубликовано 8 ноября, 2008 · Жалоба C этих фотографий и следовало начинать, а не морочить голову.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JohnSilver 1 8 ноября, 2008 Опубликовано 8 ноября, 2008 · Жалоба Укоротил провода. Поставил задержку 20 мкс - не инициализирует. 1. На 400 кГц - 10 см это не длина. 2. Задержка стоит после посылки каждых 8 бит, т.е. 8 бит проходят нормально, а потом вдруг длинные провода начинаю искажать сигнал? 3. Задержка на всех частотах одинаковая. Написал это и подумал, что надо сделать разные задержки для разных частот, может это даст пищу для размышлений. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JohnSilver 1 8 ноября, 2008 Опубликовано 8 ноября, 2008 · Жалоба Проверил. Во время инициализации поставил задержку 40 мкс (уменьшать не пробовал). После инициализации задержку поставил 0 мкс (т.е. только вызов Delay_mks(0)). После перепайки картоприемника, при вставке SDv2, вешается дисплей, видимо много жрет и просаживает питание. Потом надо будет навешать кондеров. Вощем уже можно нормально работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 ноября, 2008 Опубликовано 8 ноября, 2008 · Жалоба 1. На 400 кГц - 10 см это не длина. Дело не в килогерцах, а в быстрых фронтах. Такой дизайн работать не должен вообще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JohnSilver 1 8 ноября, 2008 Опубликовано 8 ноября, 2008 · Жалоба ИМХО в данном случае дело не в проводах. Как сделаю целевую плату обязательно отпишусь. Вы лучше скажите, многоуважаемые гуру, как происходит работа с картой в библиотеке FatFs. Основной вопрос: как и как часто происходит перезапись FAT? При каждой записи в файл, или при пересечении границ сегмента, или только при вызове f_sync (FIL*)? Я чет пока немогу вкурить все эти FAT, MBR, PBR.... У меня задача логить ~100 байт в файл с интервалом в 10с. Возникает вопрос: долго карта выдержит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wano 0 9 ноября, 2008 Опубликовано 9 ноября, 2008 · Жалоба У меня задача логить ~100 байт в файл с интервалом в 10с. Возникает вопрос: долго карта выдержит? Друг в Минске работает на конторе, пишут нижний уровень для контроллеров карточек SD. Говорит, там имеются алгоритмы слежения за числом обращений к секторам. Миллион циклов перезаписи вполне может быть и не пределом.По этому поводу хочу спросить про такую идею: Если заранее создать файл n-ого размера и заполнить его нулями. Значит FAT таблица будет создана и при последующей записи в этот файл она меняться не будет. Выходит это 100% защита от повреждения FAT таблиц при пропадания питания . Также это уменьшение обращений к таблицам, что экономит ресурс. Или чего-то не так :) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 10 ноября, 2008 Опубликовано 10 ноября, 2008 · Жалоба Или чего-то не так :) ? Все почти так, только с таким файлом на PC не очень удобно работать, и 100% защиты от повреждения FAT при пропадании питания это, конечно, не дает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LordVader 0 11 ноября, 2008 Опубликовано 11 ноября, 2008 · Жалоба Может кому будет полезно... Иногда бывают проблемы с инициализацией. ВРоде бы всё по даташитам, но конкретная карточка не инициализируется, хоть убей. Иногда помогает инициализация на низких скоростях, как в этом топике обсуждается. Но есть методы борьбы без снижения скорости: один метод предложен и проверен тут: http://dlcorp.ucoz.ru/_fr/2/MMCSDCard.pdf (страница 5, сверху). Другой метод - настоить ваш SPI так, чтобы последний переданный бит оставался на выходе SPI MOSI после конца обмена. Тоже помогает, но может статься, что это невозможно в данном МК. Тогда первый метод из ПДФки прокатывает. PS: оба эти метода проверил и применяю лично. Помогают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JohnSilver 1 11 ноября, 2008 Опубликовано 11 ноября, 2008 · Жалоба Честно говоря меня этот код из даташита настораживает, никаких проверок Response, только b!=0xFF. Как то нехорошо... В чем суть метода? Ловить 0xFF перед проверкой Response? Хотя это не для меня, у меня вечный 0xFF в ответе. Кстати по последнему разбору, у меня требуется задержка только для команды CMD0. Чет у меня впечатление, что с питанием нехорошо, на выходных посмотрю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LordVader 0 11 ноября, 2008 Опубликовано 11 ноября, 2008 · Жалоба Честно говоря меня этот код из даташита настораживает, никаких проверок Response, только b!=0xFF. Как то нехорошо... В чем суть метода? Ловить 0xFF перед проверкой Response? Хотя это не для меня, у меня вечный 0xFF в ответе. Кратко суть такова: послать команду поймать респонс как по даташиту перед посылкой следующей команды слать ФФ, пока в ответ тоже не придёт ФФ Кстати по последнему разбору, у меня требуется задержка только для команды CMD0. Чет у меня впечатление, что с питанием нехорошо, на выходных посмотрю. Именно, проблема только при инициализации, насколько я помню, Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leopold111 0 11 ноября, 2008 Опубликовано 11 ноября, 2008 · Жалоба Всем спасибо!!! Вопрос решил. Сделал внешнее питание (от USB) на lm317. Все пошло!!! Инициаллизируется CMD1. Все отвечает и принимает. Оказалось карточка отвечает и без питания. Чудо, но факт! Отрубаю питание и возвращаюсь в старое состояние. Так что смотрите питание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 11 ноября, 2008 Опубликовано 11 ноября, 2008 · Жалоба Оказалось карточка отвечает и без питания. Чудо, но факт! Отрубаю питание и возвращаюсь в старое состояние. Совсем без питания она отвечать не может, естественно. Просто карта у Вас запитывается паразитным образом через линии интерфейса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
JohnSilver 1 23 декабря, 2008 Опубликовано 23 декабря, 2008 · Жалоба Как сделаю целевую плату обязательно отпишусь. Таки сделал плату. Теперь задержка понадобилась и в CMD16. Задержка после каждых 8 бит CMD0: 10 мкс - не проходит 20 мкс - не проходит 30 мкс - Ок 40 мкс - Ок CMD16: 0 мкс - не проходит 10 мкс - не проходит 20 мкс - не проходит 30 мкс - Ок 40 мкс - Ок Остальные команды: 0 мкс - Ок :07: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hermes 0 24 декабря, 2008 Опубликовано 24 декабря, 2008 · Жалоба А мои - бесплатными. B) Новый год, все-таки. :santa2:. Вот оно - Пишите, если будут вопросы. а можно и мне ? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 24 декабря, 2008 Опубликовано 24 декабря, 2008 · Жалоба а можно и мне ? :) Те исходники уже не откопаю, но могу предложить наиболее полезную часть, на которую так любят забивать в "бесплатных примерах" - подсчет CRC для команд и данных. //****************************************************************************** u_int sd_crc7(u_char *buff, u_int len) { u_int a, crc = 0x00; while(len--) { crc ^= *buff++; a = 0x08; do { crc <<= 0x01; if(crc & 0x100) crc ^= 0x12; } while(--a); } return (crc & 0xfe); } //****************************************************************************** const u_short sd_crc16_table_a[0x10] = { 0x0000, 0x1231, 0x2462, 0x3653, 0x48c4, 0x5af5, 0x6ca6, 0x7e97, 0x9188, 0x83b9, 0xb5ea, 0xa7db, 0xd94c, 0xcb7d, 0xfd2e, 0xef1f }; const u_short sd_crc16_table_b[0x10] = { 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef }; u_int sd_crc16(u_char *buff, u_int len) { u_char data; u_short crc = 0x00; while(len--) { data = *buff++ ^ (crc >> 0x08); crc = (sd_crc16_table_a[(data & 0xf0) >> 4] ^ sd_crc16_table_b[data & 0x0f]) ^ (crc << 8); } return crc; } //****************************************************************************** Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться