Update 16 bit parallel PIO code
Reduced PIO instruction count
This commit is contained in:
parent
8b272a2cef
commit
f9b6633647
|
|
@ -33,6 +33,8 @@ next:
|
|||
jmp y--, next side 1
|
||||
|
||||
.wrap_target
|
||||
// Transmit an 8 bit value (LS 8 bits of 32 bits).
|
||||
public start_8:
|
||||
// Transmit a 16 bit value (LS 16 bits of 32 bits).
|
||||
public start_tx:
|
||||
// Fetch the next 32 bit value from the TX FIFO and set TFT_WR high.
|
||||
|
|
@ -43,16 +45,6 @@ public start_tx:
|
|||
// Set WR high and jump back to start.
|
||||
jmp start_tx side 1
|
||||
|
||||
// Transmit an 8 bit value (LS 8 bits of 32 bits).
|
||||
public start_8:
|
||||
// Fetch the next 32 bit value from the TX FIFO and set TFT_WR high.
|
||||
pull side 1
|
||||
// Write the first byte (LSB) and sets WR low. This also
|
||||
// shifts the unused top 16 bits through.
|
||||
out pins, 32 side 0 [1]
|
||||
// Jump to start
|
||||
jmp start_tx side 1
|
||||
|
||||
// Transmit a set window command sequence.
|
||||
public set_addr_window:
|
||||
// Loop count in x (to send caset, paset and ramwr commands).
|
||||
|
|
@ -75,7 +67,7 @@ send_xy:
|
|||
out pins, 8 side 0 [1]
|
||||
// Loop until 4 bytes sent, TFT_WR high.
|
||||
jmp !osre, send_xy side 1 [1]
|
||||
end_set_addr:
|
||||
end_set_addr: // Jump here since delay needed before DC change
|
||||
// Loop back for next command and write last command.
|
||||
jmp x--, pull_cmd side 1
|
||||
// Set DC high.
|
||||
|
|
|
|||
|
|
@ -13,12 +13,12 @@
|
|||
// ------ //
|
||||
|
||||
#define tft_io_wrap_target 7
|
||||
#define tft_io_wrap 23
|
||||
#define tft_io_wrap 20
|
||||
|
||||
#define tft_io_offset_block_fill 0u
|
||||
#define tft_io_offset_start_8 7u
|
||||
#define tft_io_offset_start_tx 7u
|
||||
#define tft_io_offset_start_8 10u
|
||||
#define tft_io_offset_set_addr_window 13u
|
||||
#define tft_io_offset_set_addr_window 10u
|
||||
|
||||
static const uint16_t tft_io_program_instructions[] = {
|
||||
0x98a0, // 0: pull block side 1
|
||||
|
|
@ -32,27 +32,24 @@ static const uint16_t tft_io_program_instructions[] = {
|
|||
0x98a0, // 7: pull block side 1
|
||||
0x7100, // 8: out pins, 32 side 0 [1]
|
||||
0x1807, // 9: jmp 7 side 1
|
||||
0x98a0, // 10: pull block side 1
|
||||
0x7100, // 11: out pins, 32 side 0 [1]
|
||||
0x1807, // 12: jmp 7 side 1
|
||||
0xf822, // 13: set x, 2 side 1
|
||||
0xe000, // 14: set pins, 0
|
||||
0x80a0, // 15: pull block
|
||||
0x7000, // 16: out pins, 32 side 0
|
||||
0x0036, // 17: jmp !x, 22
|
||||
0x98a0, // 18: pull block side 1
|
||||
0xe001, // 19: set pins, 1
|
||||
0x7108, // 20: out pins, 8 side 0 [1]
|
||||
0x19f4, // 21: jmp !osre, 20 side 1 [1]
|
||||
0x184e, // 22: jmp x--, 14 side 1
|
||||
0xe001, // 23: set pins, 1
|
||||
0xf822, // 10: set x, 2 side 1
|
||||
0xe000, // 11: set pins, 0
|
||||
0x80a0, // 12: pull block
|
||||
0x7000, // 13: out pins, 32 side 0
|
||||
0x0033, // 14: jmp !x, 19
|
||||
0x98a0, // 15: pull block side 1
|
||||
0xe001, // 16: set pins, 1
|
||||
0x7108, // 17: out pins, 8 side 0 [1]
|
||||
0x19f1, // 18: jmp !osre, 17 side 1 [1]
|
||||
0x184b, // 19: jmp x--, 11 side 1
|
||||
0xe001, // 20: set pins, 1
|
||||
// .wrap
|
||||
};
|
||||
|
||||
#if !PICO_NO_HARDWARE
|
||||
static const struct pio_program tft_io_program = {
|
||||
.instructions = tft_io_program_instructions,
|
||||
.length = 24,
|
||||
.length = 21,
|
||||
.origin = -1,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue