I wanted to compile a list of all the technical documentation/resources to anyone wanting to hack on the core library or really push the hardware to it's limits:
CPU: ARM Cortex m0+ / Amtel ATSAMD21???
I put the ??? because I"m not sure of the exact hardware variant chip we're using - but I'm also not sure it matters (as long as it's not the L variant, which has different Atmel reference docs).
- The SAM D series of chips: http://www.atmel.com/products/microcontrollers/arm/sam-d.aspx#samd21
- Atmel Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/40001884A.pdf (3.2mb)
- Atmel Details: http://ww1.microchip.com/downloads/en/DeviceDoc/40001882A.pdf (8.9mb)
- ARM Cortex-M0+ Technical Reference: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0484b/DDI0484B_cortex_m0p_r0p0_trm.pdf (0.4mb)
- ARM v6-M Architecture Reference: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0419d/DDI0419D_armv6m_arm.pdf (2.3mb)
The ST7735 is a single-chip controller/driver for 262K-color, graphic type TFT-LCD.
- http://www.displayfuture.com/Display/datasheet/controller/ST7735.pdf (2.1mb)
- VSYNC is not connected - Rodot: TDLR: We don't have VSYNC but it's not a problem. (https://gamebuino.com/community/topic/will-vsync-from-the-display-controller-be-connected-to-the-mcu)
- Interface is 3 or 4 line serial over SPI, which means write-only. You can't read the VRAM on the chip.
- Regardless of the API video mode (80x64, 160x128, RGB or indexed etc) chosen the core library internally drives the chip using the RGB565 (16 bit) data transfer mode, allowing 65k potential colors. When using indexed color the conversion is done on the fly as the data is sent to the video hardware.
- The chip also supports 12-bit and 18-bit color data transfer modes. I'm not sure why you'd ever need 18 but 12 could prove useful if anyone wanted to really push the frame rate. (reduces the data you have to push over SPI by 25%). Note: It should be pretty easy to test benefits here by just modifying the library to downsample 16 bit to 12bit before it sends it over the wire - to test the potential gains. [12 bit is only 4,096 colors]
- For libraries to bridge simpler platforms with reduced/lesser graphics requirements (Arduboy, black and white, etc.) faster frame rates should be easily possible. (by using 12-bit mode and only pushing the relevant part of the screen 60+ FPS should easily be possible)
The 8 hardware button/switches are directly wired over the SPI bus (CS pin=25). You transmit a byte and then the byte you receive in response is the real-time button state (one bit per button).
So far this is all I've got. I could zip everything up but I'm not sure about the attachment limits here. When I work on a project like this I typically download all the PDFs once into a local folder so I have them handy for easy access.
If I've gotten any of the links or details wrong, please let me know. This is more for people who want to hack on the core library or push the hardware to it's limits - or do crazy things. You probably don't need to know any of this to write a basic app using the Gamebuino API.
Though I do think the ST7735 reference might still be useful for people wanting to do slightly non-standard things with the graphics hardware.