pub enum Command {
Show 29 variants
DriverOutputControl = 1,
SetGateDrivingVoltage = 3,
SetSourceDrivingVoltage = 4,
DeepSleepMode = 16,
DataEntryModeSetting = 17,
SwReset = 18,
MasterActivation = 32,
DisplayUpdateControl1 = 33,
DisplayUpdateControl2 = 34,
WriteLowRam = 36,
WriteHighRam = 38,
ReadVcom = 40,
SetVcomReadDuration = 41,
ProgramVcomOtp = 42,
WriteVcom = 44,
ReadOtpRegisters = 45,
ReadUserId = 46,
ProgramWsOtp = 48,
LoadWsOtp = 49,
WriteLut = 50,
ProgramOtpSelection = 54,
WriteRegisterForUserId = 56,
SetOtpProgramMode = 57,
SetBorderWaveform = 60,
SetLutMagic = 63,
SetRamXStartEnd = 68,
SetRamYStartEnd = 69,
SetRamX = 78,
SetRamY = 79,
}Expand description
Low-level commands for the Epd2In9 v2 display. You probably want to use the other methods exposed on the Epd2In9V2 for most operations, but can send commands directly with Epd2In9V2::send for low-level control or experimentation.
Variants§
DriverOutputControl = 1
Used to initialise the display.
SetGateDrivingVoltage = 3
Sets the gate driving voltage (standard value: 0x00, or 0x17).
SetSourceDrivingVoltage = 4
Sets the source driving voltage (standard value: [0x41, 0xA8, 0x32]).
DeepSleepMode = 16
Used to enter deep sleep mode. Requires a hardware reset and reinitialisation to wake up.
DataEntryModeSetting = 17
Changes the auto-increment behaviour of the address counter.
SwReset = 18
Resets all commands and parameters to default values (except deep sleep mode).
MasterActivation = 32
Activates the display update sequence. This must be set beforehand using Command::DisplayUpdateControl2. This operation must not be interrupted.
DisplayUpdateControl1 = 33
Used for a RAM “bypass” mode when using RefreshMode::Partial. This is poorly explained in the docs, but essentially we have these options:
In black and white mode:
0x00(default): just update the pixels that have changed between the two internal frame buffers. This normally does what you expect. You can hack it a bit to do interesting things by writing to both the old and new frame buffers.0x04: just update the white (BinaryColor::On) pixels in the current frame buffer. It doesn’t matter what is in the old frame buffer.0x08: just update the black (BinaryColor::Off) pixels in the current frame buffer. It doesn’t matter what is in the old frame buffer.
In 4-color greyscale mode: same as above for the behaviour of the black and white bit, but OR-ed with:
0x00(default)0x40(just update 1 bits)0x80(just update 0 bits)
TODO: verify the behaviour of greyscale mode.
DisplayUpdateControl2 = 34
Configures the display update sequence for use with Command::MasterActivation.
WriteLowRam = 36
Writes low bits to the current frame buffer.
WriteHighRam = 38
Writes high bits to the current frame buffer.
ReadVcom = 40
Triggers a read of the VCOM voltage. Requires that CLKEN and ANALOGEN have been enabled via Command::DisplayUpdateControl2.
SetVcomReadDuration = 41
Sets the duration to hold before reading the VCOM value.
ProgramVcomOtp = 42
Programs the VCOM register into the OTP. Requires that CLKEN has been enabled via Command::DisplayUpdateControl2.
WriteVcom = 44
Writes to the VCOM register.
ReadOtpRegisters = 45
?? Reads OTP registers (sections: VCOM OTP selection, VCOM register, Display Mode, Waveform Version).
ReadUserId = 46
?? Reads 10 byte User ID stored in OTP.
ProgramWsOtp = 48
?? Programs the OTP of Waveform Setting (requires writing the bytes into RAM first). Requires CLKEN to have been enabled via Command::DisplayUpdateControl2.
LoadWsOtp = 49
?? Loads the OTP of Waveform Setting. Requires CLKEN to have been enabled via Command::DisplayUpdateControl2.
WriteLut = 50
Writes the LUT register (153 bytes, containing VS[nX-LUTm], TP[nX], RP[n], SR[nXY], FR[n], and XON[nXY]).
ProgramOtpSelection = 54
?? Programs OTP selection according to the OTP selection control (registers 0x37 and 0x38). Requires CLKEN to have been enabled via Command::DisplayUpdateControl2.
WriteRegisterForUserId = 56
Undocumented command for writing OTP data.
Writes the register for the user ID that can be stored in the OTP.
SetOtpProgramMode = 57
?? Sets the OTP program mode:
- 0x00: normal mode
- 0x03: internally generated OTP programming voltage
SetBorderWaveform = 60
Undocumented command used when initialising each refresh mode.
SetLutMagic = 63
Undocumented command needed for setting the LUT.
SetRamXStartEnd = 68
Sets the start and end positions of the X axis for the auto-incrementing address counter. Start and end are inclusive.
Note that the x position can only be written on a whole byte basis (8 bits at once). The start and end positions are therefore sent right shifted 3 bits to indicate the byte number being written. For example, to write the first 32 x positions, you would send 0 (0 >> 3 = 0), and 3 (31 >> 3 = 3). If you tried to write just the first 25 x positions, you would end up sending the same values and actually writing all 32.
SetRamYStartEnd = 69
Sets the start and end positions of the Y axis for the auto-incrementing address counter. Start and end are inclusive.
SetRamX = 78
Sets the current x coordinate of the address counter. Note that the x position can only be configured as a multiple of 8.
SetRamY = 79
Sets the current y coordinate of the address counter.