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

Чтение блока с SD карты

непонятные типы - это из stdint.h - смысл типов надеюсь понятен.

А что, у Вас ешё и процессор не от 3.3 питается? Что за 510 Ом?

Антизвонные на 22..56 ом я ещё понимаю...

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


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

непонятные типы - это из stdint.h - смысл типов надеюсь понятен.

А что, у Вас ешё и процессор не от 3.3 питается? Что за 510 Ом?

Антизвонные на 22..56 ом я ещё понимаю...

 

Привожу Вам схему соединения ATMega128 и SD карт.

.

Atmega128 питается от 5 В, SD карта - от 3.3 В

 

R2-R6 - 51 кОм подтягивающие к +3.3В

R7-R10 - 510 Ом резисторы для согласования уровней 5В и 3.3В

VD1-VD3 - защитные стабилитроны на 3.3 Вольт

post-32103-1359619097_thumb.jpg

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


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

Привожу Вам схему соединения ATMega128 и SD карт...

 

 

Так, для справки: нормированная ёмкость стабилитрона BZX84C3V3 на 3.3 вольта при нулевом обратном смещении - 450 пикофарад.

И процессор начинает эти 450 пикофарад через 510 ом заряжать... Ёмкость, разумеется, упадёт до сотни пикофарад при полутора вольтах (когда дойдём до порога переключения логики в карте)... Если ещё где-то нормированы скорости нарастания на клоке...

Я даже не хочу предсказывать, как всё это будет работать в "боевом" применении. И не поможет никакое снижение скорости чередования импульсов - уже завалены фронты сигнала.

 

Не говоря про то, что минимальный уровень логической "1" на входе ATMEGA128 должен быть 0.6 * VCC - что при 5.0 вольтах питания равно 3.0 вольта. Скажем так, запас никакой.

 

Сделайте нормально всё здесь. Самое простое - снизить питание процессора до 3.3 вольта и выкинуть весь этот "огород".

Если нужны 16 МГц - найти слегка другой процессор или применить трансляторы уровней вроде sn74lvc1t45 или что-ибудь специальное, для карточек.

Изменено пользователем IgorKossak
избыточное цитирование

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


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

Так, для справки...
Я тоже ходил по этим граблям. Явно видно осциллографом завал фронта клока. Отказался от стабилитронов. Сделал просто делитель, причем ток через него выбирал побольше, входную емкость карточки тоже надо учитывать. Помогало, но не очень. Были сбои. Поставил параллельно верхнему плечу делителя форсирующую емкость в пару десятков пик - фронт заметно улучшился. Увеличивал емкость электролита возле карточки. Читать-писать стало заметно лучше. Но все равно проблемно. Вывод - или сопрягать уровни микросхемой-согласователем, или переводить МК на 3.3 Как только перевел - все менингиты снялись. В одну телегу впрячь не должно коня и трепетную лань.. :) Гена прав.
Изменено пользователем IgorKossak
избыточное цитирование

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


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

Я тоже ходил по этим граблям...

 

УУУххх....

 

Вместо всех этих делителей и стабилитронов надо использовать резисторы + диоды шоттки закинутые на +питания карточки.

Или вообще не использовать диоды, наверняка они и так в карточке для защиты стоят.

Изменено пользователем IgorKossak
избыточное цитирование

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


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

Так, для справки: нормированная ёмкость стабилитрона BZX84C3V3 на 3.3 вольта при нулевом обратном смещении - 450 пикофарад.

И процессор начинает эти 450 пикофарад через 510 ом заряжать... Ёмкость, разумеется, упадёт до сотни пикофарад при полутора вольтах (когда дойдём до порога переключения логики в карте)... Если ещё где-то нормированы скорости нарастания на клоке...

Я даже не хочу предсказывать, как всё это будет работать в "боевом" применении. И не поможет никакое снижение скорости чередования импульсов - уже завалены фронты сигнала.

 

Не говоря про то, что минимальный уровень логической "1" на входе ATMEGA128 должен быть 0.6 * VCC - что при 5.0 вольтах питания равно 3.0 вольта. Скажем так, запас никакой.

 

Сделайте нормально всё здесь. Самое простое - снизить питание процессора до 3.3 вольта и выкинуть весь этот "огород".

Если нужны 16 МГц - найти слегка другой процессор или применить трансляторы уровней вроде sn74lvc1t45 или что-ибудь специальное, для карточек.

 

Спасибо, Геннадий, за Ваш совет! Он оказался верным.

 

Действительно, убрал стабилитроны и всё заработало. Правда, питание не менял, оставил 5В для Меги и 3.3В для карты.

Инициализация проходит 100% без сбоев, чего раньше на наблюдалось.

Данные пишутся тоже нормально. С чтением, правда, проблемы - с карты 512Мб читается, с карты 2Гб - не читается. Надо разбираться.

 

А по поводу перехода процессора на 3.3В. Дело в том, что это довольно сложное устройство, уже отлаженное, неизвестно как оно

поведёт себя при пониженном напряжении. Над этим надо ещё подумать. Может действительно проще поставить микросхему-согласовватель уровней и оставить всё как есть.

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


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

У HC карточек адресация не смещением, а номером блока. В моём проекте это есть...

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


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

Так 2Гб карточка не должа быть HC.

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...