Как подключить сдвиговый регистр к Arduino

Сегодня мы разберем как и что можно сделать с подключение сдвигового регистра на Arduino. Картинки и видео прилагаются к статье. Не забывайте писать в комментариях!

Тебе понадобится

  • - Ардуино;
  • - сдвиговый регистр 74HC595;
  • - соединительные провода.


Руководство

1. Регистр сдвига 74HC595 используются как устройства для преобразования последовательных данных в параллельные и могут также использоваться как «защелка» для переноса данных в состояние. 


Схема проводов («распиновки») показана на рисунке слева. Их цель:

Q0 ... Q7 выводит параллельные данные; 
GND - земля (0 В); 
Q7 ' выводит последовательные данные; 
^ MR - основной сброс (активный низкий); 
SHcp - это тактовый вход сдвигового регистра; 
STcp - ввод часов «блок»; 
^ OE - разрешение выхода (активный низкий); 
Ds - входные последовательные данные; 
Vcc - блок питания +5 В. 

Структурно чип выполняется в нескольких типах случаев; Я буду использовать тот, который показан справа, - потому что его легче использовать по совету других разработчиков.

2. Вкратце напомню о SPI последовательного интерфейса, который мы будем использовать для передачи данных в регистр сдвига. 

SPI - это четырехпроводный двунаправленный последовательный интерфейс, на котором присутствуют ведущий и ведомый. Ведущим в нашем случае будет Arduino, подчиненный регистр 74HC595. 

Среда разработки для Arduino имеет встроенную библиотеку, которая работает с интерфейсом SPI.Его применение будет использовать результаты, которые отмечены на рисунке: 

SCLK - это SPI выходного тактового сигнала; 

MOSI - данные от ведущего устройства к подчиненному устройству; 

MISO - данные от подчиненного устройства к ведущему; 

SS - выбор подчиненного устройства.

3. Положим схему так, как на рисунке. 

Я также подключу ко всем ногам чипа логического анализатора сдвигового регистра. С его помощью мы увидим, что происходит на физическом уровне, какие сигналы куда идут, и выяснить, что они означают. Это будет выглядеть как на фотографии.

4. Напишите здесь эскиз и загрузите в память Arduino. 

Переменная PIN_SPI_SS является внутренней стандартной константой, которая соответствует выходу «10» при использовании Arduino в качестве интерфейса SPI ведущего устройства, который мы здесь используем. В принципе, мы могли бы использовать любой другой цифровой выход Arduino; то нам пришлось бы объявить об этом и установить его режим работы. 

Подача на этот вывод LOW, мы ускорим наш сдвиговый регистр до приема / передачи. После передачи мы снова поднимаем напряжение до HIGH, и обмен заканчивается.

5. Включите нашу схему работы и посмотрите, что покажет нам логический анализатор. Общий вид временной диаграммы на рисунке. 
Синяя пунктирная линия показывает 4 линии SPI, пунктирные красные - 8 каналов параллельных данных сдвигового регистра. 
Точка A на временной шкале - это время передачи в сдвиговом регистре числа «210», B - время записи «0», C - повторный цикл с начала. 
Как видно, от A до B - 10,03 миллисекунды, а от B до C - 90,12 миллисекунды, почти так, как указано в эскизе. Небольшая добавка 0,03 и 0,12 MS является временем последовательных данных от Arduino, поэтому мы не точно 10 и 90 MS.

6. Рассмотрим график А

В верхнем - длинном импульсе, который Arduino инициализирует линию передачи SPI-ENABLE - подчиненный выбор. В это время начните генерировать часы SPI-CLOCK (вторая строка сверху), 8 штук (за 1 байт). 

Следующая строка - SPI-MOSI - это данные, которые мы передаем от Arduino к регистру сдвига. Это наш номер «210» в двоичном формате «11010010». 

После того, как передача завершена, конец импульса SPI является ENABLE , мы видим, что сдвиговый регистр помещается на его 8 ногах одинакового значения. Я выделил его в синей пунктирной линии и подписанные значения для ясности.

7. Теперь давайте посмотрим на график B

Опять же, все начинается с выбора подчиненного устройства и генерирует 8 тактовых импульсов. 

Данные на линии SPI-MOSI теперь «0». То есть, мы записываем это время в номер регистра «0». 

Но до тех пор, пока передача обслуживания не будет завершена, зарегистрированное значение регистра «11010010». Кажется, он параллелен выводам Q0..Q7 и выдается при наличии тактовых импульсов в линиях c параллельным выходом Q7 ' в линии SPI-MISO , что мы видим.

8. Таким образом, мы рассмотрели вопрос об обмене информацией между мастером, который был сделан с помощью Arduino и сдвиговый регистр 74HC595. Узнали, как подключить сдвиговый регистр для хранения данных и чтения данных из него.

Похожие материалы