STM32 - способен генерировать сигнал VGA? - PullRequest
0 голосов
/ 27 марта 2020

Чтобы быть ясным, я очень плохо знаком с программированием STM32 и MBED, но возможно ли создать действительный сигнал VGA, используя плату STM32 nucleo-F070RB? Я взял этот стандарт , и моя цель - показать «что-то» на экране. Имея это в виду, я должен контролировать, какой пиксель я хочу включить.

Для демонстрации, вот мой (очень грубый) набросок:

#include <mbed.h>

DigitalOut led(LED1);
DigitalOut h_sync(PC_3);
DigitalOut v_sync(PC_2);
DigitalOut c_red(PC_0);

int main() {
        h_sync = 1;
        v_sync = 1;
        int line_count = 0;
        int color_red = 0;
    while(1) {
        wait_us(21);
        h_sync = 0;
        wait_us(3);
        h_sync = 1;
        wait_ns(2);
        line_count++;
        color_red++;
        if (color_red == 16) { color_red = 0; c_red = !c_red; }
        if (line_count == 601) v_sync = 0;
        if (line_count == 605) v_sync = 1;
        if (line_count == 628) { line_count = 0; c_red = 0; color_red = 0; }
    }
}

Я подключил V-Syn c к V-Syn c моего монитора, то же самое с H -Syn c и c_red (красный цвет) через резистор 560 Ом к КРАСНОМУ сигналу. И это (вроде) сработало! Он отображал красные полосы каждые 16 строк. Отлично, но мне нужно иметь возможность контролировать каждый пиксель (если это возможно). Я видел некоторые библиотеки VGA (возможно), но мне действительно нужно написать это самому - что-то очень грубое. Я просто хочу иметь какой-то контроль над пикселями, а не какой-то супер-супер что-то (только для меня, чтобы узнать :)). И поскольку у меня нет большого опыта работы с STM, по прошествии нескольких часов я не смог «убедить» свою плату генерировать такие «высокоскоростные» сигналы, так что это все-таки возможно?

Я использовал функцию тикера MBED для генерации синхронизации для каждого пикселя, но она не работала - самая быстрая, которую тикер прошел для меня, была где-то за несколько миллисекунд, слишком много. Могу ли я использовать прерывания по таймеру? Или что-то еще?

...