繁体   English   中英

通过I2C,IIC上的Sensirion的STM32 HAL和SHT25

[英]STM32 HAL with SHT25 from sensirion over I2C,IIC

使用STM32 HAL驱动程序的任何人都可以使用诸如SHT25之类的Sensirion传感器进行I2C通信,并且可以向我展示他的摘要吗?

我使用sensirion的代码示例进行了交流。 https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/11_Sample_Codes_Software/Humidity_Sensors/Sensirion_Humidity_Sensors_SHT21_Sample_Code_V1.2.pdf )当我要读取传感器的数据时,我得到一个确认,我只得到“ 11111111”。

带有HAL驱动程序的STM32上的Sensirion SHTC1的工作代码:

#define SHTC1_I2C_ADDR  0xE0
#define TEMP_HUM_CMD_MEASURE_T_FIRST    0x7866

//Launch convert
uint8_t cmd[2];
cmd[0] = (uint8_t)(TEMP_HUM_CMD_MEASURE_T_FIRST >>> 8);
cmd[1] = (uint8_t)TEMP_HUM_CMD_MEASURE_T_FIRST;
HAL_I2C_Master_Transmit(&hi2c1, SHTC1_I2C_ADDR, cmd, 2, 100);

//Wait
HAL_Delay(15);

//Read values
uint8_t rawValues[6]; //T MSB, T LSB, T CRC, H MSB, H LSB, H CRC
HAL_I2C_Master_Receive(&hi2c1, SHTC1_I2C_ADDR, rawValues, 6, 100);
uint16_t rawTemp = (uint16_t)((((uint16_t)rawValues[0])<<8) | (uint16_t)rawValues[1]);
uint16_t rawHum = (uint16_t)((((uint16_t)rawValues[3])<<8) | (uint16_t)rawValues[4]);

float hum = (float)((float)100 * (float)rawHum / (float)65536);
float temp =(float)((float)-45 + (float)175 * (float)rawTemp / (float)65536);

使用HAL_I2C_Mem_Write()和HAL_I2C_Mem_Read()HAL API通过I2C接口从传感器写入和读取数据。 您必须从传感器数据表中找到要写入/读取的数据以及要从哪个存储位置写入/读取的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM