SHT20 IIC 寄存器概述


** 注:部分內容來自SHT20芯片手冊翻譯 **
1、寄存器列表
名稱 指令(bin) 寄存器內容(hex)
主機模式(Trigger T measurement hold master) 1110’0011 0xe3
主機模式(Trigger RH measurement hold master) 1110’0101 0xe4
從機模式(Trigger T measurement no hold master) 1111’0011 0xf3
從機模式(Trigger RH measurement no hold master) 1111’0101 0xf4
寫入用戶寄存器(Write user register) 1110’0110 0xe6
讀取用戶寄存器(Read user register) 1110’0111 0xe7
軟復位(Soft reset) 1111’1110 0xfe
2、User register

User 寄存器內容如下圖所示,需要注意的是 保留位(Reserver)不允許被改變。但是默認值可能會不一樣, 所以,我們在配置User寄存器的時候,必須要先讀取一遍User 寄存器.

如下圖所示,是一個讀寫 User Register的example。

上圖中白色塊由MCU發出,灰色塊由 Sensor 發出。, 該流程設置的分辨率為RH8bit,T12bit。
參考代碼如下圖所示:

/*
* function : set resolution
* paragram : res [RH12_T14],[RH8_T12],[RH10_T13],[RH11_T11]
* return   : null
* by zhangpeng
*/
void SHT20_SetResolution(uint8_t res)
{
    IIC_Start();//S
    IIC_SendByte(IIC_WRITE_ADDR);//I2C Addr + Write
    IIC_SendByte(REG_READ_USER);//Read Register
    IIC_Start();//S
    IIC_SendByte(IIC_READ_ADDR);//I2C Addr + Read
    Register = IIC_RecvByte();//Read Register content
    IIC_NOACK();//NoAck
    IIC_Start();//S
    IIC_SendByte(IIC_WRITE_ADDR);//I2C Addr + Write
    IIC_SendByte(REG_WRITE_USER);//Write Register
    //修改bit7
    if ((res == RH12_T14)||(RH8_T12 ==res))
    {
        Register = Register & 0x7F;
    }
    else
    {
        Register = Register | 0x80;
    }
    //修改bit0
    if ((res == RH12_T14)||(RH10_T13 ==res))
    {
        Register = Register & 0xFE;
    }
    else
    {
        Register = Register | 0x01;
    }
    IIC_SendByte(Register);//Register content
    IIC_Stop();//P
}
3、Soft Reset

Soft Reset 被用作軟復位Sensor,當讀取的數據出現錯誤的時候,可以通過發送 SoftReset 進行軟重啟。如下圖所示:

參考代碼:

/*
* function : soft reset SHT20
* paragram : null
* return   : null
*/  
void SHT20_SoftReset()
{
    IIC_Start();//S
    IIC_SendByte(IIC_WRITE_ADDR);//I2C Addr + Write
    IIC_SendByte(REG_RESET); //Soft Reset
    // todo :delay 10us
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM