From 6e5f041f9aa1c91150988b47ea7de67b9e34b7db Mon Sep 17 00:00:00 2001 From: Wenxue <wenxue.guo@avnet.com> Date: Tue, 02 Sep 2025 10:08:16 +0800 Subject: [PATCH] GPIO模拟I2C实现SHT20 --- Core/Src/board/sht20.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Core/Src/board/sht20.c b/Core/Src/board/sht20.c index 2d279e6..92f9780 100644 --- a/Core/Src/board/sht20.c +++ b/Core/Src/board/sht20.c @@ -11,7 +11,7 @@ ***********************************************************************/ #include <stdio.h> #include <string.h> -#include "i2c.h" +#include "i2c_bitbang.h" #include "sht20.h" #define CONFIG_DEBUG_SHT2X /* Enable SHT20 debug */ @@ -61,6 +61,8 @@ float temp, rh; int rv; + i2c_lock(SHT2X_CHIPADDR); + if( sht2x_softreset() < 0 ) { sht2x_print("SHT20 soft reset failed.\r\n"); @@ -94,6 +96,7 @@ *humdity=rh; OUT: + i2c_free(); return rv; } @@ -104,8 +107,8 @@ sht2x_print("Start soft reset sht2x\r\n"); - rv=HAL_I2C_Master_Transmit(&hi2c1, SHT2X_CHIPADDR<<1, &command, 1, 0xFFFFFFFF); - if( rv != HAL_OK ) + rv=i2c_write(&command, 1); + if( rv ) { sht2x_print("SHT2X send soft reset command 0x%0x failure: rv=0x%02x\r\n", command, rv); return -rv; @@ -161,7 +164,7 @@ return -2; } - if( HAL_I2C_Master_Transmit(&hi2c1, SHT2X_CHIPADDR<<1, &command, 1, 0xFFFFFFFF) != HAL_OK ) + if( i2c_write(&command, 1) < 0 ) { sht2x_print("SHT2X send measure command 0x%0x failure\r\n", command); return -3; @@ -176,7 +179,7 @@ { memset(buf, 0, 3); - if( HAL_OK == HAL_I2C_Master_Receive(&hi2c1, SHT2X_CHIPADDR<<1|1, buf, 3, 0xFFFFFFFF) ) + if( !i2c_read(buf, 3) ) { break; } -- Gitblit v1.9.1