MAX20361 Demo Firmware

Dependencies:   SX1276GenericLib USBDevice

Fork of PICO_LoRa_Module_developing by Walter Luu

Committer:
walterluu
Date:
Tue Oct 13 00:45:46 2020 +0000
Revision:
5:9e751733a6f3
Parent:
3:85fc843a9d7d
Firmware Master and Slave in functional stage

Who changed what in which revision?

UserRevisionLine numberNew contents of line
walterluu 3:85fc843a9d7d 1 #include "mbed.h"
walterluu 3:85fc843a9d7d 2
walterluu 3:85fc843a9d7d 3 //MAX44009 Registers
walterluu 3:85fc843a9d7d 4 #define MAX44009_INT_STATUS 0x00 // MAX44009 interrupt status regiter
walterluu 3:85fc843a9d7d 5 #define MAX44009_INT_EN 0x01 // MAX44009 Interrupt Enable
walterluu 3:85fc843a9d7d 6 #define MAX44009_CONFIG 0x02 // MAX44009 Configuration Register
walterluu 3:85fc843a9d7d 7 #define MAX44009_LUX_HI 0x03 // MAX44009 Lux High Byte
walterluu 3:85fc843a9d7d 8 #define MAX44009_LUX_LO 0x04 // MAX44009 Lux Low Byte
walterluu 3:85fc843a9d7d 9 #define MAX44009_THR_HI 0x05 // MAX44009 Upper Threshold High Byte
walterluu 3:85fc843a9d7d 10 #define MAX44009_THR_LO 0x06 // MAX44009 Lower Threshold High Byte
walterluu 3:85fc843a9d7d 11 #define MAX44009_THR_TM 0x07 // MAX44009 Threshold Timer
walterluu 3:85fc843a9d7d 12
walterluu 3:85fc843a9d7d 13 #define DEVICE_ACK 0
walterluu 3:85fc843a9d7d 14 #define DEVICE_NACK 1
walterluu 3:85fc843a9d7d 15 #define DEVICE_BAD_RESP 2
walterluu 3:85fc843a9d7d 16
walterluu 3:85fc843a9d7d 17 #define MAX_DEVICES 64 // Maximum number of rom devices allowed
walterluu 3:85fc843a9d7d 18 #define ID_LENGTH 6 // Rom ID length in bytes
walterluu 3:85fc843a9d7d 19
walterluu 3:85fc843a9d7d 20 struct MAX44009_struct {
walterluu 3:85fc843a9d7d 21 char rom_id[ID_LENGTH]; // device ROM ID
walterluu 3:85fc843a9d7d 22 char I2C_address; // I2C addess, based on GPIO0 and GPIO1 at power up
walterluu 3:85fc843a9d7d 23 // Why char?
walterluu 3:85fc843a9d7d 24 };
walterluu 3:85fc843a9d7d 25
walterluu 3:85fc843a9d7d 26 struct LuxResponse {
walterluu 3:85fc843a9d7d 27 double luxValue; // Light level in lux
walterluu 3:85fc843a9d7d 28 int status; // Status of Lux read. 0 for success, 1 for error
walterluu 3:85fc843a9d7d 29 };
walterluu 3:85fc843a9d7d 30
walterluu 3:85fc843a9d7d 31 // *****************************************************************************
walterluu 3:85fc843a9d7d 32 // MAX44009_write_register(char, char, char) writes single byte to MAX44009
walterluu 3:85fc843a9d7d 33 // char I2C address
walterluu 3:85fc843a9d7d 34 // char MAX44009 register address
walterluu 3:85fc843a9d7d 35 // char data byte to be writen
walterluu 3:85fc843a9d7d 36 // returns 0 on success ACK, 1 on NACK
walterluu 3:85fc843a9d7d 37 // *****************************************************************************
walterluu 3:85fc843a9d7d 38 int MAX44009_write_register(I2C *i2c, char I2C_add, char reg_add, char byte);
walterluu 3:85fc843a9d7d 39
walterluu 3:85fc843a9d7d 40 /// ****************************************************************************
walterluu 3:85fc843a9d7d 41 // MAX44009_write_register(char, char, char *, int) writes multiple bytes to MAX44009
walterluu 3:85fc843a9d7d 42 // char I2C address
walterluu 3:85fc843a9d7d 43 // char MAX44009 register address
walterluu 3:85fc843a9d7d 44 // char * data vector of bytes to be written
walterluu 3:85fc843a9d7d 45 // int number of bytes to write
walterluu 3:85fc843a9d7d 46 // returns 0 on success ACK, 1 on NACK
walterluu 3:85fc843a9d7d 47 // *****************************************************************************
walterluu 3:85fc843a9d7d 48 int MAX44009_write_register(I2C *i2c, char I2C_add, char reg_add, char *bytes, int n);
walterluu 3:85fc843a9d7d 49
walterluu 3:85fc843a9d7d 50 // *****************************************************************************
walterluu 3:85fc843a9d7d 51 // MAX44009_read_register(char, char, char *, int) reads single byte from MAX44009
walterluu 3:85fc843a9d7d 52 // char I2C address
walterluu 3:85fc843a9d7d 53 // char MAX44009 register address
walterluu 3:85fc843a9d7d 54 // char * data vector for read bytes to be stored in
walterluu 3:85fc843a9d7d 55 // returns 0 on success, 1 on fail
walterluu 3:85fc843a9d7d 56 // *****************************************************************************
walterluu 3:85fc843a9d7d 57 int MAX44009_read_register(I2C *i2c, char I2C_add, char reg_add, char *bytes);
walterluu 3:85fc843a9d7d 58
walterluu 3:85fc843a9d7d 59 // *****************************************************************************
walterluu 3:85fc843a9d7d 60 // MAX44009_read_lux_register(char, char, char *, int) reads lux value bytes from MAX44009
walterluu 3:85fc843a9d7d 61 // char I2C address
walterluu 3:85fc843a9d7d 62 // char MAX44009 register address
walterluu 3:85fc843a9d7d 63 // char * data vector for read bytes to be stored in
walterluu 3:85fc843a9d7d 64 // returns 0 on success, 1 on fail
walterluu 3:85fc843a9d7d 65 // *****************************************************************************
walterluu 3:85fc843a9d7d 66 int MAX44009_read_lux_register(I2C *i2c, char I2C_add, char reg_add, char *bytes);
walterluu 3:85fc843a9d7d 67
walterluu 3:85fc843a9d7d 68 // *****************************************************************************
walterluu 3:85fc843a9d7d 69 // convert_temperature(char) sends convert command to MAX44009 device
walterluu 3:85fc843a9d7d 70 // char I2C address
walterluu 3:85fc843a9d7d 71 // *****************************************************************************
walterluu 3:85fc843a9d7d 72 //void convert_temperature(I2C *i2c, char I2C_add);
walterluu 3:85fc843a9d7d 73
walterluu 3:85fc843a9d7d 74 //******************************************************************************
walterluu 3:85fc843a9d7d 75 // get_luxvalue(char) read lux value from MAX44009 device register
walterluu 3:85fc843a9d7d 76 // char I2C address
walterluu 3:85fc843a9d7d 77 // returns LuxResponse luxValue = light intensity in lux
walterluu 3:85fc843a9d7d 78 // status = register read result
walterluu 3:85fc843a9d7d 79 //******************************************************************************
walterluu 5:9e751733a6f3 80 LuxResponse get_luxvalue(I2C *i2c, char I2C_add);
walterluu 5:9e751733a6f3 81
walterluu 5:9e751733a6f3 82 double calc_lux(char *data);