API HAL I2C: add timeout support. Update I2C API usage by drivers. (#374)

* API HAL I2C: add timeout support. Update I2C API usage by drivers.
* F4: Add missing API HAL Vibro implementation.
This commit is contained in:
あく
2021-03-10 16:23:54 +03:00
committed by GitHub
parent 468ee09785
commit 2f14f6dac5
15 changed files with 502 additions and 334 deletions

View File

@@ -5,66 +5,67 @@
#endif
#define LP5562_ADDRESS 0x60
#define LP5562_I2C_TIMEOUT 50
typedef enum {
EngExecHold=0b00,
EngExecStep=0b01,
EngExecRun=0b10,
EngExecPC=0b11,
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;
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,
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;
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;
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;
uint8_t pc : 3;
uint8_t reserved : 5;
} Reg09_Engine1PC;
typedef struct {
uint8_t pc:3;
uint8_t reserved:5;
uint8_t pc : 3;
uint8_t reserved : 5;
} Reg0A_Engine2PC;
typedef struct {
uint8_t pc:3;
uint8_t reserved:5;
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;
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 {
@@ -72,15 +73,15 @@ typedef struct {
} Reg0D_Reset;
typedef enum {
EngSelectI2C=0b00,
EngSelectEngine1=0b01,
EngSelectEngine2=0b10,
EngSelectEngine3=0b11,
EngSelectI2C = 0b00,
EngSelectEngine1 = 0b01,
EngSelectEngine2 = 0b10,
EngSelectEngine3 = 0b11,
} EngSelect;
typedef struct {
EngSelect blue:2;
EngSelect green:2;
EngSelect red:2;
EngSelect white:2;
EngSelect blue : 2;
EngSelect green : 2;
EngSelect red : 2;
EngSelect white : 2;
} Reg70_LedMap;