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

  • — Ардуино;
  • — сдвиговый регистр 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. Узнали, как подключить сдвиговый регистр для хранения данных и чтения данных из него.