STM32 Библиотека для работы с модулем PCF8574AT

Автор: | 14.08.2017

Вообщем напрягать меня стало использование LCD дисплея, на контроллере hd44780 с использованием стандартного подключения, даже 4-битный режим не спасение уже.

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

Купить модуль: ссылка

Вот он:

Устройство микросхемы:

К контроллеру она подключается по I2C интерфейсу. К выводам P0-P7 подключается дисплей.

  • P0 — RS
  • P1 — RW
  • P2 — E
  • P3 — УПРАВЛЕНИЕ ПОДСВЕТКОЙ >если 1 то горит подсветка<
  • P4 — D4
  • P5 — D5
  • P6 — D6
  • P7 — D7

Выводы A0-A2 предназначены для установки адреса устройства, в исходном состоянии >без перемычек< адрес получается 0x3F.

Таблица для формирования адреса:

На шину I2C можно вешать много устройств это наверное главное из ее преимуществ, можно подключить несколько таких модулей задав установкой перемычек каждому свой адрес.

Запуск:

Первый STM контроллер с которого я начал свой путь в мир современных микроконтроллеров, оказался STM32F051R8T6. Все что я в нем использовал из периферии, трудностей не вызывало, но решил вдруг использовать I2C и тут началось. Ни как ни смог его заставить работать, вообщем плюнул и купил платку с контроллером STM32F103C8T6 использовал стандартную библиотеку StdPeriph и все заработало.

Код:

Проект создан в среде CooCox CoIDE
Настройка I2C:

i2c.h

i2c.c

Библиотека для HD44780:

hd44780_i2c.h

hd44780_i2c.c

main.c

main.h

Реализация задержки:

delay.h

delay.c

 

На этом все дорогие друзья, дерзайте и используйте во благо.

ПОДДЕРЖАТЬ ПРОЕКТ

 

 

 

STM32 Библиотека для работы с модулем PCF8574AT: 4 комментария

  1. Dmitry

    Добрый день! А можно еще выложить недостающие здесь файлы? Т.е. заголовочные файлы main.h и delay.h, и, собственно, реализацию самого модуля, реализующего задержки — delay.c. Спасибо.

  2. yriy Автор записи

    Самому написать ни как?

  3. Dmitry

    Можно и самому написать, но мне была интересна именно ваша реализация, к тому же вариант с использованием таймера не единственно возможный… И я увидел именно то, что хотел увидеть —
    «чистую» реализацию без использования функций HAL и т.п. Когда только начинаешь осваивать STM32, то готовые примеры сильно экономят время.

    P.S.: в названии макроса «F_ABP1» опечатка, название шины — APB1 (Advanced Peripheral Bus), а не «ABP1». Это, конечно же, мелочи, но все же.

  4. yriy Автор записи

    Всякие генераторы кода не приемлю, хватило в свое время CodeVisionAvr.

Добавить комментарий