Add 800x480p30 mode
this requires less OC than 800x480p60 and is verified to work with https://www.adafruit.com/product/2232
This commit is contained in:
parent
27edec7280
commit
c93f1fc417
5 changed files with 31 additions and 0 deletions
|
|
@ -18,6 +18,10 @@ DVItext1 display(DVI_RES_640x240p60, adafruit_feather_dvi_cfg);
|
||||||
// Here's how a 100x60 char display might be declared:
|
// Here's how a 100x60 char display might be declared:
|
||||||
//DVItext1 display(DVI_RES_800x480p60, adafruit_feather_dvi_cfg);
|
//DVItext1 display(DVI_RES_800x480p60, adafruit_feather_dvi_cfg);
|
||||||
|
|
||||||
|
// A reduced refresh rate display doesn't as aggressive an over-clock
|
||||||
|
// This timing is verified to work on https://www.adafruit.com/product/2232
|
||||||
|
//DVItext1 display(DVI_RES_800x240p30, adafruit_feather_dvi_cfg);
|
||||||
|
|
||||||
void setup() { // Runs once on startup
|
void setup() { // Runs once on startup
|
||||||
if (!display.begin()) { // Blink LED if insufficient RAM
|
if (!display.begin()) { // Blink LED if insufficient RAM
|
||||||
pinMode(LED_BUILTIN, OUTPUT);
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,13 @@ static struct {
|
||||||
} dvispec[] = {
|
} dvispec[] = {
|
||||||
{dvi_timing_640x480p_60hz, VREG_VOLTAGE_1_20, 320, 240, 2},
|
{dvi_timing_640x480p_60hz, VREG_VOLTAGE_1_20, 320, 240, 2},
|
||||||
{dvi_timing_800x480p_60hz, VREG_VOLTAGE_1_20, 400, 240, 2},
|
{dvi_timing_800x480p_60hz, VREG_VOLTAGE_1_20, 400, 240, 2},
|
||||||
|
{dvi_timing_800x480p_30hz, VREG_VOLTAGE_1_20, 400, 240, 2},
|
||||||
{dvi_timing_640x480p_60hz, VREG_VOLTAGE_1_20, 640, 480, 1},
|
{dvi_timing_640x480p_60hz, VREG_VOLTAGE_1_20, 640, 480, 1},
|
||||||
{dvi_timing_800x480p_60hz, VREG_VOLTAGE_1_20, 800, 480, 1},
|
{dvi_timing_800x480p_60hz, VREG_VOLTAGE_1_20, 800, 480, 1},
|
||||||
|
{dvi_timing_800x480p_30hz, VREG_VOLTAGE_1_20, 800, 480, 1},
|
||||||
{dvi_timing_640x480p_60hz, VREG_VOLTAGE_1_20, 640, 240, 2},
|
{dvi_timing_640x480p_60hz, VREG_VOLTAGE_1_20, 640, 240, 2},
|
||||||
{dvi_timing_800x480p_60hz, VREG_VOLTAGE_1_20, 800, 240, 2},
|
{dvi_timing_800x480p_60hz, VREG_VOLTAGE_1_20, 800, 240, 2},
|
||||||
|
{dvi_timing_800x480p_30hz, VREG_VOLTAGE_1_20, 800, 240, 2},
|
||||||
// Additional resolutions might get added here if the overclock issue can
|
// Additional resolutions might get added here if the overclock issue can
|
||||||
// be sorted out. Regardless, always keep this list 1:1 in sync with the
|
// be sorted out. Regardless, always keep this list 1:1 in sync with the
|
||||||
// DVIresolution enum in PicoDVI.h.
|
// DVIresolution enum in PicoDVI.h.
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,13 @@
|
||||||
enum DVIresolution {
|
enum DVIresolution {
|
||||||
DVI_RES_320x240p60 = 0,
|
DVI_RES_320x240p60 = 0,
|
||||||
DVI_RES_400x240p60,
|
DVI_RES_400x240p60,
|
||||||
|
DVI_RES_400x240p30, // Reduced refresh rate, less overclock required
|
||||||
DVI_RES_640x480p60,
|
DVI_RES_640x480p60,
|
||||||
DVI_RES_800x480p60,
|
DVI_RES_800x480p60,
|
||||||
|
DVI_RES_800x480p30, // Reduced refresh rate, less overclock required
|
||||||
DVI_RES_640x240p60, // "Tall" pixels, e.g. for 80-column text mode
|
DVI_RES_640x240p60, // "Tall" pixels, e.g. for 80-column text mode
|
||||||
DVI_RES_800x240p60, // Same, 100-column
|
DVI_RES_800x240p60, // Same, 100-column
|
||||||
|
DVI_RES_800x240p30, // Reduced refresh rate, less overclock required
|
||||||
DVI_RES_1280x720p30 // Experimenting, not working, plz don't use
|
DVI_RES_1280x720p30 // Experimenting, not working, plz don't use
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,26 @@ const struct dvi_timing __dvi_const(dvi_timing_800x480p_60hz) = {
|
||||||
.bit_clk_khz = 295200
|
.bit_clk_khz = 295200
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 800x480p 30 Hz, 148 MHz bit clock. This is not a CEA mode either , but needs
|
||||||
|
// lower overclock compared to dvi_timing_800x480p_60hz and the timing is
|
||||||
|
// verified to work on https://www.adafruit.com/product/2232
|
||||||
|
const struct dvi_timing __dvi_const(dvi_timing_800x480p_30hz) = {
|
||||||
|
.h_sync_polarity = false,
|
||||||
|
.h_front_porch = 24,
|
||||||
|
.h_sync_width = 72,
|
||||||
|
.h_back_porch = 96,
|
||||||
|
.h_active_pixels = 800,
|
||||||
|
|
||||||
|
.v_sync_polarity = true,
|
||||||
|
.v_front_porch = 3,
|
||||||
|
.v_sync_width = 10,
|
||||||
|
.v_back_porch = 4,
|
||||||
|
.v_active_lines = 480,
|
||||||
|
|
||||||
|
.bit_clk_khz = 147600
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// SVGA reduced blanking (355 MHz bit clock) -- valid CVT mode, less common
|
// SVGA reduced blanking (355 MHz bit clock) -- valid CVT mode, less common
|
||||||
// than fully-blanked SVGA, but doesn't require such a high system clock
|
// than fully-blanked SVGA, but doesn't require such a high system clock
|
||||||
const struct dvi_timing __dvi_const(dvi_timing_800x600p_reduced_60hz) = {
|
const struct dvi_timing __dvi_const(dvi_timing_800x600p_reduced_60hz) = {
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,7 @@ extern const uint32_t dvi_ctrl_syms[4];
|
||||||
|
|
||||||
extern const struct dvi_timing dvi_timing_640x480p_60hz;
|
extern const struct dvi_timing dvi_timing_640x480p_60hz;
|
||||||
extern const struct dvi_timing dvi_timing_800x480p_60hz;
|
extern const struct dvi_timing dvi_timing_800x480p_60hz;
|
||||||
|
extern const struct dvi_timing dvi_timing_800x480p_30hz;
|
||||||
extern const struct dvi_timing dvi_timing_800x600p_60hz;
|
extern const struct dvi_timing dvi_timing_800x600p_60hz;
|
||||||
extern const struct dvi_timing dvi_timing_960x540p_60hz;
|
extern const struct dvi_timing dvi_timing_960x540p_60hz;
|
||||||
extern const struct dvi_timing dvi_timing_1280x720p_30hz;
|
extern const struct dvi_timing dvi_timing_1280x720p_30hz;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue