roboforum.ru

Технический форум по робототехнике.

Согласование уровней / Развязка / SDCard

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Согласование уровней / Развязка / SDCard

Сообщение HarryStar » 22 дек 2010, 11:45

Подключаю к своему детищу SD Карту.
Вопросов 3:
1) Схема отлично работает как от 3.3В, так и от 5В. Хотя везде написано, что SD карта от 5В неработает. Есть опасность что она сгорит? Мне нужно чтоб МК питался от 5В. Так ли обязательно делать 3.3 на карту?

2) Т.к. карта подключена к тем же проводкам, что и программатор "5 проводков", то для программирования карту приходится вынимать, иначе идут ошибки при прошивании. Как можно развязать это дело, чтоб не передергивать карту?

3) Без согласования уровней (см пункт 1) все прекрасно работает. Пробую питать мк 5в, карту 3.3в и согласовывать уровни резистором 10к и стабилитроном на 3.3 - получается "ошибка инициализации диска". В чем может быть проблема? и как лучше сделать? Читал форум, некоторые делают просто резистивным делителем 3к+2к.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Согласование уровней / Развязка / SDCard

Сообщение =DeaD= » 22 дек 2010, 12:00

Схема согласования 3.3В и 5.0В для SD-карт есть тут: http://www.sparkfun.com/products/9802
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Согласование уровней / Развязка / SDCard

Сообщение Michael_K » 22 дек 2010, 12:32

HarryStar писал(а):Есть опасность что она сгорит? Мне нужно чтоб МК питался от 5В. Так ли обязательно делать 3.3 на карту?

да. да.
HarryStar писал(а): Как можно развязать это дело, чтоб не передергивать карту?

поставить в середину буфер с третьим состоянием (но по-моему дергать карту проще :) )
HarryStar писал(а):Пробую питать мк 5в, карту 3.3в и согласовывать уровни резистором 10к и стабилитроном на 3.3 - получается "ошибка инициализации диска". В чем может быть проблема?

уменьшите резистор ом до 470
HarryStar писал(а):Читал форум, некоторые делают просто резистивным делителем 3к+2к.

можно, но
1. слегка ограничивает скорость.
2. из 3.3 сделать 5 не получится (впрочем как и стабилитронами).

Правильно для этих целей использовать специальные микросхемы -
их сейчас многие делают, гуглить "level translator"
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Согласование уровней / Развязка / SDCard

Сообщение Myp » 22 дек 2010, 14:57

прошивать надо через бутлоадер :)
USB шнурок ну или на крайняк по усарту лить.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Согласование уровней / Развязка / SDCard

Сообщение HarryStar » 22 дек 2010, 15:21

Michael_K писал(а):уменьшите резистор ом до 470

Номинал 10к я взял из mmc.h там схема подключения текстом была вот такая
Код: Выделить всёРазвернуть
     _________________
    /  1 2 3 4 5 6 78 |
   / 9                |   1 - CS   (chip select)          <- SS
   |    SD/MMC Card   |   2 - DIN  (data in, card<-host)  <- MOSI
   |                  |   3 - VSS  (ground)               -- ground
   |                  |   4 - VDD  (+3.3V)             -- power
   |                  |   5 - SCLK (data clock)           <- SCK
   |                  |   6 - VSS  (ground)               -- ground
   |                  |   7 - DOUT (data out, card->host) -> MISO
   |                  |    SD card only:
   |                  |    8 - not used in SPI, mode must be pulled up
   |                  |    9 - not used in SPI, mode must be pulled up
   |__________________|
   
   5V logic to 3.3V:
   
5V >-|R1|--+-->  3.3V
           |              R1    - 10k
           ^ VD1          VD1   - BZX55C3V3
           |
          ---
         GND

попробую уменьшить резистор
HarryStar писал(а):Читал форум, некоторые делают просто резистивным делителем 3к+2к.

Michael_K писал(а):можно, но
1. слегка ограничивает скорость.
2. из 3.3 сделать 5 не получится (впрочем как и стабилитронами).


1. Почему? Я думал всякие буферные элементы могут ограничивать скорость, но никак не резисторы.
2. Там и не надо, лог 1 от 3.3в мк с питанием 5в отлично понимает, а вот наоборот получается плохо.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Согласование уровней / Развязка / SDCard

Сообщение Michael_K » 22 дек 2010, 16:23

0.
HarryStar писал(а):Номинал 10к я взял из mmc.h там схема подключения текстом была вот такая

Да где вы эти схемы откапываете-то, блин? кто их рисует? голова должна быть или как?

Стабилитрон начинает работать при единицах миллиампер
(ну... типичный... а тем более такой... поганенький как bzx55 )
У вас он должен якобы работать при (5V-3.3V)/10k = 170 микроампер...
Это на порядок меньше штатного режима.
Что там на стабилитроне в результате, думаю даже производитель не скажет
(у стабилитронов разбросы параметров огромные).

HarryStar писал(а):
Michael_K писал(а):1. слегка ограничивает скорость.
Почему? Я думал всякие буферные элементы могут ограничивать скорость, но никак не резисторы.

Потому что емкости между всем и всем никто не отменял.
Пусть у вас на ноге карточки висят паразитные 10 пикофарад... Берете резистор 10 килоом - получаете постоянную времени R*C = 100 наносекунд - то есть про 10 мегагерц сразу забываем...
Буферные элементы вносят задержки, а не валят фронты. Загнал на вход 10 мегагерц - получил с выхода 10 мегагерц, пусть с задержкой, но красивые квадратные (это грубо, но суть такая примерно).

HarryStar писал(а):2. Там и не надо, лог 1 от 3.3в мк с питанием 5в отлично понимает, а вот наоборот получается плохо.

да ради бога :)
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Согласование уровней / Развязка / SDCard

Сообщение HarryStar » 24 дек 2010, 11:15

Michael_K писал(а):Да где вы эти схемы откапываете-то, блин? кто их рисует? голова должна быть или как?

Ну была бы голова, не спрашивал бы.

Замена резисторов на 510 Ом помогла, все заработало, спасибо.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Согласование уровней / Развязка / SDCard

Сообщение Michael_K » 24 дек 2010, 15:34

Да не за что...

HarryStar писал(а):
Michael_K писал(а):Да где вы эти схемы откапываете-то, блин? Голова должна быть или как?

Ну была бы голова, не спрашивал бы.


Ну, извините, если грубо прозвучало. Это не лично к вам относилось.
Просто "наболело" - это же не в первый раз.
Кто-то рисует кривую схему, и она по инету расползается...
Такое ощущение, что все тупо копируют,
никто даже не пытается проверить или осмыслить.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Согласование уровней / Развязка / SDCard

Сообщение Myp » 24 дек 2010, 17:35

Michael_K писал(а):никто даже не пытается проверить или осмыслить.

99% интернета именно по аткому принципу и работает :D
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Согласование уровней / Развязка / SDCard

Сообщение Michael_K » 24 дек 2010, 18:04

Ну что тут скажешь - молодцы, так держать. Меньше народу - больше кислороду.
Только не надо потом на форумах плакать, что ничего не работает.

Добавлено спустя 6 минут 2 секунды:
Самое прикольное, что они даже программы так пишут.
И даже "теорию" подвели и умных слов придумали - "реюзибл", типа.
Копируют баги, копируют морально устаревшие и просто ненужные куски.
И гордятся тем, что баги их становятся "кроссплатформенными".

Осознать каждую строчку? Зачем? Этим пусть индусы занимаются.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Согласование уровней / Развязка / SDCard

Сообщение Marvin » 01 окт 2012, 00:24

Michael_K писал(а):
HarryStar писал(а):
Michael_K писал(а):1. слегка ограничивает скорость.
Почему? Я думал всякие буферные элементы могут ограничивать скорость, но никак не резисторы.

Потому что емкости между всем и всем никто не отменял.
Пусть у вас на ноге карточки висят паразитные 10 пикофарад... Берете резистор 10 килоом - получаете постоянную времени R*C = 100 наносекунд - то есть про 10 мегагерц сразу забываем...
Буферные элементы вносят задержки, а не валят фронты. Загнал на вход 10 мегагерц - получил с выхода 10 мегагерц, пусть с задержкой, но красивые квадратные (это грубо, но суть такая примерно).

Проезжая мимо магазина вспомнил, что хотел подключить SD-карту. Номиналов резисторов я не помнил, но помнил, что нужны 3.3в. В результате расчета получились резисторы 47к и 91к. В тестовом скетче (arduino) наблюдаю сообщение что карта не найдена. В схеме которая бродит по сети "немного" другие номиналы :oops:
Изображение
Аватара пользователя
Marvin
 
Сообщения: 40
Зарегистрирован: 11 апр 2011, 21:31
Откуда: Россия, Москва, Ярославль
прог. языки: Кроме C# и Basic


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32