Hi, I'm trying to program my STN32G431RB in order to work with the sensor HTS221, I write the code but I don't know if it's correct, I would be really grateful if someone could tell me.
while (1)
{
/* USER CODE END WHILE */
for (int i=0; i<11; i++)
{
buf1[i]=0x0;
}
for (int i=0; i<11; i++)
{
buf1[i]=0x0;
}
for (int i=0; i<11; i++)
{
buf2[i]=0x0;
}
for (int i=0; i<11; i++)
{
buf3[i]=0x0;
}
for (int i=0; i<11; i++)
{
buf4[i]=0x0;
}
for (int i=0; i<11; i++)
{
buf5[i]=0x0;
}
for (int i=0; i<11; i++)
{
buf6[i]=0x0;
}
for (int i=0; i<11; i++)
{
buf7[i]=0x0;
}
for (int i=0; i<11; i++)
{
buf8[i]=0x0;
}
for (int i=0; i<11; i++)
{
buf9[i]=0x0;
}
buf9[0] = WIA;
ret9 = HAL_I2C_Master_Transmit(&hi2c1, ADDR, buf9, 1, HAL_MAX_DELAY);
if (ret9 != HAL_OK) {
strcpy((char*)buf9, "Error Tx\r\n");
} else{
ret9 = HAL_I2C_Master_Receive(&hi2c1, ADDR, buf9, 2, HAL_MAX_DELAY);
if (ret9 != HAL_OK ) {
strcpy((char*)buf9, "Error Rx\r\n");
}else {
}
}
//Lettura umidità
buf1[0] = REGH_MSB;
ret1 = HAL_I2C_Master_Transmit(&hi2c1, ADDR, buf1, 1, HAL_MAX_DELAY);
if (ret1 != HAL_OK) {
strcpy((char*)buf1, "Error Tx\r\n");
} else{
ret1 = HAL_I2C_Master_Receive(&hi2c1, ADDR, buf1, 2, HAL_MAX_DELAY);
if (ret1 != HAL_OK ) {
strcpy((char*)buf1, "Error Rx\r\n");
}else {
buf2[0] = REGH_LSB;
ret2 = HAL_I2C_Master_Transmit(&hi2c1, ADDR, buf2, 1, HAL_MAX_DELAY);
if (ret2 != HAL_OK) {
strcpy((char*)buf2, "Error Tx\r\n");
} else{
ret2 = HAL_I2C_Master_Receive(&hi2c1, ADDR, buf2, 2, HAL_MAX_DELAY);
if (ret2 != HAL_OK ) {
strcpy((char*)buf2, "Error Rx\r\n");
}else {
H_OUT= buf1[0]<<8 | buf2[0];
}
}
}
}
//Lettura valori per conversione umidità
//1-H0_T0_OUT
buf3[0] = REG_H0_T0_OUT_LSB ;
ret3= HAL_I2C_Master_Transmit(&hi2c1, ADDR, buf3, 1, HAL_MAX_DELAY);
if (ret3 != HAL_OK) {
strcpy((char*)buf3, "Error Tx\r\n");
} else{
ret3 = HAL_I2C_Master_Receive(&hi2c1, ADDR, buf3, 2, HAL_MAX_DELAY);
if (ret1 != HAL_OK ) {
strcpy((char*)buf3, "Error Rx\r\n");
}else {
buf4[0] = REG_H0_T0_OUT_MSB;
ret4 = HAL_I2C_Master_Transmit(&hi2c1, ADDR, buf4, 1, HAL_MAX_DELAY);
if (ret4 != HAL_OK) {
strcpy((char*)buf4, "Error Tx\r\n");
} else{
ret4 = HAL_I2C_Master_Receive(&hi2c1, ADDR, buf4, 2, HAL_MAX_DELAY);
if (ret4 != HAL_OK ) {
strcpy((char*)buf4, "Error Rx\r\n");
}else {
H0_T0_OUT= buf4[0]<<8 | buf3[0];
}
}
}
}
//2-H1_T0_OUT
buf5[0] = REG_H1_T0_OUT_LSB ;
ret5= HAL_I2C_Master_Transmit(&hi2c1, ADDR, buf5, 1, HAL_MAX_DELAY);
if (ret5 != HAL_OK) {
strcpy((char*)buf5, "Error Tx\r\n");
} else{
ret5 = HAL_I2C_Master_Receive(&hi2c1, ADDR, buf5, 2, HAL_MAX_DELAY);
if (ret5 != HAL_OK ) {
strcpy((char*)buf5, "Error Rx\r\n");
}else {
buf6[0] = REG_H1_T0_OUT_MSB;
ret6 = HAL_I2C_Master_Transmit(&hi2c1, ADDR, buf6, 1, HAL_MAX_DELAY);
if (ret6 != HAL_OK) {
strcpy((char*)buf6, "Error Tx\r\n");
} else {
ret6 = HAL_I2C_Master_Receive(&hi2c1, ADDR, buf6, 2, HAL_MAX_DELAY);
if (ret6 != HAL_OK ) {
strcpy((char*)buf6, "Error Rx\r\n");
}else {
H1_T0_OUT= buf6[0]<<8 | buf5[0];
}
}
}
}
//3-H0_rHx2
buf7[0] = REG_H0_rH;
ret7= HAL_I2C_Master_Transmit(&hi2c1, ADDR, buf7, 1, HAL_MAX_DELAY);
if (ret7 != HAL_OK) {
strcpy((char*)buf7, "Error Tx\r\n");
} else{
ret7 = HAL_I2C_Master_Receive(&hi2c1, ADDR, buf7, 2, HAL_MAX_DELAY);
if (ret7 != HAL_OK ) {
strcpy((char*)buf7, "Error Rx\r\n");
}else {
H0_rHx2= buf7[0];
H0_rH= H0_rHx2 / 2;
}
}
//4-H1_rHx2
buf8[0] = REG_H1_rH;
ret8= HAL_I2C_Master_Transmit(&hi2c1, ADDR, buf8, 1, HAL_MAX_DELAY);
if (ret8 != HAL_OK) {
strcpy((char*)buf8, "Error Tx\r\n");
} else{
ret8 = HAL_I2C_Master_Receive(&hi2c1, ADDR, buf8, 2, HAL_MAX_DELAY);
if (ret8 != HAL_OK ) {
strcpy((char*)buf8, "Error Rx\r\n");
}else {
H1_rHx2= buf8[0] ;
H1_rH= H1_rHx2 /2;
}
}
C1= H1_rH-H0_rH;
C2=H_OUT-H0_T0_OUT;
C3=C1*C2;
C4=H1_T0_OUT-H0_T0_OUT;
C5=C3/C4;
HUM=C5+H0_rH;
