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

 
 
> Подключение АЦП и датафлэш(АТ45) к SPI
AndV
сообщение Mar 2 2007, 10:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 7-12-05
Пользователь №: 11 909



Здравствуйте!
Возможно, глупый вопрос (если что, сильно не ругайтесь), но все же...
Есть АЦП и датафлэш - оба SPI.
Как грамотно подключить к Меге128?
Повесить их параллельно на моси-мисо?
(Если так, то как выбирать, с кем работать?)
Один повесить на аппартный SPI, второй на программный?
С SPI-ем не работал... (описание обязательно почитаю, но пока с подключением помогите smile.gif

Заранее спасибо.

PS. Да, чуть не забыл, датафлэш 3.3В (мне кажется, это важно)
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 20)
Nanobyte
сообщение Mar 2 2007, 11:16
Сообщение #2


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Цитата(AndV @ Mar 2 2007, 10:22) *
... Да, чуть не забыл, датафлэш 3.3В (мне кажется, это важно)

Вот здесь есть пример согласования 3.3в DF с 5-ти вольтовыми системами:
http://www.gaw.ru/html.cgi/txt/app/Atmel/m...y/at45db_5v.htm

Соединить все MISO, MOSI и SCK. Выбор нужной микросхемы осуществлять их сигналом /CS. Если они работают не одновременно, для управления можно использовать просто линии портов. Но лучше, конечно использовать дешифратор на 2 выхода, который стробируется выходом /SS у микроконтроллера.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
vooon
сообщение Mar 2 2007, 11:17
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 27-06-06
Из: Msk
Пользователь №: 18 401



у АЦП и флешки есть выводы /CS - выбор чипа, нулем.
а линии MISO, MOSI, SCK параллельно.

пока чип не выбран (CS=1) DO в Z состоянии.


Nanobyte одновременно c тобой писал smile.gif
Go to the top of the page
 
+Quote Post
AndV
сообщение Mar 2 2007, 11:34
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 7-12-05
Пользователь №: 11 909



Спасибо за оперативные ответы!!!
Оказывается, все просто.
Chip Select как-то ускользнул от меня smile.gif
Если я правильно понял, заводим по линии порта на CS каждой
микросхемы, а SPI-сигналы параллелим.
Когда на CS "1" - микросхема, грубо говоря, отключена?
А вот с дешифратором и стробированием сигналом SS не совсем понятно.
Как это работает и почему так лучше?
Вопрос экономии ног Меги не стоит.
И работают АЦП и флешка не одновременно, сначала АЦПирование затем сохранение во флеше.

Еще раз спасибо!
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Mar 2 2007, 12:00
Сообщение #5


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Да, это я наверное, перегнул. В вашем случае можно спокойно выделить каждому устройству по линии /CS, и управлять ими в нужный момент перед обменом по SPI. Когда на /CS единица, устройство не реагирует на поток байтов и отключено от выходной шины, как уже написал vooon . Тот усложнённый способ удобно применять, когда используется куча устройств, ну и обмен данными по SPI программировать немного проще , то-есть вывел номер требуемого устройства в порт и всё. Стробирование /SS производится только в подпрограмме ввода/вывода.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Mar 2 2007, 13:46
Сообщение #6


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(AndV @ Mar 2 2007, 11:34) *
А вот с дешифратором и стробированием сигналом SS не совсем понятно.
Как это работает и почему так лучше?
Еще раз спасибо!

Если гарантируете неодновременную работу 2 устройств не заморачивайтесь. Это нужно было бы, чтоб никогда не было одновременно сгналов CS
Go to the top of the page
 
+Quote Post
Tcom
сообщение Mar 3 2007, 09:18
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



А на ногу SS если вы используете ATmega128 в режиме мастер, нужно подать лог 1 соединив её с +Uпит, или сделав выходом управлять одним из /CS Data Flash или АЦП. Я лично для согласования уровней в Dataflash использую резисторный делитель напряжения 2,2к и 3,3. А питаю память от стабилизатора 3.3В
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Mar 3 2007, 12:19
Сообщение #8


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Цитата(Tcom @ Mar 3 2007, 09:18) *
... А на ногу SS если вы используете ATmega128 в режиме мастер, нужно подать лог 1 соединив её с +Uпит...

Нельзя так делать. Как минимум соединить с питанием через резистор. А ещё лучше, использовать по прямому назначению, или просто в качестве линии выхода.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
Tcom
сообщение Mar 3 2007, 14:23
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Цитата(Nanobyte @ Mar 3 2007, 13:19) *
Цитата(Tcom @ Mar 3 2007, 09:18) *
... А на ногу SS если вы используете ATmega128 в режиме мастер, нужно подать лог 1 соединив её с +Uпит...

Нельзя так делать. Как минимум соединить с питанием через резистор. А ещё лучше, использовать по прямому назначению, или просто в качестве линии выхода.

Да правельно через резистор.
Но хотя я пробовал и напрямую, ничё работает, уже около 2х лет такое устройство.
Но это у меня, а так конечно же через резистор.

Сообщение отредактировал Tcom - Mar 3 2007, 14:24
Go to the top of the page
 
+Quote Post
prottoss
сообщение Mar 3 2007, 18:51
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Tcom @ Mar 3 2007, 13:18) *
А на ногу SS если вы используете ATmega128 в режиме мастер, нужно подать лог 1 соединив её с +Uпит, или сделав выходом управлять одним из /CS Data Flash или АЦП. Я лично для согласования уровней в Dataflash использую резисторный делитель напряжения 2,2к и 3,3. А питаю память от стабилизатора 3.3В
А зачем резисторы для согласования уровней? У АТ45 входы можно подключать к 5-вольт выходам КМОП/ТТЛ:

Цитата
5.0V-tolerant inputs: SI, SCK, CS, RESET and WP pins
- это из секции Features .


--------------------
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Mar 3 2007, 18:54
Сообщение #11


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Соединять напрямую с +5 нежелательно потому, что во время отладки или при наличии ошибок в программе можно запросто вывести в порт нулевое значение при настройке его на вывод, тогда запах шашлыка обеспечен smile.gif Проще всего настроить порт на вывод. Так, кстати, и даташит рекомендует.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
Tcom
сообщение Mar 5 2007, 09:40
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Цитата(Nanobyte @ Mar 3 2007, 19:54) *
Соединять напрямую с +5 нежелательно потому, что во время отладки или при наличии ошибок в программе можно запросто вывести в порт нулевое значение при настройке его на вывод, тогда запах шашлыка обеспечен smile.gif Проще всего настроить порт на вывод. Так, кстати, и даташит рекомендует.


Ну незнаю у меня всегда все просчитано....
И запах шашлыка тоже....

Цитата
5.0V-tolerant inputs: SI, SCK, CS, RESET and WP pins


Наверно следует сказать что питание DataFlash нада делать с стабилизатора 3.3 В, а остальные выводы подключать напрямую?
Тогда зачем написаны апликухи для согласования уровней?
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Mar 5 2007, 11:10
Сообщение #13


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Цитата(Tcom @ Mar 5 2007, 09:40) *
... Ну незнаю у меня всегда все просчитано....
И запах шашлыка тоже....

За Вас можно только порадоваться, но почему-то все разработчики стараются избегать подобных ситуаций. Для домашних изделий это, может быть, и допустимо, но при решении задач для заказчика есть ещё тех.контроль, который это просто не пропустит.

Цитата
... Тогда зачем написаны апликухи для согласования уровней?

Слово TOLERANT имеет основное значение ТЕРПИМЫЙ. При подаче повышенного напряжения микросхема не сгорит, даже будет работать. Но для постоянного применения уровни всё-таки нужно согласовывать. (Ведь и в автомобиле можно ехать 40 км/ч на 1-й передаче smile.gif )


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
Tcom
сообщение Mar 5 2007, 11:55
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Про резисторы понятно, я просто так сказал что будет работать, я знаю что ставить резисторы нужно и тоже являюсь разработчиком и у нас тоже есть контроль на всё это дело. Просто человек спросил в начале как подключить...
Вот и посеветовать эму нужно как...
И самый экономичный способ это резисторы я именно делаю
Привожу схему согласователя может все знают а может и нет..
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
GDI
сообщение Mar 5 2007, 12:46
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



У АТ45 все входы позволяют подключаться напрямую к 5в сигнадам, вот только логические уровни на выходе SO при 3.3в питании, вернее даже, уровень логической "1" не будет попадать в диапазон напряжений для лог "1" меги при питании от 5в, вот по-этому для этого, одного сигнала и надо делать согласование уровня и для этого есть специальные микросхемы 74HC1G125 - один лог элемент в корпусе сот23-5, никто, конечно, не мешает поставить и 74НС125 в СО14, если место позволяет.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Andreas1
сообщение Mar 5 2007, 12:56
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 446
Регистрация: 12-03-06
Из: Москва
Пользователь №: 15 142



Цитата
У АТ45 все входы позволяют подключаться напрямую к 5в сигнадам, вот только логические уровни на выходе SO при 3.3в питании, вернее даже, уровень логической "1" не будет попадать в диапазон напряжений для лог "1" меги при питании от 5в,

Уровень лог.1 на входе меги начиная примерно 1..1,2В при 5в питении. Так что тут проблем не может быть.
Go to the top of the page
 
+Quote Post
Tcom
сообщение Mar 5 2007, 13:02
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



А в DataFlash может быть открытый эмитер, если это так то подключив внутрений подтягивающий резистор в AVR, можно присоединять SO напрямую к ноге контроллера.
У меня работает таким образом...
Может неправ поправте.
Go to the top of the page
 
+Quote Post
GDI
сообщение Mar 5 2007, 14:25
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
Уровень лог.1 на входе меги начиная примерно 1..1,2В при 5в питении.

Читайте внимательно даташиты, раздел DC Characteristics, Input High Voltage = 0.6Vcc, минимально, что при питании 5в даст 3в, а сколько сможет на выходе дать АТ45 при 3.3в питании? Даташита на АТ45 под рукой нет, но на память вроде Vcc-0.3 - тоже 3 в. Т.е. никакого запаса на разброс стабилизаторов, пульсаций по питанию и т.п.
Цитата
А в DataFlash может быть открытый эмитер, если это так то подключив внутрений подтягивающий резистор в AVR, можно присоединять SO напрямую к ноге контроллера.
У меня работает таким образом...

Работает, если напряжение питания меги , допустим, 4.9в и то на грани. В пром электронике такое недопустимо по соображениям помехозащищенности и температурного диапазона, да и повторяемость изделия под вопросом, если купить другую партию стабилизаторов, которые будут давать, к примеру 5.2в. К слову, на выходе АТ45 отнють не ОК, а полноценный КМОП каскад на 2х транзисторах.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Andreas1
сообщение Mar 5 2007, 15:02
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 446
Регистрация: 12-03-06
Из: Москва
Пользователь №: 15 142



Цитата
Читайте внимательно даташиты, раздел DC Characteristics, Input High Voltage = 0.6Vcc, минимально, что при питании 5в даст 3в,

А на
Figure 155. I/O Pin Input Threshold Voltage vs. VCC (VIH, I/O Pin Read as “1”)
порог в 1,8В
А реально мега переключается при 1..1,2 В причем мало зависит от температуры.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Mar 5 2007, 15:58
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(GDI @ Mar 5 2007, 16:46) *
У АТ45 все входы позволяют подключаться напрямую к 5в сигнадам, вот только логические уровни на выходе SO при 3.3в питании, вернее даже, уровень логической "1" не будет попадать в диапазон напряжений для лог "1" меги при питании от 5в, вот по-этому для этого, одного сигнала и надо делать согласование уровня и для этого есть специальные микросхемы 74HC1G125 - один лог элемент в корпусе сот23-5, никто, конечно, не мешает поставить и 74НС125 в СО14, если место позволяет.
А не надо ничего согласовывать, достаточно подтяжки вывода SO к 5V VCC через резистор 4,7 - 10 кОм. При лог.1 будет "почти" VCC5V, при нуле - нуль smile.gif Хотя у меня при питании 3 вольт прекрасно работает без подтяжки... Но это не серия а полигон


--------------------
Go to the top of the page
 
+Quote Post
GDI
сообщение Mar 5 2007, 16:24
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
А на
Figure 155. I/O Pin Input Threshold Voltage vs. VCC (VIH, I/O Pin Read as “1”)
порог в 1,8В
А реально мега переключается при 1..1,2 В причем мало зависит от температуры.

Да, действительно так, но 0,6Vcc - это гарантированное напряжение лог единицы.
Цитата
А не надо ничего согласовывать, достаточно подтяжки вывода SO к 5V VCC через резистор 4,7 - 10 кОм. При лог.1 будет "почти" VCC5V, при нуле - нуль

Можно и так, но лично мне такой вариант не нравится наличием втекающих токов в АТ45 и как следствие нагрев, повышенное потребление и т.д. и т.п. К тому же если верить Andreas1 и Тсом, то вообще можно ничего не ставить smile.gif В общем вариантов согласования может быть множество и выбор здесь остается за разработчиком.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 3rd July 2025 - 04:39
Рейтинг@Mail.ru


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