#ifndef _Ys_Oiw_Y516A_Def_H_ #define _Ys_Oiw_Y516A_Def_H_ #include #include /* 寄存器地址定义 */ #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