#1 2025-03-29 13:37:52

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

STM32f429 LTDC VGA джитер

Вітаю, намагаюсь подружити мікроконтролер STM32F429 з VGA монітором в роздільній здатності 640х480 по LTDC. Зображення на екрані з'являється, все працює, але на моніторі присутні три вертикальні лінії з доволі великим джитером пікселів. Пробував гратися з дільниками PLL і швидкістю роботи портів, але на картинку це сильно не впливає. Можливо ще хтось пробував підключати таким способом, чи була у вас така проблема, і чи можна її вирішити.

Неактивний

#2 2025-03-29 19:47:40

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 321

Re: STM32f429 LTDC VGA джитер

duron пише:

на моніторі присутні три вертикальні лінії з доволі великим джитером пікселів.

STM32F42X має кеш перед флешкою, тому час виконання одного і того ж коду з флешки не є константою з точністю до періоду такотового генератора. Інше питання, чи у вашому випадку джиттер обумовлений цією особливістю, чи особливостями реалізації у вашому коді.

Необхідно як мінімум бачити код. Також, якщо є можливість, запишіть і порівняйте осцилограми сусідніх фреймів, на яких саме етапах генерації фрейма відбувається зсув, на який період.

Можна спробувати завантажити код в SRAM і виконувати звідти.

Неактивний

#3 2025-03-29 19:59:46

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

Re: STM32f429 LTDC VGA джитер

Опишу більш детальніше. В першому пості я помилково написав що це лінії, але насправді це вертикальні смужки, десь від 10 до 20 послідовних пікселів. Всього на екрані їх 3 штуки. Якщо на моніторі увімкнути режим автоналаштування зображення, то ці смужки змінюють своє положення. Цікаво що на кінескопному моніторі їх немає, зображення чисте, тому думаю проблема не в коді.

Неактивний

#4 2025-03-29 20:14:08

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 321

Re: STM32f429 LTDC VGA джитер

duron пише:

Цікаво що на кінескопному моніторі їх немає, зображення чисте, тому думаю проблема не в коді.

Ну може це гармоніка горизонтальної синхронізації пролазить, через те, що лінія неузгоджена. Може якісь вибрики по живленню. Без осцилограми можна довго вгадувати.

Остання редакція dimich (2025-03-29 20:15:14)

Неактивний

#5 2025-03-29 20:36:00

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

Re: STM32f429 LTDC VGA джитер

dimich пише:
duron пише:

Цікаво що на кінескопному моніторі їх немає, зображення чисте, тому думаю проблема не в коді.

Ну може це гармоніка горизонтальної синхронізації пролазить, через те, що лінія неузгоджена. Може якісь вибрики по живленню. Без осцилограми можна довго вгадувати.

Нажаль нормального осцилографа на якому це можна було б побачити я не маю. Але підключивши тактовий вихід LTDC на вхід зеленого кольору монітора, ці смуги стає добре видно.

WIN_20250329_19_22_56_Pro.jpeg

Неактивний

#6 2025-03-29 21:02:19

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 321

Re: STM32f429 LTDC VGA джитер

duron пише:

підключивши тактовий вихід LTDC на вхід зеленого кольору монітора, ці смуги стає добре видно.

Схоже на імпульси частотою близько 80 кГц, розмазані за рахунок характеристики навантаження. Що ще може бути на тактовому виході? Вони мабуть і пролазять у сигнал.

Остання редакція dimich (2025-03-29 21:16:29)

Неактивний

#7 2025-03-29 21:16:41

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

Re: STM32f429 LTDC VGA джитер

dimich пише:
duron пише:

підключивши тактовий вихід LTDC на вхід зеленого кольору монітора, ці смуги стає добре видно.

Ну схоже на імпульси частотою близько 80 кГц, розмазані за рахунок характеристики навантаження. Що ще може бути на тактовому виході? Вони мабуть і пролазять у сигнал.

Саме на цих зелених смугах і відбувається джитер пікселів. Там де смуг немає зображення чисте. Ніяк не можу зрозуміти що це, змінював тактову частоту ядра, і навіть дійшло до заміни кварцу на інший, зображення від цього не змінюється

Неактивний

#8 2025-03-29 21:52:19

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 321

Re: STM32f429 LTDC VGA джитер

duron пише:

Саме на цих зелених смугах і відбувається джитер пікселів.

Так мабуть цей сигнал і пролазить у відеосигнал, може й не прямо, а побічно. Схему підключення ж теж не показуєте.
TFT монітор намагається синтезувати піксель-клок по імпульсам горизонтальної синхронізації, а поріг спрацьовування плаває через шум квантування АЦП. Сигнал VGA-то аналоговий, і горзонтальна синхронізація йде в каналі зеленого.
Без коду, де той LTDC конфігурується, без схеми підключення, без діагностичної інформації це ворожіння на кавовій гущі.

Неактивний

#9 2025-03-29 23:15:59

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

Re: STM32f429 LTDC VGA джитер

dimich пише:
duron пише:

Саме на цих зелених смугах і відбувається джитер пікселів.

Так мабуть цей сигнал і пролазить у відеосигнал, може й не прямо, а побічно. Схему підключення ж теж не показуєте.
TFT монітор намагається синтезувати піксель-клок по імпульсам горизонтальної синхронізації, а поріг спрацьовування плаває через шум квантування АЦП. Сигнал VGA-то аналоговий, і горзонтальна синхронізація йде в каналі зеленого.
Без коду, де той LTDC конфігурується, без схеми підключення, без діагностичної інформації це ворожіння на кавовій гущі.

Схеми як такої немає, поки що все зібрано навісним монтажем, плата процесора Core429I і VGA розєм. Піни LTDC, в процесі наладки зменшив до 3х (PI9=VSYNC,  PI10=HSYNC, PI2=VIDEO G7). Код конфігурації LTDC взяв на github https://github.com/iliasam/stm32f429_vga_examples/blob/master/simple_vga_example/32f429_lcd.c

WIN_20250329_21_44_13_Pro.jpg

Неактивний

#10 2025-03-30 00:32:33

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 321

Re: STM32f429 LTDC VGA джитер

duron пише:

Піни LTDC, в процесі наладки зменшив до 3х (PI9=VSYNC,  PI10=HSYNC, PI2=VIDEO G7).

Які номінали резисторів на кожному з пінів? (на фото не розібрати).

На схемі в проекті з гітхаба R-2R ЦАП, він робить певну аттенюацію. У вас, якщо на виході PI2 3.3В, то має бути десь 270-300 Ом.
На VSYNC і HSYNC навпаки, мають бути TTL-рівні, 82 Ома може бути забагато (від схеми монітора залежить).

Неактивний

#11 2025-03-30 00:49:20

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

Re: STM32f429 LTDC VGA джитер

dimich пише:
duron пише:

Піни LTDC, в процесі наладки зменшив до 3х (PI9=VSYNC,  PI10=HSYNC, PI2=VIDEO G7).

Які номінали резисторів на кожному з пінів? (на фото не розібрати).

На схемі в проекті з гітхаба R-2R ЦАП, він робить певну аттенюацію. У вас, якщо на виході PI2 3.3В, то має бути десь 270-300 Ом.
На VSYNC і HSYNC навпаки, мають бути TTL-рівні, 82 Ома може бути забагато (від схеми монітора залежить).

На кожному аналоговому вході стоять резистори по 330Ом. На входи синхронізації резистори не ставив взагалі, але про всяк випадок перевірив роботу з резисторами по 100Ом, які звичайно ж на роботу не вплинули.

Неактивний

#12 2025-03-30 01:23:48

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 321

Re: STM32f429 LTDC VGA джитер

Що ж, моя гіпотеза - відбувається розсинхронізація між піксель-клоком LTDC і відновленим піксель-клоком у моніторі. Скоріш за все через недосконалість аналогової частини та особливості дискретизації аналогового сигнала в TFT-моніторі. Через це фронт відеосигнала попадає то в один піксель, то в інший, сусідній.
Кінескопний монітор не відновлює піксел-клок, там це не потрібно.

Єдине, що на даний момент можу порадити - це роздобути осцилограф і подивитись, чим сигнал, що генерується вашою схемою, відрізняється від еталонного VGA (при підключеному моніторі, звісно).

Як воркераунд, можете спробувати в лінії Green після резистора поставити конденсатор десь 10-47 пФ в землю (підберіть експериментально). Це має "розмити" зображення і джиттер буде не так помітно.

Неактивний

#13 2025-03-30 01:42:09

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

Re: STM32f429 LTDC VGA джитер

dimich пише:

Що ж, моя гіпотеза - відбувається розсинхронізація між піксель-клоком LTDC і відновленим піксель-клоком у моніторі. Скоріш за все через недосконалість аналогової частини та особливості дискретизації аналогового сигнала в TFT-моніторі. Через це фронт відеосигнала попадає то в один піксель, то в інший, сусідній.
Кінескопний монітор не відновлює піксел-клок, там це не потрібно.

Єдине, що на даний момент можу порадити - це роздобути осцилограф і подивитись, чим сигнал, що генерується вашою схемою, відрізняється від еталонного VGA (при підключеному моніторі, звісно).

Як воркераунд, можете спробувати в лінії Green після резистора поставити конденсатор десь 10-47 пФ в землю (підберіть експериментально). Це має "розмити" зображення і джиттер буде не так помітно.

Теж про це подумав, коли підключив кінескопний монітор, але до останнього надіявся що це я десь допустив помилку. Шкода що в проєкті гітхаба про цей нюанс промовчали, на жаль не підходить LTDC для моніторів з аналоговим входом. Дякую за допомогу

Неактивний

#14 2025-03-30 02:25:55

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 321

Re: STM32f429 LTDC VGA джитер

duron пише:

на жаль не підходить LTDC для моніторів з аналоговим входом.

Думаю, якщо пошаманити над аналоговою частиною, то можна отримати задовільний результат. Але скоріш за все знадобляться буферні каскади з фільтрами, узгодження імпедансів і т.п. Без відповідних інструментів налаштувати буде непросто.

Неактивний

#15 2025-03-30 10:35:35

jokeer
Гість

Re: STM32f429 LTDC VGA джитер

Схоже на якусь аналогову заваду. Може по живленню, може через аналогову землю. Без осцилографа складно.

#16 2025-03-30 12:01:21

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

Re: STM32f429 LTDC VGA джитер

dimich пише:
duron пише:

на жаль не підходить LTDC для моніторів з аналоговим входом.

Думаю, якщо пошаманити над аналоговою частиною, то можна отримати задовільний результат. Але скоріш за все знадобляться буферні каскади з фільтрами, узгодження імпедансів і т.п. Без відповідних інструментів налаштувати буде непросто.

Пробував ставити на вихід LTDC регістр 74hc574 і подавав на його тактовий вхід сигнал LCD_CLK, результат без змін. Можливо проблема ще може бути в частоті піксельних даних, стандарт відео 640x480 вимагає частоту пікселів 25.175 мГц, PLL LTDC вдається налаштувати саму ближчу частоту 25.125 мГц.

Неактивний

#17 2025-03-30 12:07:58

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

Re: STM32f429 LTDC VGA джитер

jokeer пише:

Схоже на якусь аналогову заваду. Може по живленню, може через аналогову землю. Без осцилографа складно.

Осцилограф є fnirsi 1C15, ним цю заваду розгледіти не вдається

Неактивний

#18 2025-03-30 13:09:56

jokeer
Гість

Re: STM32f429 LTDC VGA джитер

ну, не знаю.. Якщо воно пролізло саме в зелений канал, більше нікуди, та ще й таке криве..

#19 2025-03-30 13:30:21

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

Re: STM32f429 LTDC VGA джитер

jokeer пише:

ну, не знаю.. Якщо воно пролізло саме в зелений канал, більше нікуди, та ще й таке криве..

Воно таке лізе по усіх каналах. Зелений то для перевірки був підключений до виходу LCD_CLK, саме на ньому такий сигнал як на фото вище.

Неактивний

#20 2025-03-30 22:01:57

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 321

Re: STM32f429 LTDC VGA джитер

duron пише:

Можливо проблема ще може бути в частоті піксельних даних, стандарт відео 640x480 вимагає частоту пікселів 25.175 мГц, PLL LTDC вдається налаштувати саму ближчу частоту 25.125 мГц.

Специфікація VESA (наступний за VGA стандарт) допускає відхилення pixel clock до ±0.5%, у вас виходить менше 0.2%. Сам піксель-клок у VGA нікуди ж не передається, але на ньому базуюється решта таймінгів.

Зі своїх давніх експериментів з VGA памʼятаю, працювало і з набагато більшими відхиленнями. При перевищенні порогових значень TFT-монітори (які тоді тільки зʼявились у нас) або переходили в сплячку, або відображали "нема сигнала". Але таких артефактів із джиттером не памʼятаю.

Cхожий (але не такий) джиттер бачив при підключенні PAL RGB-сигнала від ZX Spectrum до розʼєму SCART телевізора. Там вирішилось узгодженням імпедансів та екрануванням.

duron пише:

Осцилограф є fnirsi 1C15, ним цю заваду розгледіти не вдається

Ну тут фазовий шум. Потрібно дивитись на крутизну фронтів синхроімпульсів (slew rate), і стабільність моментів часу, коли сигнал досягає певного рівня (який залежить від схеми монітора). Може цьому конкретному монітору взагалі не подобається рівень 3.3 В, може для стабільної роботи він хоче 5.

Доречі, полоса пропускання для кольорових компонент у VGA має бути 28 MHz. При занадто крутих фронтах присутні вищі частоти, і при дискретизації може виникати аліасінг. Так що спробуйте все-таки обмежити полосу пропускання кольорової компоненти конденсатором, як пропонував вище.

Крім того, у VGA для кожної кольорової компоненти окрема зворотня лінія землі. Використання для сигналів кольору і синхронізації спільної землі на розʼємі теж може негативно впливати.

Підозріло виглядає співпадіння паттерна джиттера з паттерном на тактовому виході при підключенні його до Green. Хоча тут може бути, що наведення просто йде однакове на всі лінії, і сигнал на тактовому виході тут ні до чого. Тактовий вихід у вас же просто висить "у повітрі", нікуди не навантажений на самій платі?

Неактивний

#21 2025-03-30 23:42:30

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

Re: STM32f429 LTDC VGA джитер

dimich пише:

Може цьому конкретному монітору взагалі не подобається рівень 3.3 В, може для стабільної роботи він хоче 5.

Якщо ви про сигнали синхронізації, то їх рівні пробував піднімати двома послідовно включеними інверторами (74HC04), в такому варіанті джитер не зникає а просто зсувається на декілька пікселів вправо.

dimich пише:

Так що спробуйте все-таки обмежити полосу пропускання кольорової компоненти конденсатором

Теж пробував, підключав конденсатор 120 пФ, джитер стає менш помітним і зсувається на декілька пікселів вліво. При конденсаторові 240 пФ джитера непомітно, але зображення стає розмитим.

dimich пише:

Тактовий вихід у вас же просто висить "у повітрі", нікуди не навантажений на самій платі?

Так, тактовий вихід нікуди не підключається. Увімкнення і вимкнення піна на якому висить тактовий вихід теж не має ніякого ефекту.

dimich пише:

Специфікація VESA (наступний за VGA стандарт) допускає відхилення pixel clock до ±0.5%

Вирішив про всяк випадок перевірити і цю версію. Налаштував LTDC на роздільну здатність 800х600, тут джитер теж був, потім перевірив варіант з роздільною здатністю 400х600 з вдвічі меншою частотою пікселів 20 мГц, смуги джитера з трьох зменшились майже до  однієї. Підключив знову тактовий вихід до входу зеленого кольору і побачив на екрані це neutral
Чітко видно тактовий сигнал, і якийсь незрозумілий шум. Підключив в такому варіанті кінескопний монітор на ньому зображення чисте.

WIN_20250330_22_16_52_Pro.jpeg
WIN_20250330_22_17_15_Pro.jpeg

Неактивний

#22 2025-03-31 01:51:21

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 321

Re: STM32f429 LTDC VGA джитер

duron пише:

Якщо ви про сигнали синхронізації, то їх рівні пробував піднімати двома послідовно включеними інверторами (74HC04), в такому варіанті джитер не зникає а просто зсувається на декілька пікселів вправо.

Вправо? Цікаво, я би очікував навпаки, вліво. Буфер вносить затримку порядка десятка наносекунд, тобто відносно синхроімпульса сигнал зображення повинен приходити трошки раніше. Але тривалість пікселя 40 нс, так що це не було би декілька пікселів.
Хоча, з іншого боку, це означає, що розсинхронізація стала відбуватись пізніше. В ідеалі вона мала "зміститись" вправо настільки, що синхроімпульс нового рядка мав би приходити раніше, ніж ця розсинхронізація відбудеться.

Питання навмання: не пробували інвертувати полярність HSync?

duron пише:

Чітко видно тактовий сигнал, і якийсь незрозумілий шум.

В ідеалі тактовий сигнал з заповненням 50% мав би відображатись як суцільне поле половинної яскравості, бо один імпульс приходиться на один піксель. А тут якась інтерференційна картина. Зрозуміло, що АЦП монітора семплує миттєві (в першому наближенні) значення. Але він мав би семплувати з частотою, в кілька разів вищою за частоту пікселів, і усереднювати (фільтрувати). Схоже, він семплує прямо на відновленій частоті пікселів і ніякого усереднення не робить.

Питання навмання: Не перевіряли цей монітор з джерелом заздалегідь робочого VGA сигнала, наприклад HDMI-VGA адаптером або старою відеокартою з VGA-виходом? Мені в свій час допоміг ось такий генератор. Може це особливість самого монітора, виробник зробив VGA-вхід "аби було"?

А як, наприклад, виглядають вертикальні лінії в один піксель з інтервалом в пару десятків пікселів?

Неактивний

#23 2025-03-31 03:17:20

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

Re: STM32f429 LTDC VGA джитер

dimich пише:

Питання навмання: не пробували інвертувати полярність HSync?

Так, на роздільній здатності 640х480 полярність HSync і VSync негативна а на 800х600  позитивна, тому змінював. 

dimich пише:

В ідеалі тактовий сигнал з заповненням 50% мав би відображатись як суцільне поле половинної яскравості, бо один імпульс приходиться на один піксель. А тут якась інтерференційна картина. Зрозуміло, що АЦП монітора семплує миттєві (в першому наближенні) значення. Але він мав би семплувати з частотою, в кілька разів вищою за частоту пікселів, і усереднювати (фільтрувати). Схоже, він семплує прямо на відновленій частоті пікселів і ніякого усереднення не робить.

Це тому що монітор працює в режимі 800х600 40мГц pixel clock, а LTDC працює з у двічі скороченими горизонтальними таймінгами  (400х600) і pixel clock 20мГц, тому один піксель в пам'яті виводяться на екран як два, те саме получається і із тактовою частотою.


dimich пише:

Питання навмання: Не перевіряли цей монітор з джерелом заздалегідь робочого VGA сигнала, наприклад HDMI-VGA адаптером або старою відеокартою з VGA-виходом?

Так, в моніторі впевнений, на ньому налагоджував вже не першу саморобну відеокарту і ніколи таких проблем не було, але про всяк випадок перевірив на іншому LCD моніторі в якому інша роздільна здатність, то там джитер такий же.

dimich пише:

А як, наприклад, виглядають вертикальні лінії в один піксель з інтервалом в пару десятків пікселів?

Перевірю. Ще прийшла в голову думка, запустити на таймері ШІМ із піксельною частотою і заповненням 50% , тоді тактову частоту таймера і LTDC можна буде подати на окремі входи кольорів, і візуально оцінити чи працюють вони синхронно.

Неактивний

#24 2025-03-31 04:39:03

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 321

Re: STM32f429 LTDC VGA джитер

duron пише:

Ще прийшла в голову думка, запустити на таймері ШІМ із піксельною частотою і заповненням 50% , тоді тактову частоту таймера і LTDC можна буде подати на окремі входи кольорів, і візуально оцінити чи працюють вони синхронно.

Слушна думка. Там окремий PLLSAI, то може відбувається якийсь зрив генерації в самому МК. Але таке мало би бути видно на осцилограмі тактового виходу.

Ще, дуже здивуюсь, якщо причина в цьому, але чому б не перевірити. У програмі з гітхаба фреймбуфер розташований в зовнішній SDRAM. Спробуйте перемістити його у внутрішню SRAM.

Неактивний

#25 2025-03-31 13:39:40

duron
Учасник
Зареєстрований: 2024-02-23
Повідомлень: 30

Re: STM32f429 LTDC VGA джитер

dimich пише:

Спробуйте перемістити його у внутрішню SRAM.

Перемістив, нічого не змінилось.

dimich пише:

Слушна думка. Там окремий PLLSAI, то може відбувається якийсь зрив генерації в самому МК. Але таке мало би бути видно на осцилограмі тактового виходу..

Запустив ШІМ і підключив тактові виходи до входів кольорів. На LCD моніторі тактовий сигнал ШІМ, має такий же вигляд як і тактовий сигнал LTDC, тільки чорних смуг з шумом стало дві.
Підключив кінескопний монітор, взяв лупу, і став оцінювати кожен такт  ШІМ і LTDC, і помітив цікаву річ, сигнали йдуть синхронно один з одним, з цим проблем немає, але джитер присутній абсолютно на усіх пікселях від початку і до кінця екрану, і немає різниці чи це сигнал ШІМ чи LTDC.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму