20230731_XiaoFuZi_emb/ZheDaXiaoFuZi/Src/Usr/Driver/Ldrv/YS-OIW-Y516A/YsOiwY516ADef.h
Rjh913828050 a8560d741e 类型:重构
内容:重新整理项目文件分类
人员:任家豪
2023-10-08 16:10:23 +08:00

57 lines
2.1 KiB
C

#ifndef _Ys_Oiw_Y516A_Def_H_
#define _Ys_Oiw_Y516A_Def_H_
#include <stdint.h>
#include <stddef.h>
/* 寄存器地址定义 */
#define YS_OIW_Y516A_DEV_ADDR_REG 0x3000 // 存储设备地址的寄存器
#define YS_OIW_Y516A_DEV_SN_REG 0x0900 // 存储设备识别号的寄存器
#define YS_OIW_Y516A_DEV_START_MEASURE_REG 0x2500 // 开始测量寄存器
#define YS_OIW_Y516A_DEV_TEMP_REG 0x2600 // 温度寄存器
#define YS_OIW_Y516A_DEV_CHL_REG 0x2602 // 叶绿素寄存器
#define YS_OIW_Y516A_DEV_SOFT_VERSION_REG 0x0700 // 软件版本号寄存器
#define YS_OIW_Y516A_DEV_HARDW_VERSION_REG 0x0701 // 硬件版本号寄存器
#define YS_OIW_Y516A_DEV_STOP_MEASURE_REG 0x2E00 // 停止测量寄存器
#define YS_OIW_Y516A_DEV_USR_CHECK_REG 0x1100 // 用户校准参数寄存器
#define YS_OIW_Y516A_DEV_ENABLE 1
#define YS_OIW_Y516A_DEV_DISABLE 0
/* 发送接收函数格式定义 */
typedef int (*ys_oiw_y516a_read_fptr_t)(uint8_t *data, uint32_t length);
typedef int (*ys_oiw_y516a_write_fptr_t)(uint8_t *data, uint32_t length);
/* 延迟函数格式定义 */
typedef void (*ys_oiw_y516a_delay_ms_fptr_t)(uint32_t period);
/* 校验函数格式定义 */
typedef void (*ys_oiw_y516a_crc_fptr_t)(unsigned char *Buf, unsigned int BufLen , unsigned short *Crc);
/* 数据格式 */
typedef struct {
uint8_t TempIndex; // 温度值获取标志位
uint8_t OiwIndex; // 叶绿素值获取标志位
float Temp; // 获取的温度
float Oiw; // 获取的水中油
} ys_oiw_y516a_data;
/* 线性校准参数格式 */
typedef struct {
float k;
float b;
} ys_oiw_y516a_calib;
/* 设备定义 */
typedef struct {
uint16_t OldDevAddr;
uint16_t NewDevAddr;
char DevSn[15]; // 设备唯一识别码
uint8_t HdVer[2]; // 硬件版本
uint8_t Soft[2]; // 软件版本
ys_oiw_y516a_calib Calib; // 线性校准参数
ys_oiw_y516a_read_fptr_t Read; // 读函数
ys_oiw_y516a_write_fptr_t Write; // 写函数
ys_oiw_y516a_delay_ms_fptr_t DelayMs; // 毫秒级延迟函数
ys_oiw_y516a_crc_fptr_t Crc;
} ys_oiw_y516a_dev;
#endif