mcu_hi3321_watch/tjd/driver/encoder/kth5763/encoder_drv_kth5763.h
2025-05-26 20:15:20 +08:00

44 lines
1.1 KiB
C

#ifndef ENCODER_DRV_KTH5763_H
#define ENCODER_DRV_KTH5763_H
#include <stdint.h>
#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