mbed API implementation for AT30TSE75X , EEPROM + Temperature sensor.

Committer:
akhilpanayam
Date:
Tue Mar 22 04:58:03 2016 +0000
Revision:
0:0e430cef393b
Initial Commit with implementations.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akhilpanayam 0:0e430cef393b 1 #ifndef AT30TSE75X_H
akhilpanayam 0:0e430cef393b 2 #define AT30TSE75X_H
akhilpanayam 0:0e430cef393b 3
akhilpanayam 0:0e430cef393b 4 #include "mbed.h"
akhilpanayam 0:0e430cef393b 5
akhilpanayam 0:0e430cef393b 6 #define AT30TSE_TEMPERATURE_TWI_ADDR (AT30TSE75X_DEVICE_TYPE_ID_TEMP | \
akhilpanayam 0:0e430cef393b 7 (BOARD_AT30TSE_DEVICE_ADDR & 0x07))
akhilpanayam 0:0e430cef393b 8
akhilpanayam 0:0e430cef393b 9 /* AT30TSE75x Device Type ID for Temperature Sensor: 0b1001xxx */
akhilpanayam 0:0e430cef393b 10 #define AT30TSE75X_DEVICE_TYPE_ID_TEMP 0x48
akhilpanayam 0:0e430cef393b 11 /* AT30TSE75x Device Type ID for EEPROM: 0b1010xxx */
akhilpanayam 0:0e430cef393b 12 #define AT30TSE75X_DEVICE_TYPE_ID_EEPROM 0x50
akhilpanayam 0:0e430cef393b 13
akhilpanayam 0:0e430cef393b 14 #define BOARD_AT30TSE_DEVICE_ADDR 0x07 /* 0b111 */ /*CAn be varied according to the condition of A0, A1, A2*/
akhilpanayam 0:0e430cef393b 15
akhilpanayam 0:0e430cef393b 16 #define AT30TSE_CONFIG_RES_9_bit 0
akhilpanayam 0:0e430cef393b 17 #define AT30TSE_CONFIG_RES_10_bit 1
akhilpanayam 0:0e430cef393b 18 #define AT30TSE_CONFIG_RES_11_bit 2
akhilpanayam 0:0e430cef393b 19 #define AT30TSE_CONFIG_RES_12_bit 3
akhilpanayam 0:0e430cef393b 20
akhilpanayam 0:0e430cef393b 21 #define AT30TSE_TEMPERATURE_REG_SIZE 2
akhilpanayam 0:0e430cef393b 22
akhilpanayam 0:0e430cef393b 23 #if (BOARD_USING_AT30TSE != AT30TSE752) && \
akhilpanayam 0:0e430cef393b 24 (BOARD_USING_AT30TSE != AT30TSE754) && \
akhilpanayam 0:0e430cef393b 25 (BOARD_USING_AT30TSE != AT30TSE758) && \
akhilpanayam 0:0e430cef393b 26 (BOARD_USING_AT30TSE != AT30TS75)
akhilpanayam 0:0e430cef393b 27 /* Using AT30TSE758 in Default */
akhilpanayam 0:0e430cef393b 28 #define BOARD_USING_AT30TSE AT30TSE758
akhilpanayam 0:0e430cef393b 29 #endif
akhilpanayam 0:0e430cef393b 30
akhilpanayam 0:0e430cef393b 31 /* Setting the AT30TSE75x Temperature Sensor Address */
akhilpanayam 0:0e430cef393b 32 #define AT30TSE_TEMPERATURE_TWI_ADDR (AT30TSE75X_DEVICE_TYPE_ID_TEMP | \
akhilpanayam 0:0e430cef393b 33 (BOARD_AT30TSE_DEVICE_ADDR & 0x07))
akhilpanayam 0:0e430cef393b 34
akhilpanayam 0:0e430cef393b 35 #define AT30TSE752 1
akhilpanayam 0:0e430cef393b 36 #define AT30TSE754 2
akhilpanayam 0:0e430cef393b 37 #define AT30TSE758 3
akhilpanayam 0:0e430cef393b 38 #define AT30TS75 4
akhilpanayam 0:0e430cef393b 39
akhilpanayam 0:0e430cef393b 40 #if BOARD_USING_AT30TSE == AT30TSE752
akhilpanayam 0:0e430cef393b 41 #define AT30TSE_EEPROM_TWI_ADDR (AT30TSE75X_DEVICE_TYPE_ID_EEPROM | \
akhilpanayam 0:0e430cef393b 42 (BOARD_AT30TSE_DEVICE_ADDR & 0x07))
akhilpanayam 0:0e430cef393b 43 #elif BOARD_USING_AT30TSE == AT30TSE754
akhilpanayam 0:0e430cef393b 44 #define AT30TSE_EEPROM_TWI_ADDR (AT30TSE75X_DEVICE_TYPE_ID_EEPROM | \
akhilpanayam 0:0e430cef393b 45 (BOARD_AT30TSE_DEVICE_ADDR & 0x06))
akhilpanayam 0:0e430cef393b 46 #elif BOARD_USING_AT30TSE == AT30TSE758
akhilpanayam 0:0e430cef393b 47 #define AT30TSE_EEPROM_TWI_ADDR (AT30TSE75X_DEVICE_TYPE_ID_EEPROM | \
akhilpanayam 0:0e430cef393b 48 (BOARD_AT30TSE_DEVICE_ADDR & 0x04))
akhilpanayam 0:0e430cef393b 49 #elif BOARD_USING_AT30TSE != AT30TS75
akhilpanayam 0:0e430cef393b 50 /* Using AT30TSE758 in Default */
akhilpanayam 0:0e430cef393b 51 #define AT30TSE_EEPROM_TWI_ADDR (AT30TSE75X_DEVICE_TYPE_ID_EEPROM | \
akhilpanayam 0:0e430cef393b 52 (BOARD_AT30TSE_DEVICE_ADDR & 0x04))
akhilpanayam 0:0e430cef393b 53 #endif
akhilpanayam 0:0e430cef393b 54
akhilpanayam 0:0e430cef393b 55 class AT30TSE75X
akhilpanayam 0:0e430cef393b 56 {
akhilpanayam 0:0e430cef393b 57 public:
akhilpanayam 0:0e430cef393b 58 AT30TSE75X(PinName sda, PinName scl);
akhilpanayam 0:0e430cef393b 59 ~AT30TSE75X();
akhilpanayam 0:0e430cef393b 60
akhilpanayam 0:0e430cef393b 61 float read_temp();
akhilpanayam 0:0e430cef393b 62 uint8_t read_eeprom(uint8_t *data, uint8_t length, uint8_t word_addr, uint8_t page);
akhilpanayam 0:0e430cef393b 63 uint8_t write_eeprom(uint8_t *data, uint8_t length, uint8_t word_addr, uint8_t page);
akhilpanayam 0:0e430cef393b 64
akhilpanayam 0:0e430cef393b 65 I2C at30tse75x_i2c;
akhilpanayam 0:0e430cef393b 66 private:
akhilpanayam 0:0e430cef393b 67 uint8_t resolution;
akhilpanayam 0:0e430cef393b 68
akhilpanayam 0:0e430cef393b 69 };
akhilpanayam 0:0e430cef393b 70
akhilpanayam 0:0e430cef393b 71 #endif