87 lines
1.5 KiB
C
87 lines
1.5 KiB
C
|
#pragma once
|
||
|
|
||
|
#if BITS_BIG_ENDIAN == 1
|
||
|
#error Bit structures defined in this file is not portable to BE
|
||
|
#endif
|
||
|
|
||
|
#define LP5562_ADDRESS 0x60
|
||
|
|
||
|
typedef enum {
|
||
|
EngExecHold=0b00,
|
||
|
EngExecStep=0b01,
|
||
|
EngExecRun=0b10,
|
||
|
EngExecPC=0b11,
|
||
|
} EngExec;
|
||
|
|
||
|
typedef struct {
|
||
|
EngExec ENG3_EXEC:2;
|
||
|
EngExec ENG2_EXEC:2;
|
||
|
EngExec ENG1_EXEC:2;
|
||
|
bool CHIP_EN:1;
|
||
|
bool LOG_EN:1;
|
||
|
} Reg00_Enable;
|
||
|
|
||
|
typedef enum {
|
||
|
EngModeDisable=0b00,
|
||
|
EngModeLoad=0b01,
|
||
|
EngModeRun=0b10,
|
||
|
EngModeDirect=0b11,
|
||
|
} EngMode;
|
||
|
|
||
|
typedef struct {
|
||
|
EngMode ENG3_MODE:2;
|
||
|
EngMode ENG2_MODE:2;
|
||
|
EngMode ENG1_MODE:2;
|
||
|
uint8_t reserved:2;
|
||
|
} Reg01_OpMode;
|
||
|
|
||
|
typedef struct {
|
||
|
bool INT_CLK_EN:1;
|
||
|
bool CLK_DET_EN:1;
|
||
|
uint8_t reserved0:3;
|
||
|
bool PS_EN:1;
|
||
|
bool PWM_HF:1;
|
||
|
uint8_t reserved1:1;
|
||
|
} Reg08_Config;
|
||
|
|
||
|
typedef struct {
|
||
|
uint8_t pc:3;
|
||
|
uint8_t reserved:5;
|
||
|
} Reg09_Engine1PC;
|
||
|
|
||
|
typedef struct {
|
||
|
uint8_t pc:3;
|
||
|
uint8_t reserved:5;
|
||
|
} Reg0A_Engine2PC;
|
||
|
|
||
|
typedef struct {
|
||
|
uint8_t pc:3;
|
||
|
uint8_t reserved:5;
|
||
|
} Reg0B_Engine3PC;
|
||
|
|
||
|
typedef struct {
|
||
|
bool ENG3_INT:1;
|
||
|
bool ENG2_INT:1;
|
||
|
bool ENG1_INT:1;
|
||
|
bool EXT_CLK_USED:1;
|
||
|
uint8_t reserved:5;
|
||
|
} Reg0C_Status;
|
||
|
|
||
|
typedef struct {
|
||
|
uint8_t value;
|
||
|
} Reg0D_Reset;
|
||
|
|
||
|
typedef enum {
|
||
|
EngSelectI2C=0b00,
|
||
|
EngSelectEngine1=0b01,
|
||
|
EngSelectEngine2=0b10,
|
||
|
EngSelectEngine3=0b11,
|
||
|
} EngSelect;
|
||
|
|
||
|
typedef struct {
|
||
|
EngSelect blue:2;
|
||
|
EngSelect green:2;
|
||
|
EngSelect red:2;
|
||
|
EngSelect white:2;
|
||
|
} Reg70_LedMap;
|