Revision 067c98f7
include/P9221R/v1/alld_P9221R_v1.h | ||
---|---|---|
35 | 35 |
/* CONSTANTS */ |
36 | 36 |
/******************************************************************************/ |
37 | 37 |
|
38 |
/** |
|
39 |
* @brief Maximum I2C frequency. |
|
40 |
*/ |
|
41 |
#define P9221R_LLD_I2C_MAXFREQUENCY 400000 |
|
42 |
|
|
38 | 43 |
/******************************************************************************/ |
39 | 44 |
/* SETTINGS */ |
40 | 45 |
/******************************************************************************/ |
... | ... | |
58 | 63 |
* @brief Registers. |
59 | 64 |
*/ |
60 | 65 |
typedef enum { |
66 |
P9221R_LLD_REGISTER_PARTNUMBER = 0x00, |
|
67 |
P9221R_LLD_REGISTER_INTERRUPTENABLE = 0x38, |
|
61 | 68 |
// Writeable Registers |
62 | 69 |
P9221R_LLD_REGISTER_BATTERY_STATUS_SENT = 0x3A, |
63 | 70 |
P9221R_LLD_REGISTER_END_POWER_TRANSFER = 0x3B, |
source/P9221R/v1/alld_P9221R_v1.c | ||
---|---|---|
70 | 70 |
apalDbgAssert(p9221r->i2cd != NULL); |
71 | 71 |
apalDbgAssert(data != NULL); |
72 | 72 |
|
73 |
uint16_t address = ((uint16_t)addr << 8) | ((uint16_t)addr & 0x00FF); |
|
73 | 74 |
uint8_t buffer[num*2]; |
74 |
apalExitStatus_t status = apalI2CMasterTransmit(p9221r->i2cd, (P9221R_LLD_I2C_ADDR_FIXED | p9221r->addr), (uint8_t*)&addr, 1, buffer, 2*num, timeout); |
|
75 |
for (uint8_t i = 0; i < num*2; ++i) { |
|
76 |
buffer[i] = 1; |
|
77 |
} |
|
78 |
apalExitStatus_t status = apalI2CMasterTransmit(p9221r->i2cd, (P9221R_LLD_I2C_ADDR_FIXED | p9221r->addr), &address, 2, buffer, 2*num, timeout); |
|
75 | 79 |
for (uint8_t dataIdx = 0; dataIdx < num; dataIdx++) { |
76 | 80 |
data[dataIdx] = (buffer[2*dataIdx] << 8) | buffer[2*dataIdx+1]; |
77 | 81 |
} |
Also available in: Unified diff