forked from arduino/ArduinoCore-mbed
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpmic_driver.cpp
34 lines (31 loc) · 829 Bytes
/
pmic_driver.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <mbed.h>
#include <I2C.h>
#include "BQ25120A.h"
#include "Nicla_System.h"
uint8_t BQ25120A::getStatus()
{
uint8_t c = readByte(BQ25120A_ADDRESS, BQ25120A_STATUS); // Read PRODUCT_ID register for BQ25120A
return c;
}
void BQ25120A::writeByte(uint8_t address, uint8_t subAddress, uint8_t data)
{
nicla::i2c_mutex.lock();
Wire1.beginTransmission(address);
Wire1.write(subAddress);
Wire1.write(data);
Wire1.endTransmission();
nicla::i2c_mutex.unlock();
}
uint8_t BQ25120A::readByte(uint8_t address, uint8_t subAddress)
{
nicla::i2c_mutex.lock();
char response = 0xFF;
Wire1.beginTransmission(address);
Wire1.write(subAddress);
Wire1.endTransmission(false);
Wire1.requestFrom(address, 1);
while(!Wire1.available()) {}
uint8_t ret = Wire1.read();
nicla::i2c_mutex.unlock();
return ret;
}