Files

111 lines
2.6 KiB
C
Raw Permalink Normal View History

2026-04-23 13:49:53 +08:00
#ifndef ____HDL_CS5552_H_
#define ____HDL_CS5552_H_
#include "hc32_ll.h"
#include "hdl_clk.h"
#define CS5552_SPI CM_SPI1
#define CS5552_SPI_CLK FCG1_PERIPH_SPI1
#define CS5552_CS_PORT GPIO_PORT_A
#define CS5552_CS_PIN GPIO_PIN_04
#define CS5552_CS_FUNC GPIO_FUNC_42
#define CS5552_SCLK_PORT GPIO_PORT_A
#define CS5552_SCLK_PIN GPIO_PIN_07
#define CS5552_SCLK_FUNC GPIO_FUNC_43
#define CS5552_MISO_PORT GPIO_PORT_A
#define CS5552_MISO_PIN GPIO_PIN_06
#define CS5552_MISO_FUNC GPIO_FUNC_41
#define CS5552_MOSI_PORT GPIO_PORT_A
#define CS5552_MOSI_PIN GPIO_PIN_05
#define CS5552_MOSI_FUNC GPIO_FUNC_40
#define SET_CS5552_CS() GPIO_SetPins(CS5552_CS_PORT, CS5552_CS_PIN)
#define CLR_CS5552_CS() GPIO_ResetPins(CS5552_CS_PORT, CS5552_CS_PIN)
#define SET_CS5552_DOUT() GPIO_SetPins(CS5552_MISO_PORT, CS5552_MISO_PIN)
#define CLR_CS5552_DOUT() GPIO_ResetPins(CS5552_MISO_PORT, CS5552_MISO_PIN)
#define GET_CS5552_DOUT() GPIO_ReadInputPins(CS5552_MISO_PORT, CS5552_MISO_PIN)
#define SET_CS5552_DIN() GPIO_SetPins(CS5552_MOSI_PORT, CS5552_MOSI_PIN)
#define CLR_CS5552_DIN() GPIO_ResetPins(CS5552_MOSI_PORT, CS5552_MOSI_PIN)
#define SET_CS5552_SCLK() GPIO_SetPins(CS5552_SCLK_PORT, CS5552_SCLK_PIN)
#define CLR_CS5552_SCLK() GPIO_ResetPins(CS5552_SCLK_PORT, CS5552_SCLK_PIN)
#define OS_CH0_R 0x05
#define OS_CH0_W 0x00
#define GAIN_CH0_R 0x0C
#define GAIN_CH0_W 0x09
#define OS_CH1_R 0x14
#define OS_CH1_W 0x11
#define GAIN_CH1_R 0x1D
#define GAIN_CH1_W 0x18
#define CONV_CONF0_R 0x24
#define CONV_CONF0_W 0x21
#define CONV_CONF1_R 0x2D
#define CONV_CONF1_W 0x28
#define SYS_CONF0_R 0x35
#define SYS_CONF0_W 0x30
#define SYS_CONF1_R 0x3C
#define SYS_CONF1_W 0x39
#define SYS_CONF2_R 0x44
#define SYS_CONF2_W 0x41
#define CONV_DATA_R 0x55
#define CONV_CH0 0x81
#define CONV_CH1 0x90
#define SELF_OFFSET_CH0 0x84
#define SELF_OFFSET_CH1 0x95
#define SYS_OFFSET_CH0 0x8B
#define SYS_OFFSET_CH1 0x9A
#define OFFSET_CNT 9
typedef enum
{
CS5552_IDLE,
CS5552_OFFSET,
CS5552_OFFSET_READ,
CS5552_START,
CS5552_READ
}en_cs5552_step;
typedef enum
{
CS5552_CH0,
CS5552_CH1,
}en_cs5552_ch;
typedef struct
{
en_cs5552_step step; //流程
en_cs5552_ch channel_sta; //当前转换通道
int32_t buf[2]; //通道数据
uint32_t offset_ch0[OFFSET_CNT]; //通道0校准值
uint32_t offset_ch1[OFFSET_CNT]; //通道1校准值
}stc_cs5552_t;
void hdl_cs5552_init(void);
uint32_t hdl_cs5552_reg_read(uint8_t cmd);
void hdl_cs5552_value_get(int32_t *buf);
void hdl_cs5552_conv_start(void);
void hdl_cs5552_proc(void);
#endif