Но дурная голова рукам покоя не дает, поэтому разобрал панель, достал дисплей и хочу попробовать запустить его на плате STM32 Discovery, возможно дисплей живой. Дисплей Powertip PG240160C. На сайте производителя есть описание дисплея. Построен он на двух контроллерах ST8024 и ST8016: У дисплея нет своей памяти и его нужно постоянно обновлять, т.е. нужен буфер под изображение. Разрешение 240х160. Значит 240*160=38400 бит. 38400/8/1024 ~ 4,7кБ. На дискавери 8 кБ RAM т.е. хватит. Вопрос в другом, я не понимаю распиновку указанную производителем, потому что никогда не имел дела с подобными дисплеями. Что такое frame reverse signal и почему их аж 3 штуки? Bias voltage for non-select? И т.д. по списку. Не знаю с чего начать подключение.
Подключение дисплея Powertip PG240160C от ПЧ к Discovery
Подключение дисплея Powertip PG240160C от ПЧ к Discovery
Накрылась панель от преобразователя частоты (Altivar 61). Просто горит подсветка дисплея и всё. Прогревание платы помогло, но хватило на неделю. Панель из соседнего частотника в этом частотнике работает. В общем панель под замену. Пришла новая, поставили, всё нормально.
Но дурная голова рукам покоя не дает, поэтому разобрал панель, достал дисплей и хочу попробовать запустить его на плате STM32 Discovery, возможно дисплей живой. Дисплей Powertip PG240160C. На сайте производителя есть описание дисплея. Построен он на двух контроллерах ST8024 и ST8016: У дисплея нет своей памяти и его нужно постоянно обновлять, т.е. нужен буфер под изображение. Разрешение 240х160. Значит 240*160=38400 бит. 38400/8/1024 ~ 4,7кБ. На дискавери 8 кБ RAM т.е. хватит. Вопрос в другом, я не понимаю распиновку указанную производителем, потому что никогда не имел дела с подобными дисплеями. Что такое frame reverse signal и почему их аж 3 штуки? Bias voltage for non-select? И т.д. по списку. Не знаю с чего начать подключение.

Но дурная голова рукам покоя не дает, поэтому разобрал панель, достал дисплей и хочу попробовать запустить его на плате STM32 Discovery, возможно дисплей живой. Дисплей Powertip PG240160C. На сайте производителя есть описание дисплея. Построен он на двух контроллерах ST8024 и ST8016: У дисплея нет своей памяти и его нужно постоянно обновлять, т.е. нужен буфер под изображение. Разрешение 240х160. Значит 240*160=38400 бит. 38400/8/1024 ~ 4,7кБ. На дискавери 8 кБ RAM т.е. хватит. Вопрос в другом, я не понимаю распиновку указанную производителем, потому что никогда не имел дела с подобными дисплеями. Что такое frame reverse signal и почему их аж 3 штуки? Bias voltage for non-select? И т.д. по списку. Не знаю с чего начать подключение.
Нельзя всё знать, достаточно понимать.
- Реклама
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
Нашел статью: LCD controller for ST8024+ST8016 based displays
Там автор подключает подобный дисплей только 320х240. И пишет: "чтобы отправить кадр надо установить FLM в 1, подать отрицательный импульс на CL1 чтобы сбросить вертикальный счетчик, вернуть FLM в 0. Теперь отправить 80 4-х битных слов тактированных CL2. После этого подать отриц. импульс на CL1 чтобы увеличить вертикальный счетчик и подождать определенное время до следующей линии. Повторить процедуру отправки для всех линий и снова синхронизировать кадр."
Если посмотреть на распиновку моего дисплея, то получается:
4 -> +18 вольт (контраст)
5 -> +3,3 вольта (питание)
6 -> синхронизация кадра (FLM из примера) ?
7 -> земля
8 -> импульс защелки данных (CL1 из примера) ?
10 -> +3,3 вольт (включаем дисплей)
11 -> импульс смещения данных (CL2 из примера) ?
14-17 -> 4-х битная шина данных
18 -> плюс подсветки
19 -> земля
Так что ли?
Там автор подключает подобный дисплей только 320х240. И пишет: "чтобы отправить кадр надо установить FLM в 1, подать отрицательный импульс на CL1 чтобы сбросить вертикальный счетчик, вернуть FLM в 0. Теперь отправить 80 4-х битных слов тактированных CL2. После этого подать отриц. импульс на CL1 чтобы увеличить вертикальный счетчик и подождать определенное время до следующей линии. Повторить процедуру отправки для всех линий и снова синхронизировать кадр."
Если посмотреть на распиновку моего дисплея, то получается:
4 -> +18 вольт (контраст)
5 -> +3,3 вольта (питание)
6 -> синхронизация кадра (FLM из примера) ?
7 -> земля
8 -> импульс защелки данных (CL1 из примера) ?
10 -> +3,3 вольт (включаем дисплей)
11 -> импульс смещения данных (CL2 из примера) ?
14-17 -> 4-х битная шина данных
18 -> плюс подсветки
19 -> земля
Так что ли?
Нельзя всё знать, достаточно понимать.
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
Можно для общего понимания почитать Reference manual на STM32L152xx, раздел "15 Liquid crystal display controller (LCD)"
Если вкратце - LCD сегменты они требуют для того чтобы гореть переменного напряжения. И они портятся от того, что через них протекает постоянный ток. Вот из-за этого факта так и строят контроллеры LCD дисплеев.
Если вкратце - LCD сегменты они требуют для того чтобы гореть переменного напряжения. И они портятся от того, что через них протекает постоянный ток. Вот из-за этого факта так и строят контроллеры LCD дисплеев.
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
Про это я знаю.balmer писал(а):Если вкратце - LCD сегменты они требуют для того чтобы гореть переменного напряжения. И они портятся от того, что через них протекает постоянный ток.
Не пойму какой пин на дисплее за что отвечает. Например frame reverse signal, Bias voltage for non-select - что это такое?
Нельзя всё знать, достаточно понимать.
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
"frame reverse signal" на разъёме дисплея - это то же сигнал, что и FR в драйвере. По сути является входом модуляции для драйвера, каждый кадр нужно менять его логич. состояние. На временной диаграмме в даташитах на драйверы это показано.
Bias voltage for non-select - эти выводы подключаются к источнику опорных напряжений, ориентировочная схема которого опять же есть в даташитах. Конкретную схему этого узла (с номиналами резисторов делителей) нужно срисовывать с платы контроллера дисплея.
Bias voltage for non-select - эти выводы подключаются к источнику опорных напряжений, ориентировочная схема которого опять же есть в даташитах. Конкретную схему этого узла (с номиналами резисторов делителей) нужно срисовывать с платы контроллера дисплея.
[color=#FFBF00]На любой вопрос даю любой ответ[/color]
- Реклама
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
Решил снова заняться этим дисплеем. Нашел куда подключается питание в оригинальной плате. Подал туда 24 вольта и увидел что дисплей всё таки жив (видимая область заливается черным):

Замерил напряжения:
2 (bias voltage) - 2,2 вольта
3 (bias voltage) - 26 вольт
4 (Power supply for LCD) - 28,4 вольта
5 (Power supply for Logic) - 3,3 вольта
12 (bias voltage) - 4,4 вольта
13 (bias voltage) - 24 вольта
Взял осциллограф. Выводы 1,9,20 (Frame Reverse Signal):

Амплитуда 3,3 вольта:

Причем все 3 вывода синхронны и повторяют друг друга:

6-й вывод (Scan start-up signal) - на нем ноль.
На 8-м выводе (Data Latch Pulse) присутствуют импульсы длительностью ~0,6 мкс с интервалом ~80 мкс:

Синхронизация 8-го вывода с 1,9,20. Сверху сигнал с 1 (Frame Reverse Signal), снизу 8 (Data Latch Pulse).

11-й вывод (Data shift pulse):

Синхронизация 1 (Frame Reverse Signal) и 11 (Data shift pulse). Сверху 11 снизу 1:

Выводы 14-17 (Data bus 3-0) - видно что есть какая то активность.
Пока перевариваю информацию. Если есть идеи то прошу озвучить. А пока сделал плату адаптер под дисплей с двумя повышающими преобразователями (делал ещё до замеров к сожалению):

Замерил напряжения:
2 (bias voltage) - 2,2 вольта
3 (bias voltage) - 26 вольт
4 (Power supply for LCD) - 28,4 вольта
5 (Power supply for Logic) - 3,3 вольта
12 (bias voltage) - 4,4 вольта
13 (bias voltage) - 24 вольта
Взял осциллограф. Выводы 1,9,20 (Frame Reverse Signal):
Амплитуда 3,3 вольта:
Причем все 3 вывода синхронны и повторяют друг друга:
6-й вывод (Scan start-up signal) - на нем ноль.
На 8-м выводе (Data Latch Pulse) присутствуют импульсы длительностью ~0,6 мкс с интервалом ~80 мкс:
Синхронизация 8-го вывода с 1,9,20. Сверху сигнал с 1 (Frame Reverse Signal), снизу 8 (Data Latch Pulse).
11-й вывод (Data shift pulse):
Синхронизация 1 (Frame Reverse Signal) и 11 (Data shift pulse). Сверху 11 снизу 1:
Выводы 14-17 (Data bus 3-0) - видно что есть какая то активность.
Пока перевариваю информацию. Если есть идеи то прошу озвучить. А пока сделал плату адаптер под дисплей с двумя повышающими преобразователями (делал ещё до замеров к сожалению):
Нельзя всё знать, достаточно понимать.
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
Длина Frame Reverse Signal составляет 13 мс. Интервал импульсов Data Latch Pulse примерно 80 мкс. Получается 13000 мкс / 80 мкс = 162,5 т.е. с учетом погрешности измерения 160. У нас как раз дисплей имеет 160 строк. Но что тогда делает Data shift pulse ? И почему они следуют как бы по два?
Примерно понимаю так: в начале кадра Frame Reverse Signal меняет своё значение. В этот же момент на Data Latch Pulse идет импульс с 0 в 1 (начало передачи строки) и в этот же момент на Data shift pulse идет импульс с 1 в 0 (начало передачи данных). После каждого Data Latch Pulse на DATA 3-0 выплевываются данные строки. После завершения передачи строки ещё один импульс Data shift pulse с 1 в 0 (типа заперли данные). Ждем начала следующего Data Latch Pulse (импульс начала передачи следующей строки). И так все 160 строк.
Но что то пока до конца не понимаю. Прошу помощи.
Примерно понимаю так: в начале кадра Frame Reverse Signal меняет своё значение. В этот же момент на Data Latch Pulse идет импульс с 0 в 1 (начало передачи строки) и в этот же момент на Data shift pulse идет импульс с 1 в 0 (начало передачи данных). После каждого Data Latch Pulse на DATA 3-0 выплевываются данные строки. После завершения передачи строки ещё один импульс Data shift pulse с 1 в 0 (типа заперли данные). Ждем начала следующего Data Latch Pulse (импульс начала передачи следующей строки). И так все 160 строк.
Но что то пока до конца не понимаю. Прошу помощи.
Нельзя всё знать, достаточно понимать.
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
Снял лог логическим анализатором. Не пойму как выставляются данные на входе. Latch переводится как защелка, Shift - сдвиг.



Лог целиком можно открыть в Saleae Logic 1.1.15 Frame Reverse Signal меняет своё состояние каждый кадр. Scan start-up signal - сигнализирует о начале нового кадра. Data Latch Pulse - сигнализирует о начале новой строки. После этого на выводах Data3-0 устанавливаются данные которые тактируются импульсами Data shift pulse. Импульс как бы двойной потому что байт задвигается за 2 раза (по 4 бита) по спадающему фронту Data shift pulse.
Строка состоит из 240 бит (30 байт). Т.е. мы должны отправить 60 раз по 4 бита или 30 байт. Но почему в интервал между строчными импульсами Data Latch Pulse укладывается 32 байта?? Откуда 2 лишних байта? Причем если все байты равны 0 (дисплей полностью залит), то именно эти 2 байта всегда меняются. Может это какая то доп. информация?? Перерыл весь даташит на контроллер, никакого упоминания не нашел.

Если не считать этих 2-х не понятных байт, то в принципе можно пробовать писАть код под Discovery. Только 4 разных bias voltage меня смущают.
Лог целиком можно открыть в Saleae Logic 1.1.15 Frame Reverse Signal меняет своё состояние каждый кадр. Scan start-up signal - сигнализирует о начале нового кадра. Data Latch Pulse - сигнализирует о начале новой строки. После этого на выводах Data3-0 устанавливаются данные которые тактируются импульсами Data shift pulse. Импульс как бы двойной потому что байт задвигается за 2 раза (по 4 бита) по спадающему фронту Data shift pulse.
Строка состоит из 240 бит (30 байт). Т.е. мы должны отправить 60 раз по 4 бита или 30 байт. Но почему в интервал между строчными импульсами Data Latch Pulse укладывается 32 байта?? Откуда 2 лишних байта? Причем если все байты равны 0 (дисплей полностью залит), то именно эти 2 байта всегда меняются. Может это какая то доп. информация?? Перерыл весь даташит на контроллер, никакого упоминания не нашел.
Если не считать этих 2-х не понятных байт, то в принципе можно пробовать писАть код под Discovery. Только 4 разных bias voltage меня смущают.
Нельзя всё знать, достаточно понимать.
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
больше всего, контроллер рассчитан на разрешение 256x160, а матрица стоит 240x160, вот и пихают в последние 2 байта что попало, все ровно их не видно.
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
Пытаюсь вывести изображение. Сделал двумерный массив строки/данные строки. Значения битов записаны начиная с левого верхнего угла изображения.
Вывожу на дисплей:
Но вместо изображения вижу:

Попробовал жестко выставить данные на линиях:
Всё правильно. Чередуются через 2 бита.

Сомневаюсь в этих строках:
Правильно ли я записываю массив 8-ми битных данных в 16 битный порт (пачками по 4 бита) ?
Код: Выделить всё
const uint8_t picture[160][30] =
{
{ 0xC3, 0x9F, 0xFF, 0xFF, 0xFF, ...},
{ 0xC3, 0x9F, 0xFF, 0xFF, 0xFF, ...}
...
}Код: Выделить всё
#include <stm32f10x.h>
#include <stm32f10x_conf.h>
#include <stm32f10x_gpio.h>
#include <stm32f10x_rcc.h>
#include <pic.h>
uint8_t STROKA, BYTE;
GPIO_InitTypeDef PORT;
int main(void)
{
// подаем тактовую частоту на порты
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
// инициализируем порты
PORT.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
PORT.GPIO_Mode = GPIO_Mode_Out_PP;
PORT.GPIO_Speed = GPIO_Speed_50MHz;
// порт управления
GPIO_Init(GPIOA, &PORT);
// порт данных
GPIO_Init(GPIOC, &PORT);
// начальная установка портов
GPIO_ResetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);
GPIO_SetBits(GPIOA,GPIO_Pin_3);
while(1)
{
GPIOA->ODR^=GPIO_ODR_ODR0; // каждый кадр инвертируем вывод
GPIOA->BSRR = GPIO_BSRR_BS1; // подаём импульс начала кадра
GPIOA->BSRR = GPIO_BSRR_BR1; //
// построчно отправляем данные
for (STROKA = 0; STROKA < 160; STROKA++) {
GPIOA->BSRR = GPIO_BSRR_BS2; // импульс новой строки
GPIOA->BSRR = GPIO_BSRR_BR2; //
// отправляем 30 8-битных слов
for (BYTE = 0; BYTE < 30; BYTE++) {
GPIOC->ODR = picture[STROKA][BYTE] >> 4;
GPIOA->BSRR = GPIO_BSRR_BR3; // защелкнули данные
GPIOA->BSRR = GPIO_BSRR_BS3; //
GPIOC->ODR = picture[STROKA][BYTE];
GPIOA->BSRR = GPIO_BSRR_BR3; // защелкнули данные
GPIOA->BSRR = GPIO_BSRR_BS3; //
}
}
}
}
Попробовал жестко выставить данные на линиях:
Код: Выделить всё
GPIO_SetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1);
GPIO_ResetBits(GPIOC, GPIO_Pin_2 | GPIO_Pin_3);Сомневаюсь в этих строках:
Код: Выделить всё
GPIOC->ODR = picture[STROKA][BYTE] >> 4;
...
GPIOC->ODR = picture[STROKA][BYTE];Нельзя всё знать, достаточно понимать.
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
попробуйте такую конструкцию, за одно она не будет мешать старшим битам порта:
Код: Выделить всё
__inline void lcd_dat(uint8_t dat){
((dat & (1<<0)) ? (GPIOC->BSRR = GPIO_ODR_ODR0) : (GPIOC->BRR = GPIO_ODR_ODR0));
((dat & (1<<1)) ? (GPIOC->BSRR = GPIO_ODR_ODR1) : (GPIOC->BRR = GPIO_ODR_ODR1));
((dat & (1<<2)) ? (GPIOC->BSRR = GPIO_ODR_ODR2) : (GPIOC->BRR = GPIO_ODR_ODR2));
((dat & (1<<3)) ? (GPIOC->BSRR = GPIO_ODR_ODR3) : (GPIOC->BRR = GPIO_ODR_ODR3));
}
Код: Выделить всё
// отправляем 30 8-битных слов
for (BYTE = 0; BYTE < 30; BYTE++) {
lcd_dat((picture[STROKA][BYTE]) >> 4);
GPIOA->BSRR = GPIO_BSRR_BR3; // защелкнули данные
GPIOA->BSRR = GPIO_BSRR_BS3; //
lcd_dat(picture[STROKA][BYTE]);
GPIOA->BSRR = GPIO_BSRR_BR3; // защелкнули данные
GPIOA->BSRR = GPIO_BSRR_BS3; //
}
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
Когда нибудь влетишь с подобным ...drakon писал(а): GPIOC->BSRR =GPIO_ ODR_ODR0;
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
все норм, я слежу
Код: Выделить всё
__IO uint32_t BSRR;
__IO uint32_t BRR;
#define GPIO_ODR_ODR0 ((uint16_t)0x0001)
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
То же самое.drakon писал(а):попробуйте такую конструкцию
Там получается обратная зависимость, если бит равен 1 то пиксель гасится, если 0 то зажигается.
Код: Выделить всё
GPIOC->ODR = 0x00;
...
GPIOC->ODR = 0x00>>4;
Все нули в массиве:
Картинка:
Вообще ничего не понимаю
Я бы понял он ничего не отрисовывал, но полоски то 1100 рисует. Если бы частота где то сбивалась, то наверное хаотично. А тут четко пропуск посередине и всё. Хотя и при отрисовке 0х00 из массива пропуски есть. Всё таки что то не то с выводом.
Ещё раз уточню как я понимаю:
Нельзя всё знать, достаточно понимать.
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
а те 2 непонятных байта вы добавляете в каждую строку?
Re: Подключение дисплея Powertip PG240160C от ПЧ к Discovery
Нет. Но вроде бы их и не надоdrakon писал(а):а те 2 непонятных байта вы добавляете в каждую строку?
Нельзя всё знать, достаточно понимать.


