本文是基于LPC55S69的官方開發(fā)板去驅(qū)動SHT30采集溫濕度,通過串口打印輸出。
使用了FLEXCOMM7作為I2C接口,F(xiàn)LEXCOMM0作為Uart接口,通過MCUXpresso配置。
SHT最核心的一個命令就是數(shù)值查詢。指令與時序如下圖:
返回的數(shù)值是6個字節(jié)的數(shù)組
1.[溫度高八位]
2.[溫度第八位]
3.[溫度crc校驗]
4.[濕度高八位]
5.[濕度第八位]
6.[濕度crc校驗]
溫濕度轉(zhuǎn)換,手冊也給出了很詳細的說明
I2C通信部分
I2C_MasterStart(FLEXCOMM7_PERIPHERAL, 0x44, kI2C_Write);
I2C_MasterWriteBlocking(FLEXCOMM7_PERIPHERAL, sht30_rxcmd, 2, kI2C_TransferNoStopFlag);
I2C_MasterRepeatedStart(FLEXCOMM7_PERIPHERAL, 0x44, kI2C_Read);
I2C_MasterReadBlocking(FLEXCOMM7_PERIPHERAL, sht30_buff, 6, kI2C_TransferDefaultFlag);
I2C_MasterStop(FLEXCOMM7_PERIPHERAL);
可以看到LPC55S69的I2C庫封裝比較簡單,需要用戶手動產(chǎn)生開始信號,停止信號,這里就仿著SHT30手冊寫。
溫度濕度轉(zhuǎn)換部分
uint16_t tem = ((sht30_buff[0]<<8) | sht30_buff[1]);//溫度拼接
float Temperature= (175.0*(float)tem/65535.0-45.0) ;// T = -45 + 175 * tem / (2^16-1)/*轉(zhuǎn)換實際溫度*/
uint16_t hum = ((sht30_buff[3]<<8) | sht30_buff[4]);//濕度拼接
float Humidity= (100.0*(float)hum/65535.0);
連線
運行效果:
最后附上源代碼工程文檔。