Skip to content

Commit 39aab66

Browse files
updated oleds ssd1327 and ssd1351 to modern Pin/GPIO API (#650)
1 parent 4ec3a5f commit 39aab66

File tree

2 files changed

+33
-41
lines changed

2 files changed

+33
-41
lines changed

src/dev/oled_ssd1327.h

+16-20
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ class SSD13274WireSpiTransport
2222
SpiHandle::Config spi_config;
2323
struct
2424
{
25-
dsy_gpio_pin dc; /**< & */
26-
dsy_gpio_pin reset; /**< & */
25+
Pin dc; /**< Pin used for Data/Command signaling */
26+
Pin reset; /**< Pin used for Reset */
2727
} pin_config;
2828
void Defaults()
2929
{
@@ -38,50 +38,46 @@ class SSD13274WireSpiTransport
3838
spi_config.nss = SpiHandle::Config::NSS::HARD_OUTPUT;
3939
spi_config.baud_prescaler = SpiHandle::Config::BaudPrescaler::PS_8;
4040
// SPI pin config
41-
spi_config.pin_config.sclk = {DSY_GPIOG, 11};
42-
spi_config.pin_config.miso = {DSY_GPIOX, 0};
43-
spi_config.pin_config.mosi = {DSY_GPIOB, 5};
44-
spi_config.pin_config.nss = {DSY_GPIOG, 10};
41+
spi_config.pin_config.sclk = Pin(PORTG, 11);
42+
spi_config.pin_config.miso = Pin(PORTX, 0);
43+
spi_config.pin_config.mosi = Pin(PORTB, 5);
44+
spi_config.pin_config.nss = Pin(PORTG, 10);
4545
// SSD1327 control pin config
46-
pin_config.dc = {DSY_GPIOB, 4};
47-
pin_config.reset = {DSY_GPIOB, 15};
46+
pin_config.dc = Pin(PORTB, 4);
47+
pin_config.reset = Pin(PORTB, 15);
4848
}
4949
};
5050
void Init(const Config& config)
5151
{
5252
// Initialize both GPIO
53-
pin_dc_.mode = DSY_GPIO_MODE_OUTPUT_PP;
54-
pin_dc_.pin = config.pin_config.dc;
55-
dsy_gpio_init(&pin_dc_);
56-
pin_reset_.mode = DSY_GPIO_MODE_OUTPUT_PP;
57-
pin_reset_.pin = config.pin_config.reset;
58-
dsy_gpio_init(&pin_reset_);
53+
pin_dc_.Init(config.pin_config.dc, GPIO::Mode::OUTPUT);
54+
pin_reset_.Init(config.pin_config.reset, GPIO::Mode::OUTPUT);
5955

6056
// Initialize SPI
6157
spi_.Init(config.spi_config);
6258

6359
// Reset and Configure OLED.
64-
dsy_gpio_write(&pin_reset_, 0);
60+
pin_reset_.Write(false);
6561
System::Delay(10);
66-
dsy_gpio_write(&pin_reset_, 1);
62+
pin_reset_.Write(true);
6763
System::Delay(10);
6864
};
6965
void SendCommand(uint8_t cmd)
7066
{
71-
dsy_gpio_write(&pin_dc_, 0);
67+
pin_dc_.Write(false);
7268
spi_.BlockingTransmit(&cmd, 1);
7369
};
7470

7571
void SendData(uint8_t* buff, size_t size)
7672
{
77-
dsy_gpio_write(&pin_dc_, 1);
73+
pin_dc_.Write(true);
7874
spi_.BlockingTransmit(buff, size);
7975
};
8076

8177
private:
8278
SpiHandle spi_;
83-
dsy_gpio pin_reset_;
84-
dsy_gpio pin_dc_;
79+
GPIO pin_reset_;
80+
GPIO pin_dc_;
8581
};
8682

8783

src/dev/oled_ssd1351.h

+17-21
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ class SSD13514WireSpiTransport
3131
SpiHandle::Config spi_config;
3232
struct
3333
{
34-
dsy_gpio_pin dc; /**< & */
35-
dsy_gpio_pin reset; /**< & */
34+
Pin dc; /**< Pin used for Data/Command signaling */
35+
Pin reset; /**< Pin used for Reset */
3636
} pin_config;
3737
void Defaults()
3838
{
@@ -47,56 +47,52 @@ class SSD13514WireSpiTransport
4747
spi_config.nss = SpiHandle::Config::NSS::HARD_OUTPUT;
4848
spi_config.baud_prescaler = SpiHandle::Config::BaudPrescaler::PS_8;
4949
// SPI pin config
50-
spi_config.pin_config.sclk = {DSY_GPIOG, 11};
51-
spi_config.pin_config.miso = {DSY_GPIOX, 0};
52-
spi_config.pin_config.mosi = {DSY_GPIOB, 5};
53-
spi_config.pin_config.nss = {DSY_GPIOG, 10};
50+
spi_config.pin_config.sclk = Pin(PORTG, 11);
51+
spi_config.pin_config.miso = Pin(PORTX, 0);
52+
spi_config.pin_config.mosi = Pin(PORTB, 5);
53+
spi_config.pin_config.nss = Pin(PORTG, 10);
5454
// SSD1351 control pin config
55-
pin_config.dc = {DSY_GPIOB, 4};
56-
pin_config.reset = {DSY_GPIOB, 15};
55+
pin_config.dc = Pin(PORTB, 4);
56+
pin_config.reset = Pin(PORTB, 15);
5757
}
5858
};
5959
void Init(const Config& config)
6060
{
6161
// Initialize both GPIO
62-
pin_dc_.mode = DSY_GPIO_MODE_OUTPUT_PP;
63-
pin_dc_.pin = config.pin_config.dc;
64-
dsy_gpio_init(&pin_dc_);
65-
pin_reset_.mode = DSY_GPIO_MODE_OUTPUT_PP;
66-
pin_reset_.pin = config.pin_config.reset;
67-
dsy_gpio_init(&pin_reset_);
62+
pin_reset_.Init(config.pin_config.reset, GPIO::Mode::OUTPUT);
63+
pin_dc_.Init(config.pin_config.dc, GPIO::Mode::OUTPUT);
6864

6965
// Initialize SPI
7066
spi_.Init(config.spi_config);
7167

7268
// Reset and Configure OLED.
73-
dsy_gpio_write(&pin_reset_, 0);
69+
pin_reset_.Write(false);
7470
System::Delay(10);
75-
dsy_gpio_write(&pin_reset_, 1);
71+
pin_reset_.Write(true);
7672
System::Delay(10);
7773
};
7874
void SendCommand(uint8_t cmd)
7975
{
80-
dsy_gpio_write(&pin_dc_, 0);
76+
pin_dc_.Write(false);
8177
spi_.BlockingTransmit(&cmd, 1);
8278
};
8379

8480
void SendData(uint8_t* buff, size_t size)
8581
{
86-
dsy_gpio_write(&pin_dc_, 1);
82+
pin_dc_.Write(true);
8783
spi_.BlockingTransmit(buff, size);
8884
};
8985

9086
void SendData(uint8_t data)
9187
{
92-
dsy_gpio_write(&pin_dc_, 1);
88+
pin_dc_.Write(true);
9389
spi_.BlockingTransmit(&data, 1);
9490
};
9591

9692
private:
9793
SpiHandle spi_;
98-
dsy_gpio pin_reset_;
99-
dsy_gpio pin_dc_;
94+
GPIO pin_reset_;
95+
GPIO pin_dc_;
10096
};
10197

10298

0 commit comments

Comments
 (0)