Tested Firmware Version for SENSIRION SHT3X-DIS
Sensor probing requests.
0x44 Address "SHT3X-DFLT"
0x45 Address "SHT3X-ALT"
Power management for the LC-Display.
Display will be scrolled (11 digits).
HRD can be connected to external devices like personal computers to transfer and store the extracted technical data.
Similar project: Handheld Readout Device(HRD) for Battery Management Systems (8-bit commands)
https://github.com/peterloes/HRD
EXTENSION:
Next generation of Data Logger for varied range support of Sensors.
https://github.com/peterloes/Data_Logger
Code Snippets
Make quick changes to the Source Code.
https://github.com/peterloes/HRD_SENSOR/blob/main/Software/main.c
/*! List of items which can be displayed
*
* This array contains a list of items that can be displayed on the LCD.
* Element 0 is a special case, it shows the name, version, and date of
* the firmware image. Usually up/down push buttons are used to select
* the item to be displayed.
*
* The order of these items may be rearranged by the user. Single or
* groups of entries can be de-activated by commenting them out.
*/
static const ITEM l_Item[] =
{ // [1234567890123456] Cmd Frmt
{ ">>> SHT3X-D <<<", SBS_NONE, FRMT_FW_VERSION },
{ "Sensor at SMBus", SBS_NONE, FRMT_SENS_CTRL },
{ "Supply Battery", SBS_NONE, FRMT_CR2032_BAT },
{ "Soft Reset", SBS_SOFT_RESET, FRMT_HEX },
{ "Serial Number", SBS_READ_SERIAL_NUMBER, FRMT_HEX },
https://github.com/peterloes/HRD_SENSOR/blob/main/Software/drivers/SensorMon.c
/*!@brief Probe List of supported Sensor Controllers */
static const BC_INFO l_ProbeList[] =
{ // addr type name (maximum 10 characters!)
{ 0x88, BCT_SHT3X_DFLT, "SHT3X-DFLT" }, // 0x44 Address 7 MSBs 0x88
{ 0x8A, BCT_SHT3X_ALT, "SHT3X-ALT", }, // 0x45 Address 7 MSBs 0x8A
{ 0x00, BCT_UNKNOWN, "" } // End of the list};
};
https://github.com/peterloes/HRD_SENSOR/blob/main/Software/drivers/SensorMon.h
/*!@brief SBS Commands
*
* These are the defines for the registers of the sensor controller. Each
* define contains the following bit fields:
* - Bit 26:24 specify the controller type where the define belongs to. Bit 24
* (0x1000000) represents the Sensor SHT3X-DFLT controller,
* while bit 25 (0x200000) specifies the Sensor SHT3X-ALT controller.
* If both bits are set (0x300000), the register exists in both controller
* types. Bit 20 is used if no controller is connected to
* identify the remaining valid entries (where SBS_NONE is set).
* - Bit 23:16 contains the number of bytes to read. For 8, 16, or 32 bit values
* SensorRegReadValue() is called, while for more than 4 bytes function
* SensorRegReadBlock() will be used (block command).
* - Bit 15:0 of the enum contains the address as used for the SBS commands sent
* via I2C.
* All command sequences beginn with I²C device address to access the sensor
* controller. The device address depends on the type of battery controller:
* - 0x44 in case of SHT3XL, and
* - 0x45 for the SHT3XH.
* The address can be probed via SensorCtrlProbe().
* @see
* Functions SensorRegReadWord() and SensorRegReadBlock() use these enums.
* A list of all registers can be found in document
* <a href="../SBS_Commands.pdf">SBS Commands</a>.
*
*/
typedef enum
{
SBS_NONE = (-1), //!< (-1) No Command / Address
SBS_REPEATABILITY_CLOCK_HIGH_ENABLED = 0x3022C06, //!< 0X2C06 enabled
SBS_REPEATABILITY_CLOCK_MEDIUM_ENABLED = 0x3002C0D, //!< 0X2C0D enabled
SBS_REPEATABILITY_CLOCK_LOW_ENABLED = 0x3002C10, //!< 0X2C10 enabled
SBS_REPEATABILITY_CLOCK_HIGH_DISABLED = 0x3022400, //!< 0X2400 disabled
SBS_REPEATABILITY_CLOCK_MEDIUM_DISABLED = 0x302240B, //!< 0X240B disabled
SBS_REPEATABILITY_CLOCK_LOW_DISABLED = 0x3022416, //!< 0X2416 disabled
SBS_REPEATABILITY_CLOCK_MPS_HIGH = 0x3022032, //!< 0X2032 0.5mps
SBS_REPEATABILITY_CLOCK_MPS_MEDIUM = 0x3022024, //!< 0X2024 0.5mps
SBS_REPEATABILITY_CLOCK_MPS_LOW = 0x302202F, //!< 0X202F 0.5mps
SBS_REPEATABILITY_CLOCK_MPS_1_HIGH = 0x3022130, //!< 0X2130 1 mps
SBS_REPEATABILITY_CLOCK_MPS_1_MEDIUM = 0x3022126, //!< 0X2126 1 mps
SBS_REPEATABILITY_CLOCK_MPS_1_LOW = 0x302212D, //!< 0X212D 1 mps
SBS_REPEATABILITY_CLOCK_MPS_2_HIGH = 0x3022236, //!< 0X2236 2 mps
SBS_REPEATABILITY_CLOCK_MPS_2_MEDIUM = 0x3022220, //!< 0X2220 2 mps
SBS_REPEATABILITY_CLOCK_MPS_2_LOW = 0x302212B, //!< 0X212B 2 mps
SBS_REPEATABILITY_CLOCK_MPS_4_HIGH = 0x3022334, //!< 0X2334 4 mps
SBS_REPEATABILITY_CLOCK_MPS_4_MEDIUM = 0x3022322, //!< 0X2322 4 mps
SBS_REPEATABILITY_CLOCK_MPS_4_LOW = 0x3022329, //!< 0X2329 4 mps
SBS_REPEATABILITY_CLOCK_MPS_10_HIGH = 0x3022737, //!< 0X2737 10 mps
SBS_REPEATABILITY_CLOCK_MPS_10_MEDIUM = 0x3022721, //!< 0X2721 10 mps
SBS_REPEATABILITY_CLOCK_MPS_10_LOW = 0x302272A, //!< 0X272A 10 mps
SBS_READ_SERIAL_NUMBER = 0x3023780, //!< 0x3780 Serial Number
SBS_FETCH_DATA = 0x306E000, //!< 0xE000 Fetch Data
SBS_ART_MEASUREMENT = 0x3022B32, //!< 0x2B32 ART Periodic Measurement
SBS_BREAK = 0x3023093, //!< 0x3093 Break
SBS_SOFT_RESET = 0x30230A2, //!< 0x30A2 Soft Reset
SBS_I2C_NRESET = 0x3020006, //!< 0x0006 I2C_nReset
SBS_HEATER_ENABLE = 0x302306D, //!< 0x306D Heater enable
SBS_HEATER_DISABLE = 0x3023066, //!< 0x306D Heater disabled
SBS_READ_STATUS = 0x302F32D, //!< 0xF32D Hex: @see SBS_16_BITS
SBS_CLEAR_STATUS = 0x3023041, //!< 0x3041 Clear status register
END_SBS_CMD, //!< End of SBS Command Definitions
} SBS_CMD;