Когда в проекте появляется небольшая периферия, не хочется сильно погружаться в логику ее работы. Хорошо было бы сделать так: подключил и все работает. В данном случае, речь о 7-сегментном индикаторе из четырех цифр, который нужно было использовать в некоем приборчике с контроллером STM32F103C8T6 на борту.
Быстро конечно не получилось, определенное погружение было. Индикатор выбирал с минимумом интерфейсных цепей, после чего на AliExpress заказал
вот такой. Дисплей работает по последовательному интерфейсу по двум цепям: данные DIO и синхронизация CLK. Ну и соответственно ему нужно 5V.
Чтобы не вникать в особенности протокола обмена (как и что на нем зажигается), поискал и
готовые исходники программы (драйвера, назовем ее так) для работы с TM1637. Именно этот чип стоит на платке индикатора и делает всю работу.
Дальше сама процедура.
Подключаем DIO и CLK индикатора к любым GPIO выводам STM32: да-да, именно так, никакой UART здесь не нужен. Всю временную последовательность обеспечивают функции драйвера. Подаем на индикатор питание 5V. На этом аппаратное сопряжение завершено.
Теперь, в драйвере ищем строчки
#define CLK_PORT GPIOA
#define DIO_PORT GPIOA
#define CLK_PIN GPIO_PIN_2
#define DIO_PIN GPIO_PIN_3
и прописываем там свои обозначения выводов GPIO, к которым вы подключили индикатор.
В настройках проекта STM32 (я пользуюсь STM32CubeMX) нужно подправить параметры для портов GPIO: пометить порты как выходные, установить подтяжку Pull Up и скорость обмена High. Кроме этого, поскольку инициализация HAL у меня и так идет в основной программе, я сократил функцию инициализации драйвера, которая теперь выглядит так:
void tm1637Init(void)
{
tm1637SetBrightness(8);
}
Кстати, яркостью индикатора тоже можно управлять.
Зажечь цифирки на дисплее достигается вызовом функции
tm1637DisplayDecimal(int v, int displaySeparator)
где v это само собственное число которое будет отображено, displaySeparator — включать или нет двоеточие в середине дисплея.
Если чисел вам мало и нужно индицировать кракозябры, добавляете их в шаблон segmentMap.
Вот и все. Теперь как мне кажется все точно выглядит достаточно просто.
Посмотрел Ваши обзоры, сорри…
Sorry men…
Антенну Герц придумал, транзисторы покупные, кабели тоже, Линух заимствованный, программы все опенсорс, обработка из научных журналов, RF тракт — схемы передрал, ну и пусть что они типовые, так что локатор не ваш, товарищ )
Уровень посетителей конечно впечатляет, хотя чего не сделаешь в погоне за кармой )
Вы вроде бы в DIY пишете, а ничего не показываете
Обычный LED, еще и в связке с STM32, без фоток, нормального описания и т.д.
Для кого и зачем !?
P.S. Краткость не всегда сестра таланта
Влепил статье минус.
Поехали:
Предмет обзора:
С обратной стороны, покрупнее:
Для тех, кто будет делать свои самоделки.
Библиотека с экзамплами: github.com/avishorp/TM1637
Предмет обзора на видео выглядит так:
Для дальнейшего самостоятельного погружения в тему, можно посоветовать раз, два и т.д.
Возможно, после покупки индикатора на AliExpress я подробно описал бы, как извлекал его из коробки, как снимал пленочку, только статья не об этом. Она для тех, кому нужно быстро подключить дисплей к контроллеру и не тратить время на поиск информации в сети.
Указанная вами ссылка — для Arduino. Есть понимание разницы между Arduino и STM32?
Мои комментарии и обзоры совершенно определённо об этом свидетельствуют. Вы же глянули, прежде чем задать этот вопрос? :-)
По обзорам, кстати, можете оценить моё понимание термина «наполненность статьи», это я про фото упаковки, трек посылки, распаковки и обёрточную бумагу…
PS. Зачем мне публиковать ссылку на библиотеку STM32, если вы её уже дали? Я привёл ссылку на то, что, скорее всего, спросят читатели, зашедшие под кат…
+++
Нашёл, почти все ноги у STM32 толерантны к 5 вольтам.
Serial interface — 3.3В, с STM32 сопрягается нормально.
Кстати нет спецификации на STM32, это обобщенное название семейства чипов
а вот автор топика ну прям очень вовремя упоминает о возможности использовать свои символы;)
Att: не будет топика — не будет коммента, так что голосуйте
сердцемразумно;))