Была у меня связка PCF8574AT+HD44780 ЖКИ с I2C интерфейсом Купил МЭЛТ MT-20S4A-2YLG-3V0-I который работает с 3.3В и имеет Ш2С Соответсвенно там связка INF8574A+КБ1013ВГ6 Насчет КБ1013ВГ6 Ангстрем заявляет это аналог HD44780 И по идее INF8574A тоже не должен отлитчаться. I2C шина устройство видит, но после инициализации ничего не выводится на экран, просто слабенько подсветка светится. Судя по статьям либа ардуины одна и таже в примерах для работы с HD44780 и этим МЭЛТовским контроллером. Единственно у меня в коде через I2C работа с 8битным интерфейсом, а в ардуине с 4битным Кто нить с таким дисплеем работал из STM32F1? С МЭЛТ MT-20S4A-2YLG-3V0-I?
Комментарии: 23
Dmitriy
Дак пцф 8 бит и 8 битная шина дисплея. Откуда идут сигналы команд, записи?
Aleksey
а INF8574 разве нет? The device consists of an 8-bit quasi-bidirectional Port and an I 2 C interface Через I2C отсылаются 8битовые значения
Tiny
спасибо за ответы)) пойду значит собеседоваться) посмотрю чем народ живет
Artyom
удачи. к тому же это тоже навык, хорошо себя продать на галеру тоже надо уметь
Dmitriy
+++
Tiny
ну да, soft skills все такое)
Dmitriy
Расширение кругозора тоже skills up
Dmitriy
Восемь бит данных на выход пцф на 8 бит дата дисплея. Ещё нужно 3 служебных RW, Cd и EN, если по памяти правильно помню... Они тогда от пинов дёргаться должны. Именно поэтому модули на пцф работают обычно по 4 битной шине
Aleksey
У меня они в 8битном работали
Dmitriy
Как? 3 Служебных пина отдельно от пцф?
Aleksey
Китайцы чудо совершили видимо, модуль на PCF8574 16 пин на интерфейс ЖКИ И первая строка в инициализации работающей I2C_send(0b00110000,0,phi2c,0x3F,5); // 8ми битный интерфейс
Dmitriy
Там 2 пцф? Или может схема есть?
Aleksey
I2C_send void I2C_send(uint8_t data, uint8_t flags, I2C_HandleTypeDef *phi2c, uint16_t DevAddress, uint32_t Delay) { HAL_StatusTypeDef res; // бесконечный цикл for (;;) { // проверяем, готово ли устройство по адресу lcd_addr для связи res = HAL_I2C_IsDeviceReady(phi2c, DevAddress, 1, HAL_MAX_DELAY); // если да, то выходим из бесконечного цикла if (res == HAL_OK) break; } // операция И с 1111 0000 приводит к обнулению бит с 0 по 3, остаются биты с 4 по 7 uint8_t up = data & 0xF0; // то же самое, но data сдвигается на 4 бита влево uint8_t lo = (data << 4) & 0xF0; uint8_t data_arr[4]; // 4-7 биты содержат информацию, биты 0-3 настраивают работу дисплея data_arr[0] = up | flags | BACKLIGHT | PIN_EN; // дублирование сигнала, на выводе Е в этот раз 0 data_arr[1] = up | flags | BACKLIGHT; data_arr[2] = lo | flags | BACKLIGHT | PIN_EN; data_arr[3] = lo | flags | BACKLIGHT; HAL_I2C_Master_Transmit(phi2c, DevAddress, data_arr, sizeof(data_arr), HAL_MAX_DELAY); HAL_Delay(Delay); } Схемы нет и PCF там точно один
Dmitriy
Забавно ))).. но в таком случае должен работать только в 4 битной
Aleksey
Забавно но судя по даташиту это действительно включение 8 битного режима
Ogurezzz
Если я правильно помню, то как раз эта команда включит 8битный режим, если все 8 бит подключены. Если же отрезать 4 младших-получится включение 4хбитного Я ж тут недавно свою реализацию делал для этого переходника шоб аппаратно I2C работало. В ардуине оно софтовое по-моему.
Dmitriy
Может там часть бит идёт на контрольные линии из слова? Вон в комменте биты 0-3 и 4-7 имеют разную функцию...
Ogurezzz
Не обольщайся. Это стандартный переходник. Там E,R/W,RS,LED,D4,D5,D6,D7 выведены
Aleksey
Я так и понял. Но тогда почему фокус с МЭЛТом не проходит непонятно, видимо даташит неверно толкую
Ogurezzz
Или распиновка другая или тайминги
Dmitriy
Да не может он в 8 битной через пцф работать
Dmitriy
Вот я об этом