|
|
|
@ -11,131 +11,131 @@ use crate::traits; |
|
|
|
#[allow(non_camel_case_types)] |
|
|
|
#[allow(non_camel_case_types)] |
|
|
|
#[derive(Copy, Clone)] |
|
|
|
#[derive(Copy, Clone)] |
|
|
|
pub(crate) enum Command { |
|
|
|
pub(crate) enum Command { |
|
|
|
DRIVER_OUTPUT_CONTROL = 0x01, |
|
|
|
DriverOutputControl = 0x01, |
|
|
|
|
|
|
|
|
|
|
|
/// Set gate driving voltage
|
|
|
|
/// Set gate driving voltage
|
|
|
|
GATE_DRIVING_VOLTAGE_CONTROL = 0x03, |
|
|
|
GateDrivingVoltageControl = 0x03, |
|
|
|
|
|
|
|
|
|
|
|
/// Set source driving voltage
|
|
|
|
/// Set source driving voltage
|
|
|
|
SOURCE_DRIVING_VOLTAGE_CONTROL = 0x04, |
|
|
|
SourceDrivingVoltageControl = 0x04, |
|
|
|
|
|
|
|
|
|
|
|
SOFT_START = 0x0C, |
|
|
|
SoftStart = 0x0C, |
|
|
|
|
|
|
|
|
|
|
|
/// Set the scanning start position of the gate driver.
|
|
|
|
/// Set the scanning start position of the gate driver.
|
|
|
|
/// The valid range is from 0 to 679.
|
|
|
|
/// The valid range is from 0 to 679.
|
|
|
|
GATE_SCAN_START_POSITION = 0x0F, |
|
|
|
GateScanStartPosition = 0x0F, |
|
|
|
|
|
|
|
|
|
|
|
/// Deep sleep mode control
|
|
|
|
/// Deep sleep mode control
|
|
|
|
DEEP_SLEEP = 0x10, |
|
|
|
DeepSleep = 0x10, |
|
|
|
|
|
|
|
|
|
|
|
/// Define data entry sequence
|
|
|
|
/// Define data entry sequence
|
|
|
|
DATA_ENTRY = 0x11, |
|
|
|
DataEntry = 0x11, |
|
|
|
|
|
|
|
|
|
|
|
/// resets the commands and parameters to their S/W Reset default values except R10h-Deep Sleep Mode.
|
|
|
|
/// resets the commands and parameters to their S/W Reset default values except R10h-Deep Sleep Mode.
|
|
|
|
/// During operation, BUSY pad will output high.
|
|
|
|
/// During operation, BUSY pad will output high.
|
|
|
|
/// Note: RAM are unaffected by this command.
|
|
|
|
/// Note: RAM are unaffected by this command.
|
|
|
|
SW_RESET = 0x12, |
|
|
|
SwReset = 0x12, |
|
|
|
|
|
|
|
|
|
|
|
/// After this command initiated, HV Ready detection starts.
|
|
|
|
/// After this command initiated, HV Ready detection starts.
|
|
|
|
/// BUSY pad will output high during detection.
|
|
|
|
/// BUSY pad will output high during detection.
|
|
|
|
/// The detection result can be read from the Status Bit Read (Command 0x2F).
|
|
|
|
/// The detection result can be read from the Status Bit Read (Command 0x2F).
|
|
|
|
HV_READY_DETECTION = 0x14, |
|
|
|
HvReadyDetection = 0x14, |
|
|
|
|
|
|
|
|
|
|
|
/// After this command initiated, VCI detection starts.
|
|
|
|
/// After this command initiated, VCI detection starts.
|
|
|
|
/// BUSY pad will output high during detection.
|
|
|
|
/// BUSY pad will output high during detection.
|
|
|
|
/// The detection result can be read from the Status Bit Read (Command 0x2F).
|
|
|
|
/// The detection result can be read from the Status Bit Read (Command 0x2F).
|
|
|
|
VCI_DETECTION = 0x15, |
|
|
|
VciDetection = 0x15, |
|
|
|
|
|
|
|
|
|
|
|
/// Temperature Sensor Selection
|
|
|
|
/// Temperature Sensor Selection
|
|
|
|
TEMPERATURE_SENSOR_CONTROL = 0x18, |
|
|
|
TemperatureSensorControl = 0x18, |
|
|
|
|
|
|
|
|
|
|
|
/// Write to temperature register
|
|
|
|
/// Write to temperature register
|
|
|
|
TEMPERATURE_SENSOR_WRITE = 0x1A, |
|
|
|
TemperatureSensorWrite = 0x1A, |
|
|
|
|
|
|
|
|
|
|
|
/// Read from temperature register
|
|
|
|
/// Read from temperature register
|
|
|
|
TEMPERATURE_SENSOR_READ = 0x1B, |
|
|
|
TemperatureSensorRead = 0x1B, |
|
|
|
|
|
|
|
|
|
|
|
/// Write Command to External temperature sensor.
|
|
|
|
/// Write Command to External temperature sensor.
|
|
|
|
TEMPERATURE_SENSOR_WRITE_EXTERNAL = 0x1C, |
|
|
|
TemperatureSensorWriteExternal = 0x1C, |
|
|
|
|
|
|
|
|
|
|
|
/// Activate Display Update Sequence
|
|
|
|
/// Activate Display Update Sequence
|
|
|
|
MASTER_ACTIVATION = 0x20, |
|
|
|
MasterActivation = 0x20, |
|
|
|
|
|
|
|
|
|
|
|
/// RAM content option for Display Update
|
|
|
|
/// RAM content option for Display Update
|
|
|
|
DISPLAY_UPDATE_CONTROL_1 = 0x21, |
|
|
|
DisplayUpdateControl1 = 0x21, |
|
|
|
|
|
|
|
|
|
|
|
/// Display Update Sequence Option
|
|
|
|
/// Display Update Sequence Option
|
|
|
|
DISPLAY_UPDATE_CONTROL_2 = 0x22, |
|
|
|
DisplayUpdateControl2 = 0x22, |
|
|
|
|
|
|
|
|
|
|
|
/// After this command, data entries will be written into the BW RAM until another command is written
|
|
|
|
/// After this command, data entries will be written into the BW RAM until another command is written
|
|
|
|
WRITE_RAM_BW = 0x24, |
|
|
|
WriteRamBw = 0x24, |
|
|
|
|
|
|
|
|
|
|
|
/// After this command, data entries will be written into the RED RAM until another command is written
|
|
|
|
/// After this command, data entries will be written into the RED RAM until another command is written
|
|
|
|
WRITE_RAM_RED = 0x26, |
|
|
|
WriteRamRed = 0x26, |
|
|
|
|
|
|
|
|
|
|
|
/// Fetch data from RAM
|
|
|
|
/// Fetch data from RAM
|
|
|
|
READ_RAM = 0x27, |
|
|
|
ReadRam = 0x27, |
|
|
|
|
|
|
|
|
|
|
|
/// Enter VCOM sensing conditions
|
|
|
|
/// Enter VCOM sensing conditions
|
|
|
|
VCOM_SENSE = 0x28, |
|
|
|
VcomSense = 0x28, |
|
|
|
|
|
|
|
|
|
|
|
/// Enter VCOM sensing conditions
|
|
|
|
/// Enter VCOM sensing conditions
|
|
|
|
VCOM_SENSE_DURATION = 0x29, |
|
|
|
VcomSenseDuration = 0x29, |
|
|
|
|
|
|
|
|
|
|
|
/// Program VCOM register into OTP
|
|
|
|
/// Program VCOM register into OTP
|
|
|
|
VCOM_PROGRAM_OTP = 0x2A, |
|
|
|
VcomProgramOtp = 0x2A, |
|
|
|
|
|
|
|
|
|
|
|
/// Reduces a glitch when ACVCOM is toggled
|
|
|
|
/// Reduces a glitch when ACVCOM is toggled
|
|
|
|
VCOM_CONTROL = 0x2B, |
|
|
|
VcomControl = 0x2B, |
|
|
|
|
|
|
|
|
|
|
|
/// Write VCOM register from MCU interface
|
|
|
|
/// Write VCOM register from MCU interface
|
|
|
|
VCOM_WRITE = 0x2C, |
|
|
|
VcomWrite = 0x2C, |
|
|
|
|
|
|
|
|
|
|
|
/// Read Register for Display Option
|
|
|
|
/// Read Register for Display Option
|
|
|
|
OTP_READ = 0x2D, |
|
|
|
OtpRead = 0x2D, |
|
|
|
|
|
|
|
|
|
|
|
/// CRC calculation command for OTP content validation
|
|
|
|
/// CRC calculation command for OTP content validation
|
|
|
|
CRC_CALCULATION = 0x34, |
|
|
|
CrcCalculation = 0x34, |
|
|
|
|
|
|
|
|
|
|
|
/// CRC Status Read
|
|
|
|
/// CRC Status Read
|
|
|
|
CRC_READ = 0x35, |
|
|
|
CrcRead = 0x35, |
|
|
|
|
|
|
|
|
|
|
|
/// Program OTP Selection according to the OTP Selection Control
|
|
|
|
/// Program OTP Selection according to the OTP Selection Control
|
|
|
|
PROGRAM_SELECTION = 0x36, |
|
|
|
ProgramSelection = 0x36, |
|
|
|
|
|
|
|
|
|
|
|
/// Write Register for Display Option
|
|
|
|
/// Write Register for Display Option
|
|
|
|
DISPLAY_OPTION_WRITE = 0x37, |
|
|
|
DisplayOptionWrite = 0x37, |
|
|
|
|
|
|
|
|
|
|
|
/// Write register for User ID
|
|
|
|
/// Write register for User ID
|
|
|
|
USER_ID_WRITE = 0x38, |
|
|
|
UserIdWrite = 0x38, |
|
|
|
|
|
|
|
|
|
|
|
/// Select border waveform for VBD
|
|
|
|
/// Select border waveform for VBD
|
|
|
|
VBD_CONTROL = 0x3C, |
|
|
|
VbdControl = 0x3C, |
|
|
|
|
|
|
|
|
|
|
|
/// Read RAM Option
|
|
|
|
/// Read RAM Option
|
|
|
|
READ_RAM_OPTION = 0x41, |
|
|
|
ReadRamOption = 0x41, |
|
|
|
|
|
|
|
|
|
|
|
/// Specify the start/end positions of the window address in the X direction by an address unit for RAM
|
|
|
|
/// Specify the start/end positions of the window address in the X direction by an address unit for RAM
|
|
|
|
SET_RAM_X_START_END = 0x44, |
|
|
|
SetRamXStartEnd = 0x44, |
|
|
|
|
|
|
|
|
|
|
|
/// Specify the start/end positions of the window address in the Y direction by an address unit for RAM
|
|
|
|
/// Specify the start/end positions of the window address in the Y direction by an address unit for RAM
|
|
|
|
SET_RAM_Y_START_END = 0x45, |
|
|
|
SetRamYStartEnd = 0x45, |
|
|
|
|
|
|
|
|
|
|
|
/// Auto write RED RAM for regular pattern
|
|
|
|
/// Auto write RED RAM for regular pattern
|
|
|
|
AUTO_WRITE_RED = 0x46, |
|
|
|
AutoWriteRed = 0x46, |
|
|
|
|
|
|
|
|
|
|
|
/// Auto write B/W RAM for regular pattern
|
|
|
|
/// Auto write B/W RAM for regular pattern
|
|
|
|
AUTO_WRITE_BW = 0x47, |
|
|
|
AutoWriteBw = 0x47, |
|
|
|
|
|
|
|
|
|
|
|
/// Make initial settings for the RAM X address in the address counter (AC)
|
|
|
|
/// Make initial settings for the RAM X address in the address counter (AC)
|
|
|
|
SET_RAM_X_AC = 0x4E, |
|
|
|
SetRamXAc = 0x4E, |
|
|
|
|
|
|
|
|
|
|
|
/// Make initial settings for the RAM Y address in the address counter (AC)
|
|
|
|
/// Make initial settings for the RAM Y address in the address counter (AC)
|
|
|
|
SET_RAM_Y_AC = 0x4F, |
|
|
|
SetRamYAc = 0x4F, |
|
|
|
|
|
|
|
|
|
|
|
/// This command is an empty command; it does not have any effect on the display module.
|
|
|
|
/// This command is an empty command; it does not have any effect on the display module.
|
|
|
|
/// However, it can be used to terminate Frame Memory Write or Read Commands.
|
|
|
|
/// However, it can be used to terminate Frame Memory Write or Read Commands.
|
|
|
|
NOP = 0x7F, |
|
|
|
Nop = 0x7F, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
impl traits::Command for Command { |
|
|
|
impl traits::Command for Command { |
|
|
|
@ -152,8 +152,8 @@ mod tests { |
|
|
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
#[test] |
|
|
|
fn command_addr() { |
|
|
|
fn command_addr() { |
|
|
|
assert_eq!(Command::MASTER_ACTIVATION.address(), 0x20); |
|
|
|
assert_eq!(Command::MasterActivation.address(), 0x20); |
|
|
|
assert_eq!(Command::SW_RESET.address(), 0x12); |
|
|
|
assert_eq!(Command::SwReset.address(), 0x12); |
|
|
|
assert_eq!(Command::DISPLAY_UPDATE_CONTROL_2.address(), 0x22); |
|
|
|
assert_eq!(Command::DisplayUpdateControl2.address(), 0x22); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|