lp5562_reg.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #pragma once
  2. #if BITS_BIG_ENDIAN == 1
  3. #error Bit structures defined in this file is not portable to BE
  4. #endif
  5. #define LP5562_ADDRESS 0x60
  6. #define LP5562_I2C_TIMEOUT 50
  7. #define LP5562_CHANNEL_RED_CURRENT_REGISTER 0x07
  8. #define LP5562_CHANNEL_GREEN_CURRENT_REGISTER 0x06
  9. #define LP5562_CHANNEL_BLUE_CURRENT_REGISTER 0x05
  10. #define LP5562_CHANNEL_WHITE_CURRENT_REGISTER 0x0F
  11. #define LP5562_CHANNEL_RED_VALUE_REGISTER 0x04
  12. #define LP5562_CHANNEL_GREEN_VALUE_REGISTER 0x03
  13. #define LP5562_CHANNEL_BLUE_VALUE_REGISTER 0x02
  14. #define LP5562_CHANNEL_WHITE_VALUE_REGISTER 0x0E
  15. typedef enum {
  16. EngExecHold = 0b00,
  17. EngExecStep = 0b01,
  18. EngExecRun = 0b10,
  19. EngExecPC = 0b11,
  20. } EngExec;
  21. typedef struct {
  22. EngExec ENG3_EXEC : 2;
  23. EngExec ENG2_EXEC : 2;
  24. EngExec ENG1_EXEC : 2;
  25. bool CHIP_EN : 1;
  26. bool LOG_EN : 1;
  27. } Reg00_Enable;
  28. typedef enum {
  29. EngModeDisable = 0b00,
  30. EngModeLoad = 0b01,
  31. EngModeRun = 0b10,
  32. EngModeDirect = 0b11,
  33. } EngMode;
  34. typedef struct {
  35. EngMode ENG3_MODE : 2;
  36. EngMode ENG2_MODE : 2;
  37. EngMode ENG1_MODE : 2;
  38. uint8_t reserved : 2;
  39. } Reg01_OpMode;
  40. typedef struct {
  41. bool INT_CLK_EN : 1;
  42. bool CLK_DET_EN : 1;
  43. uint8_t reserved0 : 3;
  44. bool PS_EN : 1;
  45. bool PWM_HF : 1;
  46. uint8_t reserved1 : 1;
  47. } Reg08_Config;
  48. typedef struct {
  49. uint8_t pc : 3;
  50. uint8_t reserved : 5;
  51. } Reg09_Engine1PC;
  52. typedef struct {
  53. uint8_t pc : 3;
  54. uint8_t reserved : 5;
  55. } Reg0A_Engine2PC;
  56. typedef struct {
  57. uint8_t pc : 3;
  58. uint8_t reserved : 5;
  59. } Reg0B_Engine3PC;
  60. typedef struct {
  61. bool ENG3_INT : 1;
  62. bool ENG2_INT : 1;
  63. bool ENG1_INT : 1;
  64. bool EXT_CLK_USED : 1;
  65. uint8_t reserved : 5;
  66. } Reg0C_Status;
  67. typedef struct {
  68. uint8_t value;
  69. } Reg0D_Reset;
  70. typedef enum {
  71. EngSelectI2C = 0b00,
  72. EngSelectEngine1 = 0b01,
  73. EngSelectEngine2 = 0b10,
  74. EngSelectEngine3 = 0b11,
  75. } EngSelect;
  76. typedef struct {
  77. EngSelect blue : 2;
  78. EngSelect green : 2;
  79. EngSelect red : 2;
  80. EngSelect white : 2;
  81. } Reg70_LedMap;