Обратная связь



Авторизироваться


Нет аккаунта?
Присоединяйтесь



Забыли пароль?
Восстановление пароля

  • :
  • :
Реклама на сайте Контакты Отзывы Обратная связь Войти / Зарегистрироваться

Протоколы связи между цифровыми устройствами: SPI

Присоединяйтесь к нам в соц. сетях!

Спасибо что вы тут. В этой статье я расскажу про популярный интерфейс обмена данными между микросхемами. Специфика его использования связана с тем, что он используется при обмене данными между устройствами, расположенными локально: к примеру, на одной печатной плате. Это связано с тем, что SPI работает на большой скорости и следовательно наличие длинных линий связи может привести к существенному ухудшению качества сигнала.

Для настройки SPI используйте datasheet на ваш контроллер или прочий девайс. В datasheet ищите такой пункт:

17.0 MASTER SYNCHRONOUS SERIAL PORT (MSSP) MODULE.

Подключение происходит следующим образом:

Master module Направление сигнала Slave module
SCK(происходит тактировка) SCK(происходит тактировка)
SDO(выход мастера) SDI(вход слэйва)
SDI(вход мастера) SDO(выход слэйва)

SS(только для slave module. бывает другое название - CS)

В двух словах:

1) Для работы данного интерфейса необходимо: соединить вход CS принимающего устройства и любой выход вашего контроллера и при начале передачи устанавливать его в низкий уровень, а после окончания передачи поднимать.

Ниже приведен скриншот подключения SPI интерфейса.
U1 - мастер, U2 - славе.

схема подключения SPI

Пример функции, осуществляющей передачу данных по SPI я положил в архив. Можете открыть, к примеру блокнотом. Еще я приведу скрин работы SPI, который я симулировал в Proteus.

SPI сигнал

Как обычно прилагаю архив со всеми файлами+проект.
Для просмотра вам понадобится MPlab IDE+proteus.
Моя почта mish-c@yandex.ru/Skype - mr.Hron

Скачать файлы

SPI на pic16f914 HI-Tech компилятор.

Хочу поделиться опытом настройки SPI на pic16f914 контроллере. Для общего, краткого ознакомления можете прочитать выше.

Для настройки SPI используйте datasheet на ваш контроллер или прочий девайс.

Первое что нужно сделать:

Настройка SPI

Код инициализации и пример передачи данных по SPI для pic16f914.

#include <htc.h> //библиотека для проекта
#define _XTAL_FREQ 10000000//необходимая строчка для задержек
#define CS RB7//конструкция замены порта B7 на CS
unsigned char a;//переменная
unsigned char adres;//переменная
void main (void)
{
SCS=0;//указываем на внешнюю тактировку процессора
TRISC7=1;//порт С7 сход
TRISC4=0;//sdo/порт С4 выход
TRISC6=0;//SCK/порт С6 выход
TRISB4=0;//LED/Порт Б4 выход
TRISB7=0;//cs/Порт Б7 выход



//Включаем и настраиваем SPI
SSPBUF=0;//буфер данных очищаем
CKE=1;//смещение SCK относительно SDO
SSPCON=0b00100000;//перепад SCK из высокого в низкий или обратно
//Конец Включаем и настраиваем SPI
while (1)
{
_delay(100);//задержка
CS=0;//управление вниз начало посылки
SSPBUF=0xAA;//передача данных АА
while (BF==0){}//ожидаем пока буфер очистится
a=SSPBUF;//необходимо вычитывать буфер до начала новой записи
CS=1;//управление вверх конец посылки
}
}

Самый интересный момент это настоечные биты SPI:CKE, CKP.Пример их настройки на скриншртах ниже.

SPI_CKE0_CKP0 SPI_CKE0_CKP1 SPI_CKE1_CKP0 SPI_CKE1_CKP1

Как обычно прилагаю архив со всеми файлами+проект.
Для просмотра вам понадобится MPlab IDE+proteus.
Моя почта mish-c@yandex.ru
Skype - mr.Hron

Скачать файлы