10000 MacroPad RP2040: Add initialization for the OLED display by deshipu · Pull Request #4949 · adafruit/circuitpython · GitHub
[go: up one dir, main page]

Skip to content

MacroPad RP2040: Add initialization for the OLED display #4949

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 75 additions & 2 deletions ports/raspberrypi/boards/adafruit_macropad_rp2040/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,86 @@
* THE SOFTWARE.
*/

#include "supervisor/board.h"

#include "shared-bindings/board/__init__.h"
#include "shared-bindings/displayio/FourWire.h"
#include "shared-module/displayio/__init__.h"
#include "shared-module/displayio/mipi_constants.h"
#include "shared-bindings/busio/SPI.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "src/rp2_common/hardware_gpio/include/hardware/gpio.h"
#include "supervisor/shared/board.h"

displayio_fourwire_obj_t board_display_obj;

#define DELAY 0x80

uint8_t display_init_sequence[] = {
0xae, 0, // sleep
0xd5, 1, 0x80, // fOsc divide by 2
0xa8, 1, 0x3f, // multiplex 64
0xd3, 1, 0x00, // offset 0
0x40, 1, 0x00, // start line 0
0xad, 1, 0x8b, // dc/dc on
0xa1, 0, // segment remap = 0
0xc8, 0, // scan incr
0xda, 1, 0x12, // com pins
0x81, 1, 0xff, // contrast 255
0xd9, 1, 0x1f, // pre/dis-charge 2DCLKs/2CLKs
0xdb, 1, 0x20, // VCOM deslect 0.770
0x20, 1, 0x20,
0x33, 0, // VPP 9V
0xa6, 0, // not inverted
0xa4, 0, // normal
0xaf, 0, // on
};

void board_init(void) {
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
common_hal_busio_spi_construct(spi, &pin_GPIO26, &pin_GPIO27, NULL);
common_hal_busio_spi_never_reset(spi);

displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;
bus->base.type = &displayio_fourwire_type;
common_hal_displayio_fourwire_construct(bus,
spi,
&pin_GPIO24, // Command or data
&pin_GPIO22, // Chip select
&pin_GPIO23, // Reset
1000000, // Baudrate
0, // Polarity
0); // Phase

displayio_display_obj_t *display = &displays[0].display;
display->base.type = &displayio_display_type;
common_hal_displayio_display_construct(display,
bus,
128, // Width
64, // Height
2, // column start
0, // row start
0, // rotation
1, // Color depth
true, // grayscale
false, // pixels in byte share row. Only used with depth < 8
1, // bytes per cell. Only valid for depths < 8
false, // reverse_pixels_in_byte. Only valid for depths < 8
true, // reverse_pixels_in_word
0, // Set column command
0, // Set row command
0, // Write memory command
0xd3, // set vertical scroll command
display_init_sequence,
sizeof(display_init_sequence),
NULL,
0x81,
1.0f, // brightness
false, // auto_brightness
true, // single_byte_bounds
true, // data as commands
true, // auto_refresh
60, // native_frames_per_second
true, // backlight_on_high
true); // SH1107_addressing
}

bool board_requests_safe_mode(void) {
Expand Down
3 changes: 3 additions & 0 deletions ports/raspberrypi/boards/adafruit_macropad_rp2040/pins.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "shared-bindings/board/__init__.h"
#include "shared-module/displayio/__init__.h"

STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_KEY1), MP_ROM_PTR(&pin_GPIO1) },
Expand Down Expand Up @@ -43,5 +44,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {

{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_i2c_obj) },

{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}
};
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
0