ISF15ACP4 Driver 1.0.0
API reference
Loading...
Searching...
No Matches
isf15acp4_spi_interface.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <cstddef>
9#include <cstdint>
10
11namespace isf15acp4 {
12
20enum class CtrlPin : uint8_t {
21 ChipSelect = 0,
22 DataCommand = 1,
23 Reset = 2,
24 VccEnable = 3,
25 Switch = 4
26};
27
32enum class GpioSignal : uint8_t {
33 Inactive = 0,
34 Active = 1
35};
36
44enum class SpiMode : uint8_t {
45 Mode0 = 0,
46 Mode3 = 3
47};
48
59template <typename Derived>
61public:
66 bool EnsureInitialized() noexcept {
67 return static_cast<Derived*>(this)->EnsureInitialized();
68 }
69
74 bool BeginCommand() noexcept { return static_cast<Derived*>(this)->BeginCommand(); }
75
80 bool BeginData() noexcept { return static_cast<Derived*>(this)->BeginData(); }
81
85 void EndTransaction() noexcept { static_cast<Derived*>(this)->EndTransaction(); }
86
93 bool WriteBytes(const uint8_t* data, std::size_t len) noexcept {
94 return static_cast<Derived*>(this)->WriteBytes(data, len);
95 }
96
102 void GpioSet(CtrlPin pin, GpioSignal signal) noexcept {
103 static_cast<Derived*>(this)->GpioSet(pin, signal);
104 }
105
111 bool GpioRead(CtrlPin pin) noexcept { return static_cast<Derived*>(this)->GpioRead(pin); }
112
117 void DelayUs(uint32_t us) noexcept { static_cast<Derived*>(this)->DelayUs(us); }
118
119 void GpioSetActive(CtrlPin pin) noexcept { GpioSet(pin, GpioSignal::Active); }
121
122 SpiInterface(const SpiInterface&) = delete;
124
125protected:
126 SpiInterface() = default;
127 ~SpiInterface() = default;
128};
129
130} // namespace isf15acp4
CRTP transport interface for SPI writes and GPIO control.
Definition isf15acp4_spi_interface.hpp:60
bool EnsureInitialized() noexcept
Ensure SPI bus and GPIO pins are configured.
Definition isf15acp4_spi_interface.hpp:66
void EndTransaction() noexcept
End the active SPI transaction (typically deassert CS).
Definition isf15acp4_spi_interface.hpp:85
void GpioSetInactive(CtrlPin pin) noexcept
Definition isf15acp4_spi_interface.hpp:120
SpiInterface(const SpiInterface &)=delete
SpiInterface & operator=(const SpiInterface &)=delete
bool BeginCommand() noexcept
Begin an SPI transaction with D/C in command mode.
Definition isf15acp4_spi_interface.hpp:74
void GpioSetActive(CtrlPin pin) noexcept
Definition isf15acp4_spi_interface.hpp:119
bool GpioRead(CtrlPin pin) noexcept
Read a digital input (typically the momentary switch).
Definition isf15acp4_spi_interface.hpp:111
void DelayUs(uint32_t us) noexcept
Blocking microsecond delay.
Definition isf15acp4_spi_interface.hpp:117
bool WriteBytes(const uint8_t *data, std::size_t len) noexcept
Write bytes on MOSI while a transaction is active.
Definition isf15acp4_spi_interface.hpp:93
bool BeginData() noexcept
Begin an SPI transaction with D/C in data mode.
Definition isf15acp4_spi_interface.hpp:80
void GpioSet(CtrlPin pin, GpioSignal signal) noexcept
Drive a control pin to an abstract signal level.
Definition isf15acp4_spi_interface.hpp:102
Definition isf15acp4.hpp:19
SpiMode
SPI mode required by NKK SmartDisplay devices.
Definition isf15acp4_spi_interface.hpp:44
GpioSignal
Abstract GPIO level for control pins.
Definition isf15acp4_spi_interface.hpp:32
CtrlPin
Hardware control signals for the SSD1331 SmartDisplay interface.
Definition isf15acp4_spi_interface.hpp:20
@ ChipSelect
SS / slave select (active-low on device)
@ Reset
RES# reset input: Active = held in reset (pin low), Inactive = running (pin high)
@ VccEnable
Optional charge-pump / 16V rail enable.
@ Switch
Optional momentary switch sense input.
@ DataCommand
D/C: command (inactive) vs data (active)