MAX32625PICO LP0 mode
Dependencies: SX1276GenericLib USBDevice
Fork of PICO_LP0 by
AO32Lib/AO32_lib.h@3:85fc843a9d7d, 2020-10-12 (annotated)
- Committer:
- walterluu
- Date:
- Mon Oct 12 21:55:22 2020 +0000
- Revision:
- 3:85fc843a9d7d
- Child:
- 5:9e751733a6f3
MAX20361 Demo Firmware version 1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
walterluu | 3:85fc843a9d7d | 1 | #include "mbed.h" |
walterluu | 3:85fc843a9d7d | 2 | |
walterluu | 3:85fc843a9d7d | 3 | //AO32 Registers |
walterluu | 3:85fc843a9d7d | 4 | #define AO32_DEVICE_ID 0x00 // AO32 Chip ID |
walterluu | 3:85fc843a9d7d | 5 | #define AO32_STATUS 0x01 // AO32 Status Register |
walterluu | 3:85fc843a9d7d | 6 | #define AO32_INT 0x02 // AO32 Interrupt Register |
walterluu | 3:85fc843a9d7d | 7 | #define AO32_INT_MSK 0x03 // AO32 Interrupt Mask Register |
walterluu | 3:85fc843a9d7d | 8 | #define AO32_SYS_CFG 0x04 // AO32 SYS configuration |
walterluu | 3:85fc843a9d7d | 9 | #define AO32_WK_CFG 0x05 // AO32 Wake configuration |
walterluu | 3:85fc843a9d7d | 10 | #define AO32_MPPT_CFG 0x06 // AO32 Maxim Power Point Tracking configuration |
walterluu | 3:85fc843a9d7d | 11 | #define AO32_MEAS_CFG 0x07 // AO32 Measurement configuration |
walterluu | 3:85fc843a9d7d | 12 | #define AO32_DEV_CTRL 0x08 // AO32 Device Control |
walterluu | 3:85fc843a9d7d | 13 | #define AO32_VOC 0x09 // AO32 VOC Measurement |
walterluu | 3:85fc843a9d7d | 14 | #define AO32_HARV_H 0x0A // AO32 Harvesting count High byte |
walterluu | 3:85fc843a9d7d | 15 | #define AO32_HARV_L 0x0B // AO32 Harvesting count Low byte |
walterluu | 3:85fc843a9d7d | 16 | #define AO32_SLP 0x0C // AO32 Sleep threshold |
walterluu | 3:85fc843a9d7d | 17 | |
walterluu | 3:85fc843a9d7d | 18 | |
walterluu | 3:85fc843a9d7d | 19 | #define DEVICE_ACK 0 |
walterluu | 3:85fc843a9d7d | 20 | #define DEVICE_NACK 1 |
walterluu | 3:85fc843a9d7d | 21 | #define DEVICE_BAD_RESP 2 |
walterluu | 3:85fc843a9d7d | 22 | |
walterluu | 3:85fc843a9d7d | 23 | #define MAX_DEVICES 64 // Maximum number of rom devices allowed |
walterluu | 3:85fc843a9d7d | 24 | #define ID_LENGTH 6 // Rom ID length in bytes |
walterluu | 3:85fc843a9d7d | 25 | |
walterluu | 3:85fc843a9d7d | 26 | struct AO32_struct { |
walterluu | 3:85fc843a9d7d | 27 | char rom_id[ID_LENGTH]; // device ROM ID |
walterluu | 3:85fc843a9d7d | 28 | char I2C_address; // I2C addess, based on GPIO0 and GPIO1 at power up |
walterluu | 3:85fc843a9d7d | 29 | // Why char? |
walterluu | 3:85fc843a9d7d | 30 | }; |
walterluu | 3:85fc843a9d7d | 31 | |
walterluu | 3:85fc843a9d7d | 32 | struct VOCMeas { |
walterluu | 3:85fc843a9d7d | 33 | double VOCvalue; // Open-Circuit Voltage Measurement in Volt |
walterluu | 3:85fc843a9d7d | 34 | int status; // Status of OCV read. 0 for success, 1 for error |
walterluu | 3:85fc843a9d7d | 35 | }; |
walterluu | 3:85fc843a9d7d | 36 | |
walterluu | 3:85fc843a9d7d | 37 | struct HarvCnt { |
walterluu | 3:85fc843a9d7d | 38 | double harvCount; // Harvester Count "LX Pulses" in decimal |
walterluu | 3:85fc843a9d7d | 39 | int status; // Status of harvesting count read. 0 for success, 1 for error |
walterluu | 3:85fc843a9d7d | 40 | }; |
walterluu | 3:85fc843a9d7d | 41 | |
walterluu | 3:85fc843a9d7d | 42 | // ***************************************************************************** |
walterluu | 3:85fc843a9d7d | 43 | // AO32_write_register(char, char, char) writes single byte to AO32 |
walterluu | 3:85fc843a9d7d | 44 | // char I2C address |
walterluu | 3:85fc843a9d7d | 45 | // char AO32 register address |
walterluu | 3:85fc843a9d7d | 46 | // char data byte to be writen |
walterluu | 3:85fc843a9d7d | 47 | // returns 0 on success ACK, 1 on NACK |
walterluu | 3:85fc843a9d7d | 48 | // ***************************************************************************** |
walterluu | 3:85fc843a9d7d | 49 | int AO32_write_register(I2C *i2c, char I2C_add, char reg_add, char byte); |
walterluu | 3:85fc843a9d7d | 50 | |
walterluu | 3:85fc843a9d7d | 51 | /// **************************************************************************** |
walterluu | 3:85fc843a9d7d | 52 | // AO32_write_register(char, char, char *, int) writes multiple bytes to AO32 |
walterluu | 3:85fc843a9d7d | 53 | // char I2C address |
walterluu | 3:85fc843a9d7d | 54 | // char AO32 register address |
walterluu | 3:85fc843a9d7d | 55 | // char * data vector of bytes to be written |
walterluu | 3:85fc843a9d7d | 56 | // int number of bytes to write |
walterluu | 3:85fc843a9d7d | 57 | // returns 0 on success ACK, 1 on NACK |
walterluu | 3:85fc843a9d7d | 58 | // ***************************************************************************** |
walterluu | 3:85fc843a9d7d | 59 | int AO32_write_register(I2C *i2c, char I2C_add, char reg_add, char *bytes, int n); |
walterluu | 3:85fc843a9d7d | 60 | |
walterluu | 3:85fc843a9d7d | 61 | // ***************************************************************************** |
walterluu | 3:85fc843a9d7d | 62 | // AO32_read_register(char, char, char *) reads single byte from AO32 |
walterluu | 3:85fc843a9d7d | 63 | // char I2C address |
walterluu | 3:85fc843a9d7d | 64 | // char AO32 register address |
walterluu | 3:85fc843a9d7d | 65 | // char * data vector for read bytes to be stored in |
walterluu | 3:85fc843a9d7d | 66 | // returns 0 on success, 1 on fail |
walterluu | 3:85fc843a9d7d | 67 | // ***************************************************************************** |
walterluu | 3:85fc843a9d7d | 68 | int AO32_read_register(I2C *i2c, char I2C_add, char reg_add, char *bytes); |
walterluu | 3:85fc843a9d7d | 69 | |
walterluu | 3:85fc843a9d7d | 70 | // ***************************************************************************** |
walterluu | 3:85fc843a9d7d | 71 | // AO32_read_register(char, char, char *, int) reads byte(s) from AO32 |
walterluu | 3:85fc843a9d7d | 72 | // char I2C address |
walterluu | 3:85fc843a9d7d | 73 | // char OT07 register address |
walterluu | 3:85fc843a9d7d | 74 | // char * data vector for read bytes to be stored in |
walterluu | 3:85fc843a9d7d | 75 | // int number of bytes to read |
walterluu | 3:85fc843a9d7d | 76 | // returns 0 on success, 1 on fail |
walterluu | 3:85fc843a9d7d | 77 | // ***************************************************************************** |
walterluu | 3:85fc843a9d7d | 78 | int AO32_read_register(I2C *i2c, char I2C_add, char reg_add, char *bytes, int n); |
walterluu | 3:85fc843a9d7d | 79 | |
walterluu | 3:85fc843a9d7d | 80 | //****************************************************************************** |
walterluu | 3:85fc843a9d7d | 81 | // get_luxvalue(char) read lux value from AO32 device register |
walterluu | 3:85fc843a9d7d | 82 | // char I2C address |
walterluu | 3:85fc843a9d7d | 83 | // returns LuxResponse luxValue = light intensity in lux |
walterluu | 3:85fc843a9d7d | 84 | // status = register read result |
walterluu | 3:85fc843a9d7d | 85 | //****************************************************************************** |
walterluu | 3:85fc843a9d7d | 86 | //LuxResponse get_luxvalue(I2C *i2c, char I2C_add); |
walterluu | 3:85fc843a9d7d | 87 | |
walterluu | 3:85fc843a9d7d | 88 | //****************************************************************************** |
walterluu | 3:85fc843a9d7d | 89 | // get_OCV(char) read Open Circuit Voltage from AO32 device register |
walterluu | 3:85fc843a9d7d | 90 | // char I2C address |
walterluu | 3:85fc843a9d7d | 91 | // returns VOCMeas VOCvalue = Open-Circuit Voltage Measurement in Volt |
walterluu | 3:85fc843a9d7d | 92 | // status = Status of OCV read. 0 for success, 1 for error |
walterluu | 3:85fc843a9d7d | 93 | //****************************************************************************** |
walterluu | 3:85fc843a9d7d | 94 | VOCMeas get_OCV(I2C *i2c, char I2C_add); |
walterluu | 3:85fc843a9d7d | 95 | |
walterluu | 3:85fc843a9d7d | 96 | //****************************************************************************** |
walterluu | 3:85fc843a9d7d | 97 | // get_Harvest(char) read harvesting counts from AO32 device register |
walterluu | 3:85fc843a9d7d | 98 | // char I2C address |
walterluu | 3:85fc843a9d7d | 99 | // returns HarvCnt harvCount = Harvester Count "LX Pulses" in decimal |
walterluu | 3:85fc843a9d7d | 100 | // status = Status of harvesting count read. 0 for success, 1 for error |
walterluu | 3:85fc843a9d7d | 101 | //****************************************************************************** |
walterluu | 3:85fc843a9d7d | 102 | HarvCnt get_Harvest(I2C *i2c, char I2C_add); |