#ifndef ENCODER_DRV_KTH5763_H #define ENCODER_DRV_KTH5763_H #include #define CALIBRATION_MODE 0 typedef enum { XY_MODE = 0x06, XZ_MODE = 0x0A, YZ_MODE = 0x0C, #if (CALIBRATION_MODE) XYZ_MODE = 0x0F, #endif } kth5763_duty_cycle_mode_t; #define KTH5763_I2C_ADDR 0x78 #define KTH5701_I2C_ADDR 0x68 #define KTH5763_CHIP_ID 0x0203 #define SINGLE_CONVERSION_MODE_CMD 0x03 // 单次测量模式 #define RESET_CMD 0xF0 // 复位 #define KTH5763_STATUS_REG 0x06 #define KTH5763_CHIPID_REG 0x0D #define DUTY_CYCLE_MODE_CMD 0x20 #define SINGLE_MEASUREMENT_CMD 0x30 #define READ_MEASUREMENT_CMD 0x40 #define READ_REG_CMD 0x50 #define WRITE_REG_CMD 0x60 #define EXIT_IDLE_MODE_CMD 0x80 uint32_t kth5763_init(void); uint32_t kth5763_enter_idle(void); uint32_t kth5763_exit_idle(void); uint32_t kth5763_reset(void); uint32_t kth5763_get_chip_id(uint16_t *chip_id); uint32_t kth5763_init_reg(void); uint32_t kth5763_duty_cycle_mode(kth5763_duty_cycle_mode_t mode); uint32_t kth5763_measurement(kth5763_duty_cycle_mode_t mode, uint16_t *ret_angle); uint32_t kth5763_xyz_measurement(kth5763_duty_cycle_mode_t mode, uint8_t *ret_array); #endif