Top.Mail.Ru
Уведомления
Очистить все

[Решено] STM32 подключение каскада HC595 + HC165 + HC 4051

(@fedor-2)
New member

всем добрый день!

я собираю устройство (контроллер полива) в следующем составе:

1.микроконтроллер

2. каскад микросхем HC595 (3 шт.) плюс HC165

- это всё для "обслуживания": одной матричной клавиатуры; восьми эл. магнитных клапанов полива ; и ещё нескольких клапанов, насосов и возможно электродвигателей.

3. и каскад микросхем расширения аналоговых портов HC 4051 - это для аналоговых датчиков влажности, уровня воды и пр.

Первоначально всё делал под Ардуино (поэтому столько расширителей портов).

4. и прочие устройства (LCD, модуль времени, микросхемы ЕЕПРОМ 256 или 512)

практически написал весь код (под Ардуино), осталось дописать несколько функций (настройка полива). На Арудино практически работало.

Но дописать код не получилось, т.к. в Ардуино не входит такой большой код))) ресурсы оказались крайне ограниченными.

Решил перенести всё дело на STM32.

Это оказалось не так просто, объём работы такой же. Пришлось всё начинать "с нуля".

На настоящий момент удалось на STM32:

- подключить LCD, но без кириллицы!, с Ардуино было проще сделать кириллицу. Под STM32 перепробовал всё что нашел в интернете, ни чего не подошло (выходят всякие козябры, но это потомм можно будет доработать);

- подключить и освоить работу каскада из3-х HC595.

Затык возник с HC165. Без нормальной связки HC595 и HC165 матричная клавиатура не работает. Информации в интернете мало.

Вопрос: кому нибудь удавалось "подружить"  STM32 с каскадом HC595 и несколькими HC165 ?

при этом, чтобы Latch (это пин 12 микросхемы HC595 и  пин 2 микросхемы HC165) были на одном проводе и подключены к одному пину STM32.

 

Цитата
Создатель темы Размещено : 23.04.2024 12:09
Метки темы
Aveal
(@aveal)
Top level Admin

Доброго времени суток!

Мне кажется тут проще с нуля написать будет, чем готовое искать, и дальше уже смотреть, будут ли какие-то проблемы.

ОтветитьЦитата
Размещено : 23.04.2024 13:43
(@fedor-2)
New member

@aveal 
я совсем не программист, моя работа даже "не рядом"))
поэтому написание с нуля, для меня очень трудозатратно.
занимаюсь этим вопросом только 1 год , в свободное время по выходным дням.
больше полугода ушло только на условие освоение Ардуино - и чтобы там эта часть "изделия" заработал.

Там (на ардуино) есть конечно баги, но их можно доделать. Только на Ардуино уже не доделаешь)) так как дошло до 95% занятой памяти
есть 2 варианта - либо разделить проект и соединить 2 Ардуинки
либо освоить STM32
Думаю с STM32 будет более перспективно для дальнейшего использования моего устройства (и его усложнения).

короче - HC595 работает, осталось чтобы заработало HC165.
в выходные ломал голову вот с таким вариантом кода:

// непосредственно сам код "запуска" HC165 на китайской STM32А411XX  

// и при этом эту часть кода ""проверил" тестером и показало, что кусок

// "GPIO_PIN_14, GPIO_PIN_RESET" - "GPIO_PIN_14,  GPIO_PIN_SET" работает!

//  так как на ножке B14 есть изменение напряжения 0 - до 1 или 2 Vб то есть ножка "дрыгается"

 
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_15); // Считывания состояния пина 15
pin_165 [0] = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_15);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);

// этот кусок кода для отладки, проверки - посредством вывода через UART

uint8_t datB;
if (pin_165 [0] == 1)
{
datB=1;
}
else {datB=0;}

uint8_t strIng_B[50]; // буфер для числа в виде строки, 10 символов для максимального 32 бит числа + 1 для terminate символа
sprintf (strIng_B, "%d", datB);
HAL_UART_Transmit(&huart1, (uint8_t*) strIng_B, strlen(strIng_B), HAL_MAX_DELAY);

в Итоге проверка тестером показала, что:

при нажатии на клавиатуру на ножке № 9 микросхемы HC165 не происходит ни каких изменений (там всегда "0") и поэтому на ножку 15 STM32 ни чего не приходит. При этом на ножки A, B, C, D ... (или 11, 12, 13, 14 , 1, 2, 3, 4) сигнал при нажатии на клавиатуру приходит!

то есть HC595 отрабатывает свою функцию и передает "сигналы" как положено (проверено в том числе с помощью подключения матрицы со светодиодами)

Таким образом, вывод:

какая то проблема с ножками № 1 или 2 микросхемы HC165 , которые не отрабатывают своих функций и ни чего не происходит.

Pin 2 hc165 Общий с pin 11 hc595 – и подключен к A5 (SCK1) (там включена SPI1)

может у кого нибудь будут какие нибудь идеи?))

не хотелось запускать SPI 2 или 3 и переделывать схему))

ОтветитьЦитата
Создатель темы Размещено : 23.04.2024 14:05
Aveal
(@aveal)
Top level Admin

Сложно так диагностировать, что потенциально не так могло пойти... тут уже копаться надо.

ОтветитьЦитата
Размещено : 24.04.2024 12:33
Поделиться: