xlsw_3dp_LDC1612/inc/LDC1612.h
2024-12-19 20:12:28 +08:00

93 lines
2.7 KiB
C

//
// Created by dell on 24-12-3.
//
#ifndef LDC1612_H
#define LDC1612_H
#include "gd32e23x_it.h"
#include "gd32e23x.h"
#include "systick.h"
#include <stdbool.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define LDC1612_ADDR (0x2B << 1)
/*Register Rddr*/
/***************************************************************************/
#define CONVERTION_RESULT_REG_START 0X00
#define SET_CONVERSION_TIME_REG_START 0X08
#define SET_CONVERSION_OFFSET_REG_START 0X0C
#define SET_LC_STABILIZE_REG_START 0X10
#define SET_FREQ_REG_START 0X14
#define SENSOR_STATUS_REG 0X18
#define ERROR_CONFIG_REG 0X19
#define SENSOR_CONFIG_REG 0X1A
#define MUL_CONFIG_REG 0X1B
#define SENSOR_RESET_REG 0X1C
#define SET_DRIVER_CURRENT_REG 0X1E
#define RCOUNT_CH0_REG 0x08
#define SETTLECOUNT_CH0_REG 0x10
#define CLOCK_DIVIDERS_CH0_REG 0x14
#define ERROR_CONFIG_REG 0X19
#define MUX_CONFIG_REG 0x1B
#define DRIVE_CURRENT_CH0_REG 0x1E
#define SENSOR_CONFIG_REG 0X1A
#define READ_MANUFACTURER_ID 0X7E
#define READ_DEVICE_ID 0X7F
/******************************************************************************/
#define CHANNEL_0 0
#define CHANNEL_1 1
/******************************************************************************/
#define CONVERSION_TIME_CH0 0X0546 //0536
#define CONVERSION_OFFSET_CH0 0X0000
#define LC_STABILIZE_TIME_CH0 0X001E //30
typedef enum {
I2C_START = 0,
I2C_SEND_ADDRESS,
I2C_CLEAR_ADDRESS_FLAG,
I2C_TRANSMIT_DATA,
I2C_STOP
} i2c_process_enum;
#define I2C_TIME_OUT (uint16_t)(10000)
#define I2C_OK 1
#define I2C_FAIL 0
#define I2C_END 1
#define I2C_SPEED 20000
#define RCU_GPIO_I2C RCU_GPIOF
#define RCU_I2C RCU_I2C0
#define I2C_SCL_PORT GPIOF
#define I2C_SCL_PIN GPIO_PIN_1
#define I2C_SDA_PORT GPIOF
#define I2C_SDA_PIN GPIO_PIN_0
#define I2C_GPIO_AF GPIO_AF_1
void I2C_config(void);
void gpio_config(void);
void i2c_config(void);
void i2c_bus_reset(void);
void I2C_scan(void);
int LDC1612_IIC_read_16bits(uint8_t reg, uint16_t *data);
void ldc1612_iic_get_sensor_infomation(void);
uint16_t ldc1612_get_manufacturer_id(void);
uint16_t ldc1612_get_deveice_id(void);
uint8_t ldc1612_iic_read_16bits(uint8_t reg_addr, uint8_t *data);
int ldc1612_iic_write_16bits(uint8_t reg_addr, uint8_t data[2]);
#endif //LDC1612_H