generated from hulk/gd32e23x_template
89 lines
2.3 KiB
C
89 lines
2.3 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>
|
|
|
|
/*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 READ_MANUFACTURER_ID 0X7E
|
|
#define READ_DEVICE_ID 0X7F
|
|
|
|
/******************************************************************************/
|
|
|
|
#define I2C_TIME_OUT (uint16_t)(10000)
|
|
#define LDC_I2C I2C0
|
|
#define I2C_SPEED 400000
|
|
|
|
typedef enum {
|
|
I2C_START = 0,
|
|
I2C_SEND_ADDRESS,
|
|
I2C_CLEAR_ADDRESS_FLAG,
|
|
I2C_TRANSMIT_DATA,
|
|
I2C_STOP
|
|
} i2c_process_enum;
|
|
|
|
#define I2C_OK 1
|
|
#define I2C_FAIL 0
|
|
#define I2C_END 1
|
|
|
|
#define RCU_IR_GPIO 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
|
|
|
|
#define LDC1612_ADDR (0x2B << 1)
|
|
|
|
// LDC1612 寄存器地址
|
|
#define RCOUNT0_ADDR 0x08
|
|
#define SETTLECOUNT0_ADDR 0x10
|
|
#define CLOCK_DIVIDERS0_ADDR 0x14
|
|
#define ERROR_CONFIG_ADDR 0x19
|
|
#define MUX_CONFIG_ADDR 0x1B
|
|
#define DRIVE_CURRENT0_ADDR 0x1E
|
|
#define CONFIG_ADDR 0x1A
|
|
|
|
|
|
|
|
void LDC1612_read_sensor_infomation(void);
|
|
|
|
void LDC1612_I2CConfig(void);
|
|
void LDC1612_Init(void);
|
|
int LDC1612_read_reg(uint8_t device_address, uint8_t reg_address, uint8_t *data, uint16_t length);
|
|
int i2c_write_reg(uint8_t device_address, uint8_t *data);
|
|
|
|
uint8_t eeprom_byte_write_timeout(uint8_t device_address, uint8_t *data);
|
|
|
|
void I2C_Scan(void);
|
|
|
|
uint8_t IIC_read_16bit(uint8_t reg, uint16_t *value);
|
|
|
|
int LDC_getID(void);
|
|
|
|
#endif //LDC1612_H
|