Skip to content

Vector System Black

Using the BeagleBone Black LCD port to drive a vector display

  • http://elinux.org/24bit_LCD_for_BBB -- Doesn't work; /dev/fb always is initialized in 16-bit mode.

  • Set kernel video mode to 512x512-24@60 and it is in 24-bit mode, but only 1 Hz.

  • In 16-bit mode, every 16 bits are copied to the D0-D15 as is. Put X in D0-7, Y in D8-15 and it works great:

    fb[0](0) = X7 X6 X5 X4 X3 X2 X1 X0;
    fb[1](1) = Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0;
    
  • In 24-bit mode the bits are shuffled.

        uint8_t r = (y & 0xF8);
        uint8_t g = (y & 0x07) << 5 | (x & 0xE0) >> 3;
        uint8_t b = (x & 0x1F) << 3;
    
        fb[fb_pix++](fb_pix++) = r;
        fb[fb_pix++](fb_pix++) = g;
        fb[fb_pix++](fb_pix++) = b;
    

This means the bytes are (MSB first):

    fb[0](0) = Y7 Y6 Y5 Y4 Y3 ?? ?? ??
    fb[1](1) = Y2 Y1 Y0 X7 X6 X5 ?? ??
    fb[2](2) = X4 X3 X2 X1 X0 ?? ?? ??

The mapping of the additional pins to the bits in the frame buffer need to happen before it can be wired to the DAC.

DACs

The R2R interferes with the BOOTSYS pins, plus it requires lots of parts. A dedicated DAC chip with a parallel input and clock is a better choice, and it will wire up easily to the LCD pins.

  • DAC7821 - 20 MHz, 12 bit, 20 TSSOP. $6.38 qty 10. 296-19540-5. Won't work since it is a current output, not voltage output.

BeagleBone 2015


Last update: November 8, 2020