Following the last post on working out how the display data is formatted, I have come up with a better description of how the data is formatted.
The display is made up of rows, each row is made up of 128 bytes where each byte defines 8 vertical pixels.
On the Maschine Mikro Mk2 that means that 8 rows (64pixels) are required for the whole display.
In addition, each USB report can send up 256bytes of row data so an entire screen refresh requires 4 reports.
The Report header
After mucking around with the header fields I have managed to determine what each of them do
Field | Type | Description |
---|---|---|
Address | uint8 | Display or Message type identifier (0xE0 for the display) |
Column Offset | uint8 | A column within a row to insert pixel data |
- | uint8 | Possibly a high byte for the previous field for larger displays, set to 0 |
Row Offset | uint8 | Row from the top to insert pixel data |
- | uint8 | Possibly a high byte for the previous field for larger displays, set to 0 |
Row Width | uint8 | Width of each row in pixel data (allows for partial row updates) |
- | uint8 | Possibly a high byte for the previous field for larger displays, set to 0 |
Row Count | uint8 | Number of rows in pixel data, for a full row this would be 2, must be at least 1. |
- | uint | Possibly a high byte for the previous field for larger displays, set to 0 |
Following the header is up to 256 bytes of pixel data.
The following rules apply, Row Width x Row Count must be <= 256. So an entire vertical slice of the display can be updated by setting with width to 0x20 and the row count to 0x08.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.