Подключение 74HC595D к STM32

stm32_74hc595d

Мне понадобилась такая связка для управления ДПФ, которые я взял от одного трансивера и пытаюсь интегрировать в другой. В исходном трансивере фильтры коммутировались с помощью 74HC595D, которая в свою очередь получает управляющие сигналы от LPT-порта.

А в данный момент я хочу приспособить эти фильтры к трансиверу где управление реализовано через выходы ПЛИС, а затем по задумке автора эти сигналы идут в PIC и далее через ключи должны коммутировать фильтра.

Поэтому я решил вместо PIC взять STM и она уже будет выступать адаптером сигналов между ПЛИС и 74HC595D.

До этого момента я не проектировал ничего с использованием 595й, в готовые проекты просто запаивал не задумываясь и всё это прекрасно работало, я понимал, что данная микросхема выступает расширителем GPIO в любом МК. Но как именно это работает, я не задумывался. А тут на руках оказал плата с ДПФ, очень качественными и как раз таки они переключаются через данный сдвиговый регистр.

Общие принципы работы 74HC595D

Данный сдвиговый регистр принимает входные данные в последовательном виде, используя при этом всего три вывода, а выдает — в параллельном на восьми выводах.

Это позволяет, управлять например 8 светодиодами или реле используя три вывода микроконтроллера.

 Также можно несколько регистров 74HC595 подключать последовательно, что позволит увеличить количество выводов до 16, 24, 32 или больше выводов, используя также всего 3 выход МК.

Таким образом подавая на входы SH_CP, ST_CP, DS определённые биты, мы можем включать один\несколько или все Q-выводы микросхемы 74HC595D.

После того как я разобрался с этими принципами работы сдвигового регистра, я решил написать простенькую программу под STM32F103, чтобы попробовать на практике как это работает. Сдвигового регистра под рукой не было, а из платы выпаивать не хотелось. Решил посмотреть есть ли он и stm в симуляторе Proteus. Оказалось, что есть.

Быстренько накидал схему

И взялся за написание программки под STM. В CubeMX сконфигурировал выводы МК, выставил режимы и добавил FreeRTOS. Проект сгенерировал под Keil и сделал всего один таск, который с задержкой сдвигает бит у значения, которое, затем подаётся 74HC595D.

И всё это не заработало в симуляции, хотя на dev-плате заработало. Предположил, что проблема может быть в использовании RTOS, тяжеловато это для симуляции. Убрал из проекта RTOS и всё заработало в симуляции.

Коротенькое видео этой лабораторной работы

Datasheet 74HC595D

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *