📄 adt_if.h
字号:
#ifndef _ADT_H_
#define _ADT_H_
#include <i2c.h>
#include <stdio.h>
#define ADT_I2C_ADDR 0x5e
#define ADT_TEMP0_ADR 0x20
#define ADT_TEMP1_ADR 0x21
#define ADT_TEMP2_ADR 0x22
#define ADT_TEMP3_ADR 0x23
#define ADT_TEMP4_ADR 0x24
#define ADT_TEMP5_ADR 0x25
#define ADT_TEMP6_ADR 0x26
#define ADT_TEMP7_ADR 0x27
#define ADT_TEMP8_ADR 0x28
#define ADT_TEMP9_ADR 0x29
#define FAN1_TACH_ADR 0x2A
#define FAN2_TACH_ADR 0x2C
#define FAN3_TACH_ADR 0x2E
#define FAN4_TACH_ADR 0x30
#define FAN1_UNDERSPEED_ADDR 0x58
#define FAN2_UNDERSPEED_ADDR 0x5A
#define FAN3_UNDERSPEED_ADDR 0x5C
#define FAN4_UNDERSPEED_ADDR 0x5E
#define FAN1_OVERSPEED_ADDR 0x60
#define FAN2_OVERSPEED_ADDR 0x62
#define FAN3_OVERSPEED_ADDR 0x64
#define FAN4_OVERSPEED_ADDR 0x66
#define ADT_PWM1_ADR 0x32
#define ADT_PWM2_ADR 0x33
#define ADT_PWM3_ADR 0x34
#define ADT_PWM4_ADR 0x35
#define FANS_ONLINE_ADR 0x36
#define ADT_TEST_REG 0x37
#define ADT_COFIG 0x40
void SetFan_Underspeed()
{
uchar FanUnder_vaule[] = {0x20,0x0};
IICSendStr(ADT_I2C_ADDR,FAN1_UNDERSPEED_ADDR,FanUnder_vaule,0x2);
IICSendStr(ADT_I2C_ADDR,FAN2_UNDERSPEED_ADDR,FanUnder_vaule,0x2);
IICSendStr(ADT_I2C_ADDR,FAN2_UNDERSPEED_ADDR,FanUnder_vaule,0x2);
IICSendStr(ADT_I2C_ADDR,FAN2_UNDERSPEED_ADDR,FanUnder_vaule,0x2);
}
void SetFan_Overspeed()
{
uchar FanOver_vaule[] = {0x80,0x0};
IICSendStr(ADT_I2C_ADDR,FAN1_OVERSPEED_ADDR,FanOver_vaule,0x2);
IICSendStr(ADT_I2C_ADDR,FAN2_OVERSPEED_ADDR,FanOver_vaule,0x2);
IICSendStr(ADT_I2C_ADDR,FAN3_OVERSPEED_ADDR,FanOver_vaule,0x2);
IICSendStr(ADT_I2C_ADDR,FAN4_OVERSPEED_ADDR,FanOver_vaule,0x2);
}
uchar Meter_FanSpeed()
{
uchar Temp_Value[8];
IICRcvStr(ADT_I2C_ADDR,ADT_TEMP1_ADR,&Temp_Value,8);
return(Temp_Value);
}
uchar Get_Temp(uchar Sensor_No)
{
uchar Temp_Value;
uchar Temp_addr;
switch(Sensor_No)
{
case 0:Temp_addr = ADT_TEMP0_ADR;break;
case 1:Temp_addr = ADT_TEMP1_ADR;break;
case 2:Temp_addr = ADT_TEMP2_ADR;break;
case 3:Temp_addr = ADT_TEMP3_ADR;break;
case 4:Temp_addr = ADT_TEMP4_ADR;break;
case 5:Temp_addr = ADT_TEMP5_ADR;break;
case 6:Temp_addr = ADT_TEMP6_ADR;break;
case 7:Temp_addr = ADT_TEMP7_ADR;break;
case 8:Temp_addr = ADT_TEMP8_ADR;break;
case 9:Temp_addr = ADT_TEMP9_ADR;break;
}
IICRcvStr(ADT_I2C_ADDR,Temp_addr,&Temp_Value,1);
return(Temp_Value);
}
//hl_sel = 0, select TACH_L, hl_sel = 1, select TACH_h
unsigned int Get_FanTACH(uchar Fan_No)
{
uchar Temp_addr;
uchar Tach_l,Tach_h;
unsigned int Tach;
switch(Fan_No)
{
case 1:Temp_addr = FAN1_TACH_ADR;break;
case 2:Temp_addr = FAN2_TACH_ADR;break;
case 3:Temp_addr = FAN3_TACH_ADR;break;
case 4:Temp_addr = FAN4_TACH_ADR;break;
}
IICRcvStr(ADT_I2C_ADDR,Temp_addr,&Tach_l,1);
IICRcvStr(ADT_I2C_ADDR,Temp_addr+1,&Tach_h,1);
Tach = Tach_h<<8 + Tach_l;
return(Tach);
}
uchar Get_FanOnline()
{
uchar Fan_online;
IICRcvStr(ADT_I2C_ADDR,FANS_ONLINE_ADR,&Fan_online,1);
printf("The fan status is %x\n",Fan_online);
return(Fan_online);
}
void ADT_Init()
{
uchar Reg_Read;
uchar Wr_data ;
IICRcvStr(ADT_I2C_ADDR,0x3d,&Reg_Read,1);
printf("Dev ID = %x\n",Reg_Read);
IICRcvStr(ADT_I2C_ADDR,0x3e,&Reg_Read,1);
printf("Com ID = %x\n",Reg_Read);
IICRcvStr(ADT_I2C_ADDR,0x3f,&Reg_Read,1);
printf("Rev ID = %x\n",Reg_Read);
SetFan_Overspeed();
SetFan_Underspeed();
Wr_data = 0x1;
IICSendStr(ADT_I2C_ADDR,ADT_COFIG,&Wr_data,1);
Wr_data = 0x55;
IICSendStr(ADT_I2C_ADDR,ADT_TEST_REG,&Wr_data,1);
IICRcvStr(ADT_I2C_ADDR,ADT_TEST_REG,&Reg_Read,1);
if(Reg_Read == Wr_data)
printf("ADT success\n");
else
printf("ADT error\n");
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -