本帖最后由 wuxiubo 于 2022-12-11 15:56 编辑
申请到了开发板,拿到板子也是有段时间了,今天拿出来先做个简单的传感器实验,使用其硬件的IIC读取下SHT20温湿度传感器。
先看下配置,管脚上是使用了PB10和PB11,目前板载资源是非常的丰富的,所以很多的管脚是占用的情况。
可以看原理图,其实这两个管脚是分配给了LED灯的,所以运行起来是比较奇怪的,两个灯会一直闪烁的。
static uint8_t app_i2c_rx_buf[APP_I2C_BUF_LEN]; /* I2C rx buffer. */
static uint8_t app_i2c_tx_buf[APP_I2C_BUF_LEN]; /* I2C tx buffer. */
static I2C_MasterXfer_Type app_i2c_xfer;
/*
* Declerations.
*/
void app_i2c_init(void);
bool app_i2c_write(uint8_t txlen, uint8_t *txbuf);
bool app_i2c_read(uint8_t rxlen, uint8_t *rxbuf);
float TemValue,RhValue;
void SHT20_ReadValues(void)
{
uint8_t tem[3],rh[3];
uint16_t Tdata=0,RHdata=0;
uint8_t cmd;
cmd=SHT20_Trig_T;
app_i2c_write(1,&cmd);
delay_ms(100);
app_i2c_read(3,tem);
cmd=SHT20_Trig_RH;
app_i2c_write(1,&cmd);
delay_ms(100);
app_i2c_read(3,rh);
Tdata = tem[0];
Tdata <<= 8;
Tdata += tem[1] & 0xfe;
RHdata = rh[0];
RHdata <<= 8;
RHdata += rh[1] & 0xfe;
TemValue = Tdata * 175.72f / 65536 - 46.85f;
RhValue = RHdata * 125.0f / 65536 - 6.0f;
}
void SHT20_SoftReset(void)
{
uint8_t cmd=0xfe;
app_i2c_write(1,&cmd);
delay_ms(100);
// HAL_Delay(100);
}
代码上我们按照基础的案例进行修改即可,主要就是读写函数,目前也都给你弄好了的。
读取就是把原有的函数全部注释,然后我们直接加上我们的函数即可。
仿真可以直接看到读数的,后面我们还可以利用这块段码屏进行一个显示操作。
硬件接线图,可以看到两边还用排针进行了引出,非常的方便。
运行效果:
|