SPI (Serial Peripheral Interface) : что это такое?
SPI (Serial Peripheral Interface) : что это такое?
Объясните доступным языком что собой представляет SPI (Serial Peripheral Interface)и для чего он нужен (что с ним можно сделать)?
Благодарствую!
Благодарствую!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
SPI - это интерфейс последовательного обмена данными. Использует одну линию для ввода MISO, одну для вывода MOSI и одну для синхронизации SCK, т.е. он трехпроводный. Обмен идет строко синхронно и одновременно (т.е. ввод и вывод происходят одновременно по соответствующим линиям). Дополнительно задействуется еще одна линия, для задания режима работы устройства - ведущий (master) или ведомый (slave). SPI позволяет аппаратно организовать связь ведущий-ведомый или ведущий-много_ведомых, но в этом случае для каждого отдельного ведомого надо тянуть отдельную линию управления.
Скорость обмена по SPI намного выше, чем по UART, однако из-за отсутствия гарантированного метода обнаружения кадра (кадры попросту отсутствуют) крайне неустойчив при наличии помех (особенно по линии синхронизации), т.е. для передачи на большие расстояния не предназначен.
Используется для работы с микросхемами памяти (в частности, карты Mini-SD могут работать по одному из подмножеств протокола SPI), есть и ПЗУ попроще с этим интерфейсом, есть АЦП и ЦАП, можно соединять несколько микроконтроллеров в сеть... У большинства Атмеловских МК через выводы SPI ведется программирование кристалла.
Скорость обмена по SPI намного выше, чем по UART, однако из-за отсутствия гарантированного метода обнаружения кадра (кадры попросту отсутствуют) крайне неустойчив при наличии помех (особенно по линии синхронизации), т.е. для передачи на большие расстояния не предназначен.
Используется для работы с микросхемами памяти (в частности, карты Mini-SD могут работать по одному из подмножеств протокола SPI), есть и ПЗУ попроще с этим интерфейсом, есть АЦП и ЦАП, можно соединять несколько микроконтроллеров в сеть... У большинства Атмеловских МК через выводы SPI ведется программирование кристалла.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- voin
- Нашел транзистор. Понюхал.
- Сообщения: 184
- Зарегистрирован: Пт ноя 10, 2006 16:50:24
- Откуда: Россия Крым Феодосия
Вопрос по теме.
Куда мне подключить MISO а, куда MOSI.
Как я понял MOSI к data out, MISO к data in.
По выводам м.к. получается, SCK к 7, data out к 5, data in к 6.
М.к. ATTINY13.
Схему и распиновку прилагаю, спасибо.
Куда мне подключить MISO а, куда MOSI.
Как я понял MOSI к data out, MISO к data in.
По выводам м.к. получается, SCK к 7, data out к 5, data in к 6.
М.к. ATTINY13.
Схему и распиновку прилагаю, спасибо.
- Вложения
-
- Програматор.rar
- (19.86 КБ) 501 скачивание
Тот кто впереди, всегда боится отстать, - это наш шанс, вот так то.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
MOSI подключать к MOSI, MISO к MISO... MOSI - это "выход ведущего, вход ведомого", MISO - наоборот, "выход ведомого, вход ведущего"... отсюда и плясать. Программатор - это ведущий.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
voin писал(а):Интересно м.к. я мог повредить их перепутав, а ?
Вряд ли... хотя гарантию не дам.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Aheir писал(а):Принцип соединения - как в RS232, т.е. перекрестно
В том-то и дело, что не перекрестно, а как я выше писал: MOSI к MOSI, MISO к MISO.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Нет, один регистр реализован так, что при записи и чтении обращение идет к РАЗНЫМ регистрам. Полный дуплекс - тоже не обман, т.к. по SPI всегда идет ОДНОВРЕМЕННАЯ передача вместе с приемом. Выдал свой байт - значит, уже принял байт от твоего "собеседника".
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Повторяю: отправил байт - можешь читать принятый. пока передаваемый уходил - одновременно приходил принимаемый.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: SPI (Serial Peripheral Interface) : что это такое?
товарищи
нашёл в интернет такой код запись по SPI
вроде бы всё понятно, но вот следующий вопрос вот например у меня адрес и данные равно 0х06. по nsdi я так понимаю будут передаваться данные?или я что-то путаю? для чего nSCK=1; а потом через задержку nSCK=0; как должны передаваться данные в протоколе? какая последовательность? спасибо
нашёл в интернет такой код запись по SPI
Код: Выделить всё
void SPI_WRITE(unsigned char Addr, unsigned char data)
{
unsigned char i=0;
Addr=Addr|0x80; // Старший бит в адресе дб равен 1!!!
nSEL=0;
delay_us(10);
for (i=0; i<8; i++)
{
nSDI=(Addr>>(7-i))&0x01;
delay_us(10);
nSCK=1;
delay_us(30);
nSCK=0;
delay_us(20);
}
for (i=0; i<8; i++)
{
nSDI=(data>>(7-i))&0x01;
delay_us(10);
nSCK=1;
delay_us(30);
nSCK=0;
delay_us(20);
}
nSEL=1; // выборка чипа
delay_us(20);
}вроде бы всё понятно, но вот следующий вопрос вот например у меня адрес и данные равно 0х06. по nsdi я так понимаю будут передаваться данные?или я что-то путаю? для чего nSCK=1; а потом через задержку nSCK=0; как должны передаваться данные в протоколе? какая последовательность? спасибо
Re: SPI (Serial Peripheral Interface) : что это такое?
неужели никто не знает?