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