Gtlab Forum
Тематический => Негитарная электроника => Тема начата: yjm от Сентября 11, 2008, 06:38:07 pm
-
Как лучше всего организовать подключение нескольких (от 3 до 10) слейвов к одному мастеру через SPI для ATmega32 ?
Мастер будет инициализировать обмен данными.
-
Ставишь дешифратор (например 74HC138 3->8) и подключаешь входы A0-2 и CS на порт, выходы на CSы слейвов.
DI, DO, SCK у всех слейвов в параллель и на атмегу.
PS Если лишних портов много, можно обойтись без дишака, заведя CSы слейвов прямо с портов.
-
Где мне можно найти пример полной настройки контроллера включая различные заголовки для SPI передачи данных ?
И еще:
Есть ли смысл качать AVRStudio ? Чего в нем хорошего ?
Что за расширения файлов .eww, .c, .dep, .ewd, .ewp ?
В датащите написано че то про резисторы:
The ability to connect several devices to the same SPI-bus is based on the fact that only
one master and only one slave is active at the same time. The MISO, MOSI and SCK
lines of all the other slaves are tristated (configured as input pins of a high impedance
with no pullup resistors enabled). A false implementation (e.g. if two slaves are activated
at the same time) can cause a driver contention which can lead to a CMOS latchup state
and must be avoided. Resistances of 1 to 10 k ohms in series with the pins of the SPI
can be used to prevent the system from latching up. However this affects the maximum
usable data rate, depending on the loading capacitance on the SPI pins.
Ни как не пойму о чем речь.
-
Перевод:
Возможность подкдючения нескольких устройств на одну шину SPI базируется на том, что одновременно активны только один "master" и один "slave". Выходы MISO, MOSI and SCK всех остальных "slaves" находятся в третьем состоянии (сконфигурированы как входные сигналы с высоким сопротивлением без резисторов подтяжек).
Необходимо избегать неправильной реализации (когда одновременно активны несколько "slaves"), которая может вызвать конфликт выходов, который может вызвать тиристорное "защелкивание".
Можно использовать последовательные резисторы 1-10к на линиях SPI для предотвращения тиристорного "защелкивания".
Однако это снижает максимальную скорость передачи, в зависимости от емкости линий SPI.
PS Если только один "master" конфликт может произойти толко на линии MISO (вход "master" и выходы "slaves")
Эта ситуация легче всего решается дешифраторомдля управленя CSами "slaves", так как одновременно только один из его выходов может находиться в активном состоянии.
-
ааа точно ! Теперь все стало ясно. Спасибо.
А как на счет типовой программы для передачи по SPI ? Вообще как правильно подходить к решению такого рода задач ?