ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
AHT20_ATY.c File Reference

Familiar functions of AHT20 for all embedded device. More...

#include "AHT20_ATY.h"

Go to the source code of this file.

Macros

#define __AHT20_ATY_C
 

Functions

void AHT20_SoftReset (void)
 AHT20 soft reset.
 
uint8_t AHT20_ReadStatusCmd (void)
 read AHT20 status reg
 
void AHT20_IcInitCmd (void)
 AHT20 chip initialization.
 
uint8_t AHT20_ReadBusyCmd (void)
 get AHT20 busy flag
 
uint8_t AHT20_ReadCalEnableCmd (void)
 read AHT20 calibration enable
 
void AHT20_TrigMeasure (void)
 AHT20 measure command.
 
void AHT20_ReadData (uint8_t *data_t)
 AHT20 measure command.
 
void AHT20_RegReset (uint8_t addr)
 reset AHT20 reg setting
 
void AHT20_RegInit (void)
 reset AHT20 reg setting
 
uint8_t AHT20_Init (void)
 AHT20 all initialize.
 
uint8_t AHT20_ReadHT (uint32_t *ht)
 read and split data to origin hum & tem
 
uint8_t AHT20_CalcResult (uint32_t *ht, float *aht)
 calculate result from 20bit origin data, RH=%, T=C
 
uint8_t AHT20_TemHumGet (uint16_t *ht)
 

Variables

uint8_t AHT20_InitFlag = 0
 calculate result from 20bit origin data, RH=%, T=C
 

Detailed Description

Familiar functions of AHT20 for all embedded device.

Parameters
ProjectDEVICE_GENERAL_ATY_LIB
Author
ATY
Version
  • 1_01_220804 > ATY
    1. Preliminary version, first Release
  • 1_02_220901 > ATY
    1. Init tmp to zero, test AHT20_Init()

Definition in file AHT20_ATY.c.

Macro Definition Documentation

◆ __AHT20_ATY_C

#define __AHT20_ATY_C

Definition at line 30 of file AHT20_ATY.c.

Function Documentation

◆ AHT20_CalcResult()

uint8_t AHT20_CalcResult ( uint32_t ht,
float *  aht 
)

calculate result from 20bit origin data, RH=%, T=C

Parameters
htinput origin data, always bigger than 0
ahtfloat data after calculate
Returns
errCode, 0: success, 1: out of range

Definition at line 253 of file AHT20_ATY.c.

254{
255 aht[0] = (double)ht[0] * 100 / 1024 / 1024; // hum
256 aht[1] = (double)ht[1] * 200 / 1024 / 1024; // tem
257
258 // limit data range, RH = 0~100%, Temperature = -40~85C(+50)
259 if((aht[0] >= 0) && (aht[0] <= 100) && (aht[1] >= 10) && (aht[1] <= 135))
260 return 0;
261 else
262 return 1;
263}

◆ AHT20_IcInitCmd()

void AHT20_IcInitCmd ( void  )

AHT20 chip initialization.

Definition at line 62 of file AHT20_ATY.c.

63{
64 const uint8_t temp_uint8[2] = {0x08, 0x00};
65 // temp_uint8[0] = 0x00;
66 // temp_uint8[1] = 0x00;
67 // I2C_WriteReg(ATH20_ADDRESS, AHT20_NOR_MODE, temp_uint8, 2);
68 // temp_uint8[0] = 0x08;
69 // temp_uint8[1] = 0x00;
70 I2C_WriteReg(ATH20_ADDRESS, AHT20_INIT, temp_uint8, 2);
71 // I2C_WriteReg(ATH20_ADDRESS, 0xE1, temp_uint8, 2);
72}
#define AHT20_INIT
Definition: AHT20_ATY.h:41
#define ATH20_ADDRESS
Definition: AHT20_ATY.h:38
uint8_t I2C_WriteReg(uint8_t addr, uint8_t reg, uint8_t *data_t, uint8_t len)
Write serial data to reg.
Definition: HW_I2C_ATY.c:296
unsigned char uint8_t
Definition: fw_types.h:18

◆ AHT20_Init()

uint8_t AHT20_Init ( void  )

AHT20 all initialize.

Returns
errCode, 0: success, !0: error

Definition at line 161 of file AHT20_ATY.c.

162{
163 uint8_t errCount = 5;
164
165 while(errCount--)
166 {
167 DelayMs(40); // wait time after power on
168 if((AHT20_ReadStatusCmd() & 0x18) != 0x18)
169 {
173 DelayMs(10);
174 continue;
175 }
176 else
177 break;
178 }
179 if(errCount == 0)
180 return 1;
181
182 errCount = 5;
183 while(errCount--)
184 {
185 // check if calibrate over
186 if(AHT20_ReadCalEnableCmd() == 0)
187 {
188 DelayMs(10);
189 // if not calibrated, reset to retry
191 // AHT20_SoftReset();
192 DelayMs(200); // time not sure
193 }
194 else
195 break;
196 }
197 if(errCount == 0)
198 return 2;
199
200 return 0;
201}
void AHT20_IcInitCmd(void)
AHT20 chip initialization.
Definition: AHT20_ATY.c:62
uint8_t AHT20_ReadStatusCmd(void)
read AHT20 status reg
Definition: AHT20_ATY.c:52
void AHT20_RegInit(void)
reset AHT20 reg setting
Definition: AHT20_ATY.c:148
uint8_t AHT20_ReadCalEnableCmd(void)
read AHT20 calibration enable
Definition: AHT20_ATY.c:90
void AHT20_SoftReset(void)
AHT20 soft reset.
Definition: AHT20_ATY.c:42
void DelayMs(uint32_t ms)

◆ AHT20_ReadBusyCmd()

uint8_t AHT20_ReadBusyCmd ( void  )

get AHT20 busy flag

Returns
busy flag: 1 - busy, 0 - leisure

Definition at line 79 of file AHT20_ATY.c.

80{
81 uint8_t temp_uint8 = 0;
82 temp_uint8 = AHT20_ReadStatusCmd();
83 return (temp_uint8 >> 7) & 0x01;
84}

◆ AHT20_ReadCalEnableCmd()

uint8_t AHT20_ReadCalEnableCmd ( void  )

read AHT20 calibration enable

Returns
calibration state: 1 - calibrate done, 0 - not calibrated

Definition at line 90 of file AHT20_ATY.c.

91{
92 uint8_t temp_uint8 = 0;
93 temp_uint8 = AHT20_ReadStatusCmd();
94 return (temp_uint8 >> 3) & 0x01;
95}

◆ AHT20_ReadData()

void AHT20_ReadData ( uint8_t data_t)

AHT20 measure command.

Parameters
data_tgroup to save origin reg data

Definition at line 112 of file AHT20_ATY.c.

113{
114 I2C_Start();
115 I2C_WriteRegByte(ATH20_ADDRESS << 1 | 1);
117 data_t[0] = I2C_ReadByte(1);
118 data_t[1] = I2C_ReadByte(1);
119 data_t[2] = I2C_ReadByte(1);
120 data_t[3] = I2C_ReadByte(1);
121 data_t[4] = I2C_ReadByte(1);
122 data_t[5] = I2C_ReadByte(0);
123 I2C_Stop();
124}
void I2C_Start(void)
Star I2C bus.
Definition: HW_I2C_ATY.c:74
uint8_t I2C_ReadByte(uint8_t ack)
I2C read one byte.
Definition: HW_I2C_ATY.c:190
uint8_t I2C_WaitAck(uint16_t maxErrTime)
Wait ack coming.
Definition: HW_I2C_ATY.c:137
void I2C_Stop(void)
Stop I2C bus.
Definition: HW_I2C_ATY.c:90
#define I2C_WAIT_ACK_TIME
Definition: HW_I2C_ATY.h:36

◆ AHT20_ReadHT()

uint8_t AHT20_ReadHT ( uint32_t ht)

read and split data to origin hum & tem

Parameters
htgroup to save hum & tem data
Returns
errCode, 0: success, !0: error

Definition at line 213 of file AHT20_ATY.c.

214{
215 uint8_t errCount = 5;
216 uint8_t temp_uint8[6] = {0};
217 uint32_t RetuData = 0;
218
220
221 while(errCount--)
222 {
223 // wait 75ms for measure finished, busy flag Bit7 set to 0
224 DelayMs(80);
225 AHT20_ReadData(temp_uint8);
226 if((temp_uint8[0] & 0x68) == 0x08)
227 {
228 // origin hum data
229 RetuData = temp_uint8[1];
230 RetuData = (RetuData << 8) | temp_uint8[2];
231 RetuData = (RetuData << 8) | temp_uint8[3];
232 RetuData = RetuData >> 4;
233 ht[0] = RetuData;
234
235 // origin tem data
236 RetuData = temp_uint8[3] & 0x0F;
237 RetuData = (RetuData << 8) | temp_uint8[4];
238 RetuData = (RetuData << 8) | temp_uint8[5];
239 ht[1] = RetuData;
240
241 return 0;
242 }
243 }
244 return 1;
245}
void AHT20_ReadData(uint8_t *data_t)
AHT20 measure command.
Definition: AHT20_ATY.c:112
void AHT20_TrigMeasure(void)
AHT20 measure command.
Definition: AHT20_ATY.c:100
unsigned long uint32_t
Definition: fw_types.h:20

◆ AHT20_ReadStatusCmd()

uint8_t AHT20_ReadStatusCmd ( void  )

read AHT20 status reg

Returns
reg data

Definition at line 52 of file AHT20_ATY.c.

53{
54 uint8_t temp_uint8 = 0;
55 I2C_ReadReg(ATH20_ADDRESS, AHT20_STATUS, &temp_uint8, 1);
56 return temp_uint8;
57}
#define AHT20_STATUS
Definition: AHT20_ATY.h:43
uint8_t I2C_ReadReg(uint8_t addr, uint8_t reg, uint8_t *data_t, uint8_t len)
Read serial data to reg.
Definition: HW_I2C_ATY.c:334

◆ AHT20_RegInit()

void AHT20_RegInit ( void  )

reset AHT20 reg setting

Note
generally not needed

Definition at line 148 of file AHT20_ATY.c.

149{
150 AHT20_RegReset(0x1B);
151 AHT20_RegReset(0x1C);
152 AHT20_RegReset(0x1D);
153}
void AHT20_RegReset(uint8_t addr)
reset AHT20 reg setting
Definition: AHT20_ATY.c:131

◆ AHT20_RegReset()

void AHT20_RegReset ( uint8_t  addr)

reset AHT20 reg setting

Parameters
addrreg address
Note
generally not needed

Definition at line 131 of file AHT20_ATY.c.

132{
133 uint8_t temp_uint8[3] = {0};
134 temp_uint8[0] = 0x00;
135 temp_uint8[1] = 0x00;
136 temp_uint8[2] = 0x00;
137 I2C_WriteReg(ATH20_ADDRESS, addr, temp_uint8, 2);
138 DelayMs(5);
139 I2C_ReadReg(ATH20_ADDRESS, AHT20_STATUS, temp_uint8, 3);
140 DelayMs(10);
141 I2C_WriteReg(ATH20_ADDRESS, 0xB0 | addr, temp_uint8 + 1, 2);
142}
uint8_t addr[8]
Definition: main.c:28

◆ AHT20_SoftReset()

void AHT20_SoftReset ( void  )

AHT20 soft reset.

Definition at line 42 of file AHT20_ATY.c.

43{
44 uint8_t temp_uint8 = 0;
46}
#define AHT20_SOFT_RST
Definition: AHT20_ATY.h:39

◆ AHT20_TemHumGet()

uint8_t AHT20_TemHumGet ( uint16_t ht)

Definition at line 271 of file AHT20_ATY.c.

272{
273 if(AHT20_InitFlag == 0)
274 {
275 if(AHT20_Init() == 1)
276 {
277 AHT20_InitFlag = 2; // init fail
278 }
279 else
280 {
281 AHT20_InitFlag = 1;
282 }
283 }
284 if(AHT20_InitFlag == 2)
285 {
286#ifdef __DEBUG_AHT20_ATY
287 printf("\r\n0xFF");
288#endif /* __DEBUG_AHT20_ATY */
289 return 0xFF;
290 }
291 else if(AHT20_InitFlag == 1)
292 {
293 // Init success
294 uint32_t tempHT_uint32[2] = {0};
295 float tempHT_f[2] = {0};
296 if(AHT20_ReadHT(tempHT_uint32) == 0)
297 {
298 if((tempHT_uint32[0] && tempHT_uint32[1]) != 0)
299 {
300 AHT20_CalcResult(tempHT_uint32, tempHT_f);
301 ht[0] = ((tempHT_f[0] * 1000) + 5) / 10;
302 ht[1] = ((tempHT_f[1] * 1000) + 5) / 10;
303#ifdef __DEBUG_AHT20_ATY
304 printf("\r\nHum: %.2f - Tem: %.2f", tempHT_f[0], tempHT_f[1] - 50);
305#endif /* __DEBUG_AHT20_ATY */
306 }
307 else
308 {
309#ifdef __DEBUG_AHT20_ATY
310 printf("\r\n0xFD");
311#endif /* __DEBUG_AHT20_ATY */
312 return 0xFD;
313 }
314 }
315 else
316 {
317#ifdef __DEBUG_AHT20_ATY
318 printf("\r\n0xFE");
319#endif /* __DEBUG_AHT20_ATY */
320 return 0xFE;
321 }
322 }
323
324 return 0;
325}
uint8_t AHT20_Init(void)
AHT20 all initialize.
Definition: AHT20_ATY.c:161
uint8_t AHT20_CalcResult(uint32_t *ht, float *aht)
calculate result from 20bit origin data, RH=%, T=C
Definition: AHT20_ATY.c:253
uint8_t AHT20_InitFlag
calculate result from 20bit origin data, RH=%, T=C
Definition: AHT20_ATY.c:270
uint8_t AHT20_ReadHT(uint32_t *ht)
read and split data to origin hum & tem
Definition: AHT20_ATY.c:213
__WEAK_ATY void printf(uint8_t *,...)

◆ AHT20_TrigMeasure()

void AHT20_TrigMeasure ( void  )

AHT20 measure command.

Definition at line 100 of file AHT20_ATY.c.

101{
102 const uint8_t temp_uint8[2] = {0x33, 0x00};
103 // temp_uint8[0] = 0x33;
104 // temp_uint8[1] = 0x00;
106}
#define AHT20_TRIG_MEASURE
Definition: AHT20_ATY.h:42

Variable Documentation

◆ AHT20_InitFlag

uint8_t AHT20_InitFlag = 0

calculate result from 20bit origin data, RH=%, T=C

Parameters
htdata group to save th value
Returns
errCode, 0: success, !0: error

Definition at line 270 of file AHT20_ATY.c.