44 lines
1.1 KiB
C
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 |